mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-03 07:55:36 +00:00
Modify profile
This commit is contained in:
@@ -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]
|
||||||
|
@@ -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 %}
|
||||||
|
@@ -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:
|
||||||
|
@@ -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'昵称只能包含中英文字符、数字及下划线')
|
||||||
|
@@ -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)
|
||||||
|
|
||||||
|
@@ -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>
|
||||||
|
@@ -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 %}
|
||||||
|
|
||||||
|
@@ -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">
|
||||||
|
@@ -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"),
|
||||||
)
|
)
|
||||||
|
@@ -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))
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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 %}
|
||||||
|
2
views.py
2
views.py
@@ -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:
|
||||||
|
Reference in New Issue
Block a user