1
0
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:
plt
2011-05-08 15:19:58 +08:00
parent c43bc4944a
commit 207be6c5bb
11 changed files with 105 additions and 40 deletions

View File

@@ -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)

View File

@@ -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>

View File

@@ -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>

View File

@@ -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
View 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 %}

View File

@@ -1 +1,5 @@
{% extends "myhome_base.html" %}
{% block right_panel %}
Ccnet ID: {{ ccnet_user_id }}
{% endblock %}

View File

@@ -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>

View File

@@ -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

View File

@@ -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)

View File

@@ -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')),

View File

@@ -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))