mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-01 23:20:51 +00:00
Clean code
This commit is contained in:
@@ -3,35 +3,16 @@
|
||||
|
||||
{% block left_panel %}
|
||||
<ul>
|
||||
<li><a href="{% url profile_setting %}">修改 Seafile ID</a></li>
|
||||
<li><a href="{% url ccnet_profile_setting %}">上传 Seafile 配置文件</a></li>
|
||||
<li><a href="{% url avatar_change %}">修改头像</a></li>
|
||||
<li><a href="{% url avatar_delete %}">删除不用的头像</a></li>
|
||||
<li><a href="{{ SITE_ROOT }}accounts/password/change/">修改密码</a></li>
|
||||
<li><a href="{% url profile_setting %}">绑定 Ccnet 用户 ID</a></li>
|
||||
<li><a href="{{ SITE_ROOT }}accounts/password/change/">修改网站帐号密码</a></li>
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block right_panel %}
|
||||
|
||||
<h3>当前头像</h3>
|
||||
{% load avatar_tags %}
|
||||
{% avatar user 90 %}
|
||||
|
||||
|
||||
<h3>Ccnet 当前设置</h3>
|
||||
<h3>Ccnet/Seafile 当前设置</h3>
|
||||
<p>Ccnet ID: {{ profile.ccnet_user_id }}</p>
|
||||
|
||||
|
||||
{% if groups %}
|
||||
<h3>加入的组</h3>
|
||||
<div id="ccnet-groups">
|
||||
<ul>
|
||||
{% for group in groups %}
|
||||
<li>{{ group.name }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
@@ -1,15 +1,16 @@
|
||||
{% extends "profile/profile_base.html" %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
{% block right_panel %}
|
||||
<h2>绑定 Ccnet/Seafile 用户 ID</h2>
|
||||
|
||||
<form action="" method="post">
|
||||
{% if error_msg %}
|
||||
<p class="error">{{ error_msg }}</p>
|
||||
{% endif %}
|
||||
<label>Ccnet User ID:</label><br/>
|
||||
<label>用户 ID:</label><br/>
|
||||
<input id="id_ccnet_user_id" type="text" name="ccnet_user_id" value="{{ origin_id }}" maxlength="40" /><br/>
|
||||
<input type="submit" value="更新个人资料" />
|
||||
<input type="submit" value="提交" />
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
@@ -13,15 +13,13 @@ from seaserv import ccnet_rpc
|
||||
|
||||
@login_required
|
||||
def show_profile(request):
|
||||
groups = []
|
||||
try:
|
||||
profile = request.user.get_profile()
|
||||
except UserProfile.DoesNotExist:
|
||||
profile = UserProfile(user=request.user)
|
||||
profile.save()
|
||||
return render_to_response('profile/profile.html',
|
||||
{ 'groups': groups,
|
||||
'profile': profile, },
|
||||
{ 'profile': profile, },
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
|
@@ -21,8 +21,6 @@
|
||||
<div class="top-bar-in">
|
||||
{% if request.user.is_authenticated %}
|
||||
欢迎, {{ request.user }}.
|
||||
<a href="{{ SITE_ROOT }}home/my/">我的页面</a>
|
||||
<a href="{{ SITE_ROOT }}home/">主页</a>
|
||||
<a href="{{ SITE_ROOT }}profile/">设置</a>
|
||||
{% if request.user.is_staff %}
|
||||
<a href="{{ SITE_ROOT }}admin/">管理</a>
|
||||
|
@@ -1,66 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block left_panel %}
|
||||
{% include "help_nav.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block right_panel %}
|
||||
<div class="help-page">
|
||||
|
||||
<h2>基本概念</h2>
|
||||
<p>
|
||||
Seafile 是一个文件版本管理和同步共享工具。Ccnet 则是一个网络连接管理工具,用于支持 Seafile 的同步共享功能。首先让我们来了解下 Seafile 的几个基本概念。
|
||||
<ul>
|
||||
<li>文件盒 (repo)</li>
|
||||
<li>历史记录 (commit)</li>
|
||||
<li>存储仓库</li>
|
||||
<li>工作目录 (work directory)</li>
|
||||
</ul>
|
||||
|
||||
<img src="{{ MEDIA_URL }}img/seafile-concept.png" />
|
||||
|
||||
<p>
|
||||
Seafile 中基本的管理单位是文件盒 (repo)。 一个文件盒存储了它所包含的文件的当前状态以及这些文件的所有历史。 所有的文件盒都保存在本地的存储仓库里, 其中的文件会被分割成小块保存, 相同的小块只会被保存一次。存储仓库的目录名是 seafile-data,可以在第一次运行程序的时候指定这个目录放置的位置。 </p>
|
||||
|
||||
<p>
|
||||
每个文件盒有一个工作目录,工作目录显示了文件的当前状态。当你每次做了修改之后,文件的最新状态就会自动被记录到文件盒中,同时会创建一个历史记录。 通过界面, 你可以查看文件盒的任意一个历史状态。
|
||||
</p>
|
||||
|
||||
|
||||
<h2>基本流程</h2>
|
||||
|
||||
流程 1, 创建文件盒
|
||||
<p style="background: #f0f0f0;">
|
||||
创建文件盒 --> 自动上传到服务器 --> 其他人可以通过文件盒 ID 来获取这个文件盒
|
||||
</p>
|
||||
|
||||
流程 2, 获取他人文件盒:
|
||||
<p style="background: #f0f0f0;">
|
||||
通过文件盒 ID 来获取这个文件盒 --> 指定解密密码(可选) --> 导出到一个工作目录
|
||||
</p>
|
||||
|
||||
<p>
|
||||
之后你对文件盒的修改/添加/删除操作都会自动同步到服务器上。
|
||||
</p>
|
||||
|
||||
<h3>文件盒创建</h3>
|
||||
<p>
|
||||
启动 Seafile 后通过右键菜单从任意一个目录创建文件盒,这个目录成为这个文件盒的工作目录。
|
||||
</p>
|
||||
|
||||
<p>
|
||||
创建的时候可以选择给文件盒加密,加密密码在本地保存,这个密码不会传到服务器上。
|
||||
</p>
|
||||
|
||||
<h3>文件盒获取</h3>
|
||||
<p>
|
||||
通过本地 web 界面首页左侧的“获取文件盒菜单”菜单,按提示操作即可。
|
||||
</p>
|
||||
|
||||
<h2>帐号管理</h2>
|
||||
|
||||
<img src="{{ MEDIA_URL }}img/account.png" />
|
||||
|
||||
Seafile 允许您在任意两台机器间同步数据,因此我们需要每台机器有一个唯一的计算机 ID 和唯一的帐号 ID,当您在一台机器上创建了一个帐号后,您需要导出帐号文件并通过 email 等方式发送到另一台计算机以便使用同一个帐号 ID。
|
||||
</div> <!-- help-page -->
|
||||
{% endblock %}
|
@@ -1,20 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block left_panel %}
|
||||
{% include "help_nav.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block right_panel %}
|
||||
<div class="help-page">
|
||||
|
||||
<h2>历史功能</h2>
|
||||
Seafile 提供的历史功能包括:
|
||||
<ul>
|
||||
<li>浏览历史状态</li>
|
||||
<li>导出一个历史文件</li>
|
||||
<li>将工作目录恢复到一个历史状态</li>
|
||||
</ul>
|
||||
这些操作均可以通过文件盒页面中的“历史”面板完成。
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
@@ -1,26 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block left_panel %}
|
||||
{% include "help_nav.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block right_panel %}
|
||||
<div class="help-page">
|
||||
|
||||
<h2>手工管理文件盒</h2>
|
||||
文件盒的自动管理包括两部分
|
||||
<ul>
|
||||
<li>自动提交工作目录的内容到文件盒: 文件盒的工作目录下的文件发生变化后,系统会在10秒后生成一个新的历史记录。</li>
|
||||
<li>自动和服务器同步。</li>
|
||||
</ul>
|
||||
<p>这两部分都可以设置成手工模式。</p>
|
||||
<ul>
|
||||
<li>手工提交和自动同步模式: 适合希望做了很多修改后一次性生成一个历史记录的场合。 提交修改后会自动做同步。</li>
|
||||
<li>手工提交和手工同步模式: 选择右键菜单的手工模式会进入这个状态。</li>
|
||||
<li>自动提交和手工同步模式: 如果你不希望和服务器进行同步的话。</li>
|
||||
</ul>
|
||||
|
||||
<img src="{{ MEDIA_URL }}img/seafile-concept.png" />
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
@@ -1,6 +0,0 @@
|
||||
<ul>
|
||||
<li><a href="{{ SITE_ROOT }}help/">基本功能</a></li>
|
||||
<li><a href="{{ SITE_ROOT }}help/history/">历史功能</a></li>
|
||||
<li><a href="{{ SITE_ROOT }}help/manual/">手工管理</a></li>
|
||||
<li><a href="{{ SITE_ROOT }}help/sync/">同步过程</a></li>
|
||||
</ul>
|
@@ -1,22 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block left_panel %}
|
||||
{% include "help_nav.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block right_panel %}
|
||||
<div class="help-page">
|
||||
|
||||
<h2>同步原理</h2>
|
||||
<p>
|
||||
下面我们来了解下 Seafile 同步的工作原理。 Seafile 的同步过程包含三个步骤
|
||||
<ul>
|
||||
<li>上传 (upload)</li>
|
||||
<li>下载 (fetch)</li>
|
||||
<li>合并 (merge)</li>
|
||||
</ul>
|
||||
默认情况下,上述的三个步骤都是自动的。当你对一个文件盒做了一次提交之后,对应的修改就会被传到服务器。当其他人对文件盒做了修改,这些修改会被下载到你的计算机上,并和你的文件的当前状态做一次合并。合并结束后,你的工作目录也会被加以更新。
|
||||
</p>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
@@ -10,7 +10,7 @@
|
||||
</li>
|
||||
{% endif %}
|
||||
<li>
|
||||
<a href="{{ SITE_ROOT }}help/">使用帮助</a>
|
||||
<a href="http://www.gonggeng.org/seasite/help/">使用帮助</a>
|
||||
</li>
|
||||
<!--
|
||||
<li>
|
||||
|
@@ -1,19 +0,0 @@
|
||||
{% extends "myhome_base.html" %}
|
||||
|
||||
{% block right_panel %}
|
||||
<table class="repo-list default">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>ID</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
|
||||
{% for repo in owned_repos %}
|
||||
<tr>
|
||||
<td><a href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/">{{ repo.props.name }}</a></td>
|
||||
<td>{{ repo.props.id }}</td>
|
||||
<td>{{ repo.props.desc }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endblock %}
|
14
urls.py
14
urls.py
@@ -2,8 +2,8 @@ from django.conf.urls.defaults import *
|
||||
from django.conf import settings
|
||||
from django.views.generic.simple import direct_to_template
|
||||
|
||||
from seahub.views import root, home, peers, groups, myhome, myrepos, \
|
||||
repo, group, group_add_repo, modify_token, remove_repo, seafadmin
|
||||
from seahub.views import root, peers, groups, myhome, \
|
||||
repo, group, modify_token, remove_repo, seafadmin
|
||||
|
||||
# Uncomment the next two lines to enable the admin:
|
||||
from django.contrib import admin
|
||||
@@ -23,19 +23,9 @@ urlpatterns = patterns('',
|
||||
(r'^accounts/', include('base.registration_urls')),
|
||||
|
||||
(r'^$', root),
|
||||
(r'^home/$', home),
|
||||
url(r'^home/my/$', myhome, name='myhome'),
|
||||
(r'^help/$', direct_to_template, { 'template': 'help.html' } ),
|
||||
(r'^help/sync/$', direct_to_template, { 'template': 'help_sync.html' } ),
|
||||
(r'^help/manual/$', direct_to_template, { 'template': 'help_manual.html' } ),
|
||||
(r'^help/history/$', direct_to_template, { 'template': 'help_history.html' } ),
|
||||
(r'^download/$', direct_to_template, { 'template': 'download.html' } ),
|
||||
(r'^peers/$', peers),
|
||||
(r'^groups/$', groups),
|
||||
url(r'^group/(?P<group_id>[^/]+)/$', group, name='view_group'),
|
||||
(r'^group/(?P<group_id>[^/]+)/addrepo/$', group_add_repo),
|
||||
(r'^repo/(?P<repo_id>[^/]+)/$', repo),
|
||||
(r'^repos/my/$', myrepos),
|
||||
(r'^repo/token/modify/(?P<repo_id>[^/]+)/$', modify_token),
|
||||
(r'^repo/remove/(?P<repo_id>[^/]+)/$', remove_repo),
|
||||
|
||||
|
23
views.py
23
views.py
@@ -21,18 +21,9 @@ def get_user_cid(user):
|
||||
except UserProfile.DoesNotExist:
|
||||
return None
|
||||
|
||||
|
||||
@login_required
|
||||
def root(request):
|
||||
if request.user.is_authenticated():
|
||||
return HttpResponseRedirect(reverse(myhome))
|
||||
else:
|
||||
return HttpResponseRedirect(reverse(home))
|
||||
|
||||
|
||||
def home(request):
|
||||
return render_to_response('home.html', {
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def peers(request):
|
||||
peer_type = request.REQUEST.get('type', 'all')
|
||||
@@ -181,18 +172,6 @@ def mypeers(request):
|
||||
cid = get_user_cid(request.user)
|
||||
|
||||
|
||||
|
||||
@login_required
|
||||
def myrepos(request):
|
||||
cid = request.user.user_id
|
||||
owned_repos = seafserv_rpc.list_owned_repos(cid)
|
||||
|
||||
return render_to_response(
|
||||
'myrepos.html', {
|
||||
'owned_repos': owned_repos,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
def seafadmin(request):
|
||||
if not request.user.is_staff:
|
||||
|
Reference in New Issue
Block a user