1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-03 07:55:36 +00:00

Modify profile

This commit is contained in:
xiez
2012-06-21 20:53:13 +08:00
parent d8c5604687
commit d477e543e7
13 changed files with 90 additions and 67 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)
intro = forms.CharField(max_length=256)
#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

@@ -3,6 +3,7 @@
{% block left_panel %} {% block left_panel %}
<h3>操作</h3> <h3>操作</h3>
<ul class="with-bg"> <ul class="with-bg">
<li><a href="{{ SITE_ROOT }}profile/">修改昵称等基本信息</a></li>
<li><a href="{{ SITE_ROOT }}avatar/add/">上传头像</a></li> <li><a href="{{ SITE_ROOT }}avatar/add/">上传头像</a></li>
<li><a href="{{ SITE_ROOT }}accounts/password/change/">修改网站帐号密码</a></li> <li><a href="{{ SITE_ROOT }}accounts/password/change/">修改网站帐号密码</a></li>
<li><a href="{{ SITE_ROOT }}profile/list_user/">所有已登录的计算机</a></li> <li><a href="{{ SITE_ROOT }}profile/list_user/">所有已登录的计算机</a></li>
@@ -13,8 +14,10 @@
<div id="user-basic-info"> <div id="user-basic-info">
<h2>个人基本信息修改</h2> <h2>个人基本信息修改</h2>
<form action="" method="post"> <form action="" method="post">
<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" /><br/>
<label>自我介绍:</label><textarea name="intro">{{ intro }}</textarea><br /> {{ form.nickname.errors }}
<label>自我介绍:</label><textarea name="intro">{{ form.data.intro }}</textarea><br />
{{ form.intro.errors }}
<input type="submit" value="提交" class="submit" /> <input type="submit" value="提交" class="submit" />
</form> </form>
</div> </div>

View File

@@ -6,6 +6,7 @@
<li><a href="{{ SITE_ROOT }}profile/">修改昵称等基本信息</a></li> <li><a href="{{ SITE_ROOT }}profile/">修改昵称等基本信息</a></li>
<li><a href="{{ SITE_ROOT }}avatar/add/">上传头像</a></li> <li><a href="{{ SITE_ROOT }}avatar/add/">上传头像</a></li>
<li><a href="{{ SITE_ROOT }}accounts/password/change/">修改网站帐号密码</a></li> <li><a href="{{ SITE_ROOT }}accounts/password/change/">修改网站帐号密码</a></li>
<li><a href="{{ SITE_ROOT }}profile/list_user/">所有已登录的计算机</a></li>
</ul> </ul>
{% endblock %} {% endblock %}

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,61 +35,68 @@ 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':
pass
if request.method == 'POST': if request.method == 'POST':
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']
intro = form.cleaned_data['intro']
try:
profile = Profile.objects.get(user=request.user.username)
except Profile.DoesNotExist:
profile = Profile()
if new_nickname != profile.nickname: profile.user = request.user.username
profile.nickname = new_nickname profile.nickname = nickname
profile.save() profile.intro = intro
if new_intro != profile.intro:
profile.intro = new_intro
profile.save() profile.save()
else:
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, }, context_instance=RequestContext(request))
},
context_instance=RequestContext(request))
def user_profile(request):
user = request.GET.get('user', '')
@login_required
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,
'new_user': new_user,
'err_msg':err_msg, '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, 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: