diff --git a/base/templatetags/seahub_tags.py b/base/templatetags/seahub_tags.py index a97c813f51..1973adc51e 100644 --- a/base/templatetags/seahub_tags.py +++ b/base/templatetags/seahub_tags.py @@ -1,13 +1,13 @@ # encoding: utf-8 - import datetime as dt -from datetime import datetime -from django import template - import re +from datetime import datetime + +from django import template from seahub.settings import FILEEXT_ICON_MAP from seahub.po import TRANSLATION_MAP +from seahub.profile.models import Profile register = template.Library() @@ -73,3 +73,11 @@ def translate_remain_time(value): return u'%d 分钟' % (value/60) else: 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] diff --git a/group/templates/group/group_info.html b/group/templates/group/group_info.html index d1b9db1b4b..00dc64d7f5 100644 --- a/group/templates/group/group_info.html +++ b/group/templates/group/group_info.html @@ -9,11 +9,7 @@

管理员

@@ -21,11 +17,9 @@ {% if common_members %} {% else %} diff --git a/group/views.py b/group/views.py index 5e20f0758e..a14c7b99b9 100644 --- a/group/views.py +++ b/group/views.py @@ -125,7 +125,7 @@ def group_info(request, group_id): managers = [] common_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: managers.append(member) else: diff --git a/profile/forms.py b/profile/forms.py index 905af9403e..6d463ce2fe 100644 --- a/profile/forms.py +++ b/profile/forms.py @@ -1,8 +1,15 @@ +# encoding: utf-8 from django import forms -class SetUserProfileForm(forms.Form): +from seahub.utils import validate_group_name - status = forms.CharField(max_length=140, required=False) - interests = forms.CharField(max_length=256, required=False) +class ProfileForm(forms.Form): + 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'昵称只能包含中英文字符、数字及下划线') diff --git a/profile/models.py b/profile/models.py index f4e493b393..14279dd36b 100644 --- a/profile/models.py +++ b/profile/models.py @@ -1,8 +1,7 @@ from django.db import models -from django.contrib.auth.models import User class Profile(models.Model): 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) diff --git a/profile/templates/profile/set_profile.html b/profile/templates/profile/set_profile.html index 657579bc5c..6b2d642262 100644 --- a/profile/templates/profile/set_profile.html +++ b/profile/templates/profile/set_profile.html @@ -18,8 +18,16 @@ {% avatar request.user.username 60 %} 更改
更改
-
-
+ + {% for error in form.nickname.errors %} + {{ error|escape }} + {% endfor %} +
+ + {% for error in form.intro.errors %} + {{ error|escape }} + {% endfor %} +
diff --git a/profile/templates/profile/user_profile.html b/profile/templates/profile/user_profile.html index 51a311c69d..fb2df0f64d 100644 --- a/profile/templates/profile/user_profile.html +++ b/profile/templates/profile/user_profile.html @@ -6,7 +6,9 @@
{% avatar email 80 %} + {% if new_user %} + {% endif %}
diff --git a/profile/urls.py b/profile/urls.py index 4751c87bba..10cf44535f 100644 --- a/profile/urls.py +++ b/profile/urls.py @@ -3,6 +3,6 @@ from django.conf.urls.defaults import * urlpatterns = patterns('profile.views', url(r'^list_user/$', 'list_userids', name="list_userids"), url(r'^$', 'edit_profile', name="edit_profile"), - url(r'^user/$', 'user_profile', name="user_profile"), + url(r'^(?P[^/]+)/$', 'user_profile', name="user_profile"), url(r'^logout/$', 'logout_relay', name="logout_relay"), ) diff --git a/profile/views.py b/profile/views.py index 03c934789a..cc87b307d0 100644 --- a/profile/views.py +++ b/profile/views.py @@ -8,8 +8,10 @@ from django.contrib.auth.decorators import login_required from seaserv import ccnet_rpc, get_binding_peerids from pysearpc import SearpcError -from utils import go_error +from forms import ProfileForm from models import Profile +from utils import go_error +from seahub.contacts.models import Contact @login_required def list_userids(request): @@ -33,63 +35,71 @@ def logout_relay(request): return HttpResponseRedirect(reverse('list_userids')) +@login_required 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': modified = True - new_nickname = request.POST.get('nickname', '') - new_intro = request.POST.get('intro', '') - - if new_nickname != profile.nickname: - profile.nickname = new_nickname - profile.save() - - if new_intro != profile.intro: - profile.intro = new_intro + form = ProfileForm(request.POST) + if form.is_valid(): + nickname = form.cleaned_data['nickname'] + intro = form.cleaned_data['intro'] + try: + profile = Profile.objects.get(user=request.user.username) + except Profile.DoesNotExist: + profile = Profile() + + profile.user = request.user.username + profile.nickname = nickname + profile.intro = intro 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', { - 'nickname':profile.nickname, - 'intro':profile.intro, - 'modified':modified, - }, - context_instance=RequestContext(request)) + 'form': form, + 'modified': modified, + }, context_instance=RequestContext(request)) -def user_profile(request): - user = request.GET.get('user', '') - +@login_required +def user_profile(request, user): user_nickname = '' user_intro = '' err_msg = '' - - if user: - try: - user_check = ccnet_rpc.get_emailuser(user) - except: - user_check = None + + try: + user_check = ccnet_rpc.get_emailuser(user) + except: + user_check = None - if user_check: - profile = Profile.objects.filter(user=user) - if profile: - profile = profile[0] - user_nickname = profile.nickname - user_intro = profile.intro - else: - err_msg = '该用户不存在' + if user_check: + profile = Profile.objects.filter(user=user) + if profile: + profile = profile[0] + user_nickname = profile.nickname + user_intro = profile.intro else: 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', { 'email': user, - 'nickname':user_nickname, - 'intro':user_intro, - 'err_msg':err_msg, + 'nickname': user_nickname, + 'intro': user_intro, + 'new_user': new_user, + 'err_msg': err_msg, }, context_instance=RequestContext(request)) diff --git a/settings.py b/settings.py index bdaeabb36d..4915d391ed 100644 --- a/settings.py +++ b/settings.py @@ -194,7 +194,7 @@ else: AVATAR_STORAGE_DIR = 'avatars' AVATAR_GRAVATAR_BACKUP = False 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_CACHE_TIMEOUT = 0 diff --git a/templates/org_info.html b/templates/org_info.html index dc0916cb13..a4b338edfa 100644 --- a/templates/org_info.html +++ b/templates/org_info.html @@ -10,7 +10,7 @@ {% if org_users %}
    {% for member in org_users %} -
  • {% avatar member.user_name 16 %}{{ member.short_username }}
  • +
  • {% avatar member.user_name 16 %}{{ member.email|email2nickname }}
  • {% endfor %}
{% else %} diff --git a/views.py b/views.py index e905c7da8e..59374a8da1 100644 --- a/views.py +++ b/views.py @@ -554,7 +554,7 @@ def myhome(request): else: groups_join.append(group) - #get nickname + # get nickname if not Profile.objects.filter(user=request.user.username): nickname = '' else: