1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-12 13:24:52 +00:00

Merge branch 'xiez_profile' into lj

Conflicts:
	profile/templates/profile/set_profile.html
	profile/templates/profile/user_ids.html
	profile/views.py
This commit is contained in:
llj
2012-06-22 15:51:32 +08:00
12 changed files with 99 additions and 71 deletions

View File

@@ -1,13 +1,13 @@
# encoding: utf-8 # encoding: utf-8
import datetime as dt import datetime as dt
from datetime import datetime
from django import template
import re import re
from datetime import datetime
from django import template
from seahub.settings import FILEEXT_ICON_MAP from seahub.settings import FILEEXT_ICON_MAP
from seahub.po import TRANSLATION_MAP from seahub.po import TRANSLATION_MAP
from seahub.profile.models import Profile
register = template.Library() register = template.Library()
@@ -73,3 +73,11 @@ def translate_remain_time(value):
return u'%d 分钟' % (value/60) return u'%d 分钟' % (value/60)
else: else:
return u'%d' % (value) return u'%d' % (value)
@register.filter(name='email2nickname')
def email2nickname(value):
try:
profile = Profile.objects.get(user=value)
return profile.nickname
except Profile.DoesNotExist:
return value.split('@')[0]

View File

@@ -9,11 +9,7 @@
<h3>管理员</h3> <h3>管理员</h3>
<ul> <ul>
{% for member in managers %} {% for member in managers %}
{% if member.user_name != request.user.username %} <li class="group-member">{% avatar member.user_name 16 %}<span class="group-member-name"><a href="{{ SITE_ROOT }}profile/{{ member.user_name }}/">{{ member.user_name|email2nickname }}</a></span></li>
<li class="group-member">{% avatar member.user_name 16 %}<span class="group-member-name"><a href="{{ SITE_ROOT }}profile/user/?user={{ member.user_name }}">{{ member.short_username }}</a></span></li>
{% else %}
<li class="group-member">{% avatar member.user_name 16 %}<span class="group-member-name">{{ member.short_username }}</span></li>
{% endif %}
{% endfor %} {% endfor %}
</ul> </ul>
@@ -21,11 +17,9 @@
{% if common_members %} {% if common_members %}
<ul> <ul>
{% for member in common_members %} {% for member in common_members %}
{% if member.user_name != request.user.username %} <li class="group-member">{% avatar member.user_name 16 %}
<li class="group-member">{% avatar member.user_name 16 %}<span class="group-member-name"><a href="{{ SITE_ROOT }}profile/user/?user={{ member.user_name }}">{{ member.short_username }}</a></span></li> <span class="group-member-name"><a href="{{ SITE_ROOT }}profile/{{ member.user_name }}/">{{ member.user_name|email2nickname }}</a></span>
{% else %} </li>
<li class="group-member">{% avatar member.user_name 16 %}<span class="group-member-name">{{ member.short_username }}</span></li>
{% endif %}
{% endfor %} {% endfor %}
</ul> </ul>
{% else %} {% else %}

View File

@@ -125,7 +125,7 @@ def group_info(request, group_id):
managers = [] managers = []
common_members = [] common_members = []
for member in members: for member in members:
member.short_username = member.user_name.split('@')[0] # member.short_username = member.user_name.split('@')[0]
if member.is_staff == 1: if member.is_staff == 1:
managers.append(member) managers.append(member)
else: else:

View File

@@ -1,8 +1,15 @@
# encoding: utf-8
from django import forms from django import forms
class SetUserProfileForm(forms.Form): from seahub.utils import validate_group_name
status = forms.CharField(max_length=140, required=False) class ProfileForm(forms.Form):
interests = forms.CharField(max_length=256, required=False) nickname = forms.CharField(max_length=64, required=False)
intro = forms.CharField(max_length=256, required=False)
#signature = forms.CharField() def clean_nickname(self):
nickname = self.cleaned_data['nickname']
if validate_group_name(nickname):
return nickname
else:
raise forms.ValidationError(u'昵称只能包含中英文字符、数字及下划线')

