mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-04 16:31:13 +00:00
Enable register user on seahub
This commit is contained in:
@@ -4,5 +4,5 @@ from django.contrib.auth.models import User
|
||||
|
||||
class UserProfile(models.Model):
|
||||
user = models.ForeignKey(User, unique=True)
|
||||
status = models.CharField(max_length=40, blank=True)
|
||||
ccnet_user_id = models.CharField(max_length=40, blank=True)
|
||||
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
{% block left_panel %}
|
||||
<ul>
|
||||
<li><a href="{% url profile_setting %}">修改资料</a></li>
|
||||
<li><a href="{% url profile_setting %}">修改 Ccnet 设置</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>
|
||||
@@ -17,15 +17,10 @@
|
||||
{% load avatar_tags %}
|
||||
{% avatar user 90 %}
|
||||
|
||||
<h3>基本信息</h3>
|
||||
<p>当前状态:{{ user.get_profile.status }}</p>
|
||||
<p>我的兴趣:{{ user.get_profile.interests }}</p>
|
||||
|
||||
{% if peer %}
|
||||
<h3>Ccnet 当前设置</h3>
|
||||
<p>Ccnet ID: {{ peer.peer_id }}</p>
|
||||
<p>Ccnet Name: {{ peer.name }}</p>
|
||||
{% endif %}
|
||||
<p>Ccnet ID: {{ profile.ccnet_user_id }}</p>
|
||||
|
||||
|
||||
{% if groups %}
|
||||
<h3>加入的组</h3>
|
||||
|
@@ -4,16 +4,11 @@
|
||||
{% block content %}
|
||||
|
||||
<form action="" method="post">
|
||||
<labeld>当前状态:</label><br/>
|
||||
{{ profile_form.status }}
|
||||
{% if profile_form.status.errors %}
|
||||
{{ profile_form.status.errors }}
|
||||
{% endif %}<br />
|
||||
<label for="id_message">兴趣:</label><br />
|
||||
{{ profile_form.interests }}<br />
|
||||
{% if profile_form.interests.errors %}
|
||||
{{ profile_form.interests.errors }}
|
||||
{% endif %}<br />
|
||||
{% if error_msg %}
|
||||
<p class="error">{{ error_msg }}</p>
|
||||
{% endif %}
|
||||
<label>Ccnet User 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="更新个人资料" />
|
||||
</form>
|
||||
|
||||
|
@@ -9,28 +9,45 @@ import datetime
|
||||
|
||||
from forms import SetUserProfileForm
|
||||
from models import UserProfile
|
||||
|
||||
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, },
|
||||
{ 'groups': groups,
|
||||
'profile': profile, },
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@login_required
|
||||
def set_profile(request):
|
||||
error_msg = None
|
||||
origin_id = None
|
||||
if request.method == 'POST':
|
||||
form = SetUserProfileForm(request.POST)
|
||||
if form.is_valid():
|
||||
ccnet_user_id = request.POST.get('ccnet_user_id', None)
|
||||
origin_id = ccnet_user_id
|
||||
if not ccnet_user_id:
|
||||
error_msg = "You must specify ccnet user id"
|
||||
elif len(ccnet_user_id) != 40:
|
||||
error_msg = "Ccnet User ID must be of length 40"
|
||||
else:
|
||||
try:
|
||||
profile = request.user.get_profile()
|
||||
except UserProfile.DoesNotExist:
|
||||
profile = UserProfile(user=request.user)
|
||||
profile.save() # save the profile first, otherwise
|
||||
# status.save() would fail.
|
||||
|
||||
profile.save()
|
||||
try:
|
||||
ccnet_rpc.add_client(ccnet_user_id)
|
||||
except:
|
||||
error_msg = "Ccnet Deamon is not available, try again later"
|
||||
else:
|
||||
profile.ccnet_user_id = ccnet_user_id
|
||||
profile.save()
|
||||
return HttpResponseRedirect(reverse(show_profile))
|
||||
else:
|
||||
@@ -38,10 +55,10 @@ def set_profile(request):
|
||||
profile = request.user.get_profile()
|
||||
except UserProfile.DoesNotExist:
|
||||
profile = UserProfile(user=request.user)
|
||||
|
||||
profile_form = SetUserProfileForm(profile.__dict__)
|
||||
profile.save()
|
||||
origin_id = profile.ccnet_user_id
|
||||
|
||||
return render_to_response('profile/set_profile.html',
|
||||
{ 'profile_form': profile_form, },
|
||||
{ 'error_msg': error_msg,
|
||||
'origin_id': origin_id },
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
19
templates/myfiles.html
Normal file
19
templates/myfiles.html
Normal file
@@ -0,0 +1,19 @@
|
||||
{% extends "myhome_base.html" %}
|
||||
|
||||
{% block right_panel %}
|
||||
<table class="group-list default">
|
||||
<tr>
|
||||
<th>Repo ID</th>
|
||||
<th>Commit ID</th>
|
||||
<th>Timestamp</th>
|
||||
</tr>
|
||||
|
||||
{% for item in uploaded_items %}
|
||||
<tr>
|
||||
<td>{{ item.props.repo_id }}</td>
|
||||
<td>{{ item.props.commit_id }}</td>
|
||||
<td>{{ item.props.timestamp }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endblock %}
|
@@ -1 +1,5 @@
|
||||
{% extends "myhome_base.html" %}
|
||||
|
||||
{% block right_panel %}
|
||||
Ccnet ID: {{ ccnet_user_id }}
|
||||
{% endblock %}
|
||||
|
@@ -5,7 +5,7 @@
|
||||
<a href="{{ SITE_ROOT }}home/my/">Home</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ SITE_ROOT }}files/">Files</a>
|
||||
<a href="{{ SITE_ROOT }}files/my/">Files</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ SITE_ROOT }}peers/">Peers</a>
|
||||
|
@@ -1,9 +1,10 @@
|
||||
|
||||
import service
|
||||
from service import cclient, ccnet_rpc, seamsg_rpc
|
||||
from service import cclient, ccnet_rpc, seamsg_rpc, seafile_rpc
|
||||
from service import translate_peerid, translate_msgtime, translate_groupid
|
||||
from service import get_peers_by_role
|
||||
from service import get_groups, get_group
|
||||
from service import get_users, get_user
|
||||
from service import get_repos, get_repo, get_repo_sinfo, get_commits
|
||||
from service import get_repos, get_repo, get_repo_sinfo, get_commits, \
|
||||
get_user_upload_info
|
||||
|
||||
|
@@ -127,6 +127,8 @@ def get_repo(repo_id):
|
||||
def get_repo_sinfo(repo_id):
|
||||
return seafile_rpc.get_repo_sinfo(repo_id)
|
||||
|
||||
|
||||
def get_commits(repo_id):
|
||||
return seafile_rpc.get_commit_list(repo_id, "", 100)
|
||||
|
||||
def get_user_upload_info(user_id):
|
||||
return seafile_rpc.get_user_upload_info(user_id, 0, 100)
|
||||
|
3
urls.py
3
urls.py
@@ -1,6 +1,6 @@
|
||||
from django.conf.urls.defaults import *
|
||||
from django.conf import settings
|
||||
from seahub.views import root, home, peers, groups, myhome
|
||||
from seahub.views import root, home, peers, groups, myhome, myfiles
|
||||
|
||||
# Uncomment the next two lines to enable the admin:
|
||||
from django.contrib import admin
|
||||
@@ -24,6 +24,7 @@ urlpatterns = patterns('',
|
||||
(r'^home/my/$', myhome),
|
||||
(r'^peers/$', peers),
|
||||
(r'^groups/$', groups),
|
||||
(r'^files/my/$', myfiles),
|
||||
|
||||
(r'^avatar/', include('avatar.urls')),
|
||||
(r'^profile/', include('seahub.profile.urls')),
|
||||
|
33
views.py
33
views.py
@@ -4,9 +4,13 @@ from django.core.urlresolvers import reverse
|
||||
from django.template import RequestContext
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
from seaserv import cclient, ccnet_rpc, get_groups, get_users
|
||||
from seaserv import cclient, ccnet_rpc, get_groups, get_users, \
|
||||
get_user_upload_info
|
||||
|
||||
def root(request):
|
||||
if request.user.is_authenticated():
|
||||
return HttpResponseRedirect(reverse(myhome))
|
||||
else:
|
||||
return HttpResponseRedirect(reverse(home))
|
||||
|
||||
|
||||
@@ -15,9 +19,25 @@ def home(request):
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def get_user_cid(user):
|
||||
try:
|
||||
profile = user.get_profile()
|
||||
return profile.ccnet_user_id
|
||||
except UserProfile.DoesNotExist:
|
||||
return None
|
||||
|
||||
|
||||
@login_required
|
||||
def myhome(request):
|
||||
ccnet_user_id = ""
|
||||
try:
|
||||
profile = request.user.get_profile()
|
||||
ccnet_user_id = profile.ccnet_user_id
|
||||
except UserProfile.DoesNotExist:
|
||||
pass
|
||||
|
||||
return render_to_response('myhome.html', {
|
||||
"ccnet_user_id": ccnet_user_id,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@@ -50,3 +70,14 @@ def groups(request):
|
||||
'groups': groups,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@login_required
|
||||
def myfiles(request):
|
||||
cid = get_user_cid(request.user)
|
||||
if not cid:
|
||||
uploaded_items = []
|
||||
else:
|
||||
uploaded_items = get_user_upload_info(cid)
|
||||
return render_to_response('myfiles.html', {
|
||||
'uploaded_items': uploaded_items,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
Reference in New Issue
Block a user