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

View File

@@ -9,11 +9,7 @@
<h3>管理员</h3>
<ul>
{% 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/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 %}
<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>
{% endfor %}
</ul>
@@ -21,11 +17,9 @@
{% if common_members %}
<ul>
{% for member in common_members %}
{% 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/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 %}
<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>
{% endfor %}
</ul>
{% else %}

View File

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

View File

@@ -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'昵称只能包含中英文字符、数字及下划线')

View File

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

View File

@@ -18,8 +18,16 @@
<label>头像:</label>{% avatar request.user.username 60 %}
<a href="{{ SITE_ROOT }}avatar/add/">更改</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><textarea name="intro">{{ intro }}</textarea><br />
<label>昵称:</label><input type="text" name="nickname" value="{{ form.data.nickname }}" class="text-input" />
{% 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" />
</form>
</div>

View File

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

View File

@@ -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>[^/]+)/$', 'user_profile', name="user_profile"),
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 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,43 +35,45 @@ 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', '')
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()
if new_nickname != profile.nickname:
profile.nickname = new_nickname
profile.user = request.user.username
profile.nickname = nickname
profile.intro = intro
profile.save()
if new_intro != profile.intro:
profile.intro = new_intro
profile.save()
return render_to_response('profile/set_profile.html', {
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', {
'form': form,
'modified': modified,
},
context_instance=RequestContext(request))
def user_profile(request):
user = request.GET.get('user', '')
}, context_instance=RequestContext(request))
@login_required
def user_profile(request, user):
user_nickname = ''
user_intro = ''
err_msg = ''
if user:
try:
user_check = ccnet_rpc.get_emailuser(user)
except:
@@ -83,13 +87,19 @@ def user_profile(request):
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:
err_msg = '该用户不存在'
new_user = True
return render_to_response('profile/user_profile.html', {
'email': user,
'nickname': user_nickname,
'intro': user_intro,
'new_user': new_user,
'err_msg': err_msg,
},
context_instance=RequestContext(request))

View File

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

View File

@@ -10,7 +10,7 @@
{% if org_users %}
<ul>
{% 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 %}
</ul>
{% else %}