View File

@@ -1,8 +1,7 @@
from django.db import models from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model): class Profile(models.Model):
user = models.EmailField(unique=True) user = models.EmailField(unique=True)
nickname = models.CharField(max_length=256, blank=True) nickname = models.CharField(max_length=64, blank=True)
intro = models.TextField(max_length=256, blank=True) intro = models.TextField(max_length=256, blank=True)

View File

@@ -18,8 +18,16 @@
<label>头像:</label>{% avatar request.user.username 60 %} <label>头像:</label>{% avatar request.user.username 60 %}
<a href="{{ SITE_ROOT }}avatar/add/">更改</a><br /> <a href="{{ SITE_ROOT }}avatar/add/">更改</a><br />
<label>密码:</label><a href="{{ SITE_ROOT }}accounts/password/change/">更改</a><br/> <label>密码:</label><a href="{{ SITE_ROOT }}accounts/password/change/">更改</a><br/>
<label>昵称:</label><input type="text" name="nickname" value="{{ nickname }}" class="text-input" /><br/> <label>昵称:</label><input type="text" name="nickname" value="{{ form.data.nickname }}" class="text-input" />
<label>一句话介绍:</label><textarea name="intro">{{ intro }}</textarea><br /> {% for error in form.nickname.errors %}
<span class="error">{{ error|escape }}</span>
{% endfor %}
<br/>
<label>一句话介绍:</label><textarea name="intro">{{ form.data.intro }}</textarea>
{% for error in form.intro.errors %}
<span class="error">{{ error|escape }}</span>
{% endfor %}
<br/>
<input type="submit" value="提交" class="submit" /> <input type="submit" value="提交" class="submit" />
</form> </form>
</div> </div>

View File

@@ -6,7 +6,9 @@
<div class="user-profile narrow-panel ovhd"> <div class="user-profile narrow-panel ovhd">
<div class="pic fleft"> <div class="pic fleft">
{% avatar email 80 %} {% avatar email 80 %}
{% if new_user %}
<button id="add">加为联系人</button> <button id="add">加为联系人</button>
{% endif %}
</div> </div>
<div class="txt fright"> <div class="txt fright">

View File

@@ -3,6 +3,6 @@ from django.conf.urls.defaults import *
urlpatterns = patterns('profile.views', urlpatterns = patterns('profile.views',
url(r'^list_user/$', 'list_userids', name="list_userids"), url(r'^list_user/$', 'list_userids', name="list_userids"),
url(r'^$', 'edit_profile', name="edit_profile"), url(r'^$', 'edit_profile', name="edit_profile"),
url(r'^user/$', 'user_profile', name="user_profile"), url(r'^(?P<user>[^/]+)/$', 'user_profile', name="user_profile"),
url(r'^logout/$', 'logout_relay', name="logout_relay"), url(r'^logout/$', 'logout_relay', name="logout_relay"),
) )

View File

@@ -8,8 +8,10 @@ from django.contrib.auth.decorators import login_required
from seaserv import ccnet_rpc, get_binding_peerids from seaserv import ccnet_rpc, get_binding_peerids
from pysearpc import SearpcError from pysearpc import SearpcError
from utils import go_error from forms import ProfileForm
from models import Profile from models import Profile
from utils import go_error
from seahub.contacts.models import Contact
@login_required @login_required
def list_userids(request): def list_userids(request):
@@ -33,63 +35,71 @@ def logout_relay(request):
return HttpResponseRedirect(reverse('list_userids')) return HttpResponseRedirect(reverse('list_userids'))
@login_required
def edit_profile(request): def edit_profile(request):
profile = Profile.objects.filter(user=request.user.username)
if not profile:
Profile.objects.create(user=request.user.username, nickname='', intro='')
profile = Profile.objects.filter(user=request.user.username)[0]
if request.method == 'GET':
modified = False
if request.method == 'POST': if request.method == 'POST':
modified = True modified = True
new_nickname = request.POST.get('nickname', '') form = ProfileForm(request.POST)
new_intro = request.POST.get('intro', '') if form.is_valid():
nickname = form.cleaned_data['nickname']
if new_nickname != profile.nickname: intro = form.cleaned_data['intro']
profile.nickname = new_nickname try:
profile.save() profile = Profile.objects.get(user=request.user.username)
except Profile.DoesNotExist:
if new_intro != profile.intro: profile = Profile()
profile.intro = new_intro
profile.user = request.user.username
profile.nickname = nickname
profile.intro = intro
profile.save() profile.save()
else:
modified = False
try:
profile = Profile.objects.get(user=request.user.username)
form = ProfileForm({
'nickname': profile.nickname,
'intro': profile.intro,
})
except Profile.DoesNotExist:
form = ProfileForm()
return render_to_response('profile/set_profile.html', { return render_to_response('profile/set_profile.html', {
'nickname':profile.nickname, 'form': form,
'intro':profile.intro, 'modified': modified,
'modified':modified, }, context_instance=RequestContext(request))
},
context_instance=RequestContext(request))
def user_profile(request): @login_required
user = request.GET.get('user', '') def user_profile(request, user):
user_nickname = '' user_nickname = ''
user_intro = '' user_intro = ''
err_msg = '' err_msg = ''
if user: try:
try: user_check = ccnet_rpc.get_emailuser(user)
user_check = ccnet_rpc.get_emailuser(user) except:
except: user_check = None
user_check = None
if user_check: if user_check:
profile = Profile.objects.filter(user=user) profile = Profile.objects.filter(user=user)
if profile: if profile:
profile = profile[0] profile = profile[0]
user_nickname = profile.nickname user_nickname = profile.nickname
user_intro = profile.intro user_intro = profile.intro
else:
err_msg = '该用户不存在'
else: else:
err_msg = '该用户不存在' err_msg = '该用户不存在'
if user == request.user.username or \
Contact.objects.filter(user_email=request.user.username,
contact_email=user).count() > 0:
new_user = False
else:
new_user = True
return render_to_response('profile/user_profile.html', { return render_to_response('profile/user_profile.html', {
'email': user, 'email': user,
'nickname':user_nickname, 'nickname': user_nickname,
'intro':user_intro, 'intro': user_intro,
'err_msg':err_msg, 'new_user': new_user,
'err_msg': err_msg,
}, },
context_instance=RequestContext(request)) context_instance=RequestContext(request))

View File

@@ -194,7 +194,7 @@ else:
AVATAR_STORAGE_DIR = 'avatars' AVATAR_STORAGE_DIR = 'avatars'
AVATAR_GRAVATAR_BACKUP = False AVATAR_GRAVATAR_BACKUP = False
AVATAR_DEFAULT_URL = '/avatars/default.jpg' AVATAR_DEFAULT_URL = '/avatars/default.jpg'
AUTO_GENERATE_AVATAR_SIZES = (80, 16) AUTO_GENERATE_AVATAR_SIZES = (80, 60, 48, 16)
AVATAR_MAX_AVATARS_PER_USER = 1 AVATAR_MAX_AVATARS_PER_USER = 1
AVATAR_CACHE_TIMEOUT = 0 AVATAR_CACHE_TIMEOUT = 0

View File

@@ -10,7 +10,7 @@
{% if org_users %} {% if org_users %}
<ul> <ul>
{% for member in org_users %} {% for member in org_users %}
<li class="org-member">{% avatar member.user_name 16 %}<span class="org-member-name">{{ member.short_username }}</span></li> <li class="org-member">{% avatar member.user_name 16 %}<span class="org-member-name"><a href="{{ SITE_ROOT }}profile/{{ member.email }}/">{{ member.email|email2nickname }}</a></span></li>
{% endfor %} {% endfor %}
</ul> </ul>
{% else %} {% else %}

View File

@@ -554,7 +554,7 @@ def myhome(request):
else: else:
groups_join.append(group) groups_join.append(group)
#get nickname # get nickname
if not Profile.objects.filter(user=request.user.username): if not Profile.objects.filter(user=request.user.username):
nickname = '' nickname = ''
else: else: