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

Added non-registered group member icon

This commit is contained in:
zhengxie
2012-10-22 17:50:09 +08:00
parent 3e7b8b626f
commit b3005db4be
12 changed files with 80 additions and 41 deletions

View File

@@ -10,6 +10,7 @@ except ImportError:
AVATAR_DEFAULT_SIZE = getattr(settings, 'AVATAR_DEFAULT_SIZE', 80)
AVATAR_STORAGE_DIR = getattr(settings, 'AVATAR_STORAGE_DIR', 'avatars')
AVATAR_DEFAULT_URL = getattr(settings, 'AVATAR_DEFAULT_URL', 'avatar/img/default.jpg')
AVATAR_DEFAULT_NON_REGISTERED_URL = getattr(settings, 'AVATAR_DEFAULT_NON_REGISTERED_URL', '/avatars/default-non-register.jpg')
### Group avatars ###
GROUP_AVATAR_DEFAULT_SIZE = getattr(settings, 'GROUP_AVATAR_DEFAULT_SIZE', 48)

View File

@@ -6,10 +6,12 @@ from django.utils.hashcompat import md5_constructor
from django.core.urlresolvers import reverse
from seahub.base.accounts import User
from seahub.views import is_registered_user
from avatar.settings import (AVATAR_GRAVATAR_BACKUP, AVATAR_GRAVATAR_DEFAULT,
AVATAR_DEFAULT_SIZE)
from avatar.util import get_primary_avatar, get_default_avatar_url, cache_result
from avatar.util import get_primary_avatar, get_default_avatar_url, \
cache_result, get_default_avatar_non_registered_url
register = template.Library()
@@ -40,7 +42,7 @@ def avatar(user, size=AVATAR_DEFAULT_SIZE):
alt = unicode(user)
url = avatar_url(user, size)
except User.DoesNotExist:
url = get_default_avatar_url()
url = get_default_avatar_non_registered_url()
alt = _("Default Avatar")
else:
alt = unicode(user)

View File

@@ -4,7 +4,8 @@ from django.core.cache import cache
from seahub.base.accounts import User
from avatar.settings import (AVATAR_DEFAULT_URL, AVATAR_CACHE_TIMEOUT,
AUTO_GENERATE_AVATAR_SIZES, AVATAR_DEFAULT_SIZE)
AUTO_GENERATE_AVATAR_SIZES, AVATAR_DEFAULT_SIZE,
AVATAR_DEFAULT_NON_REGISTERED_URL)
cached_funcs = set()
@@ -59,6 +60,23 @@ def get_default_avatar_url():
return '%s/%s' % (base_url, AVATAR_DEFAULT_URL)
return '%s%s' % (base_url, AVATAR_DEFAULT_URL)
def get_default_avatar_non_registered_url():
base_url = getattr(settings, 'STATIC_URL', None)
if not base_url:
base_url = getattr(settings, 'MEDIA_URL', '')
# Don't use base_url if the default avatar url starts with http:// of https://
if AVATAR_DEFAULT_NON_REGISTERED_URL.startswith('http://') or AVATAR_DEFAULT_NON_REGISTERED_URL.startswith('https://'):
return AVATAR_DEFAULT_NON_REGISTERED_URL
# We'll be nice and make sure there are no duplicated forward slashes
ends = base_url.endswith('/')
begins = AVATAR_DEFAULT_NON_REGISTERED_URL.startswith('/')
if ends and begins:
base_url = base_url[:-1]
elif not ends and not begins:
return '%s/%s' % (base_url, AVATAR_DEFAULT_NON_REGISTERED_URL)
return '%s%s' % (base_url, AVATAR_DEFAULT_NON_REGISTERED_URL)
def get_primary_avatar(user, size=AVATAR_DEFAULT_SIZE):
if not isinstance(user, User):
try:

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-10-22 11:46+0800\n"
"POT-Creation-Date: 2012-10-22 17:46+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -58,39 +58,43 @@ msgstr "只有群组管理员可以删除成员。"
msgid "Can not remove myself"
msgstr "无法删除自己"
#: views.py:553
#: views.py:554
#, python-format
msgid "Failed to add group member, %s is not in current organization."
msgstr "添加成员失败,%s 未在当前团体中。"
#: views.py:586
#: views.py:588
msgid "Failed to send mail."
msgstr "邮件发送失败。"
#: views.py:603
#: views.py:605
#, python-format
msgid "Failed to add group member, %s is not registerd."
msgstr "添加成员失败,%s 未注册。"
#: views.py:615
msgid "Successfully added group member(s)."
msgstr "操作成功"
#: views.py:618
msgid "Successfully added group member(s). An email has been sent to user(s)."
msgstr "添加群组成员成功,邀请邮件已发送。"
#: views.py:772
#: views.py:620
msgid "Successfully added group member(s)."
msgstr "添加群组成员成功。"
#: views.py:786
msgid "Recommend error: wrong group id"
msgstr "推荐失败群组id不正确"
#: views.py:780
#: views.py:794
#, python-format
msgid "Recommend to %s error: you are not in that group"
msgstr "推荐到 %s 失败:未参加该群组"
#: views.py:800
#: views.py:814
#, python-format
msgid ""
"Recommend to <a href=\"%(url)s\" target=\"_blank\">%(name)s</a> success。"
msgstr "推荐到<a href=\"%(url)s\" target=\"_blank\">%(name)s</a>成功"
#: views.py:805
#: views.py:819
msgid "Recommend failed"
msgstr "推荐失败"

View File

@@ -57,7 +57,7 @@
<h3 class="info-item-top">操作</h3>
<ul class="with-bg info-item-bottom">
{% if is_staff %}
<li><a id="group-mgr" href="{{ SITE_ROOT }}group/{{ group.id }}/members/">群组管理</a></li>
<li><a id="group-mgr" href="{% url 'group.views.group_manage' group.id %}">群组管理</a></li>
{% else %}
<li><a id="quit-group" href="#" data="{{ SITE_ROOT }}group/{{ group.id }}/?op=quit">退出群组</a></li>
{% endif %}

View File

@@ -1,5 +1,5 @@
{% extends base_template %}
{% load seahub_tags %}
{% load seahub_tags avatar_tags %}
{% load url from future %}
{% block nav_group_class %}class="cur"{% endblock %}
@@ -9,12 +9,16 @@
{% endblock %}
{% block left_panel %}
<h3>操作</h3>
<ul class="with-bg">
<div class="info-item">
<div class="info-item-top"><h3>操作</h3> </div>
<div class="info-item-bottom">
<ul class="with-bg">
<li><a href="{{ SITE_ROOT }}avatar/group/add/?gid={{ group.id }}">设置群组图标</a></li>
<li><a id="group-remove" href="#" data="{{ SITE_ROOT }}group/{{ group.id }}/?op=dismiss">解散群组</a></li>
<li><a href="{{ SITE_ROOT }}group/{{ group.id }}/">返回群组</a></li>
</ul>
</ul>
</div>
</div>
{% endblock %}
{% block right_panel %}
@@ -23,12 +27,14 @@
{% if members %}
<table class="member-list">
<tr>
<th width="75%">邮箱</th>
<th width="4%"></th>
<th width="71%">邮箱</th>
<th width="25%">操作</th>
</tr>
{% for member in members %}
<tr>
<td>{% avatar member.user_name 20 %}</td>
<td>{{ member.user_name }}</td>
<td>
<a href="#" data="{{ SITE_ROOT }}group/{{ group.id }}/member/{{ member.user_name }}/?op=delete" class="member-remove-btn op">删除</a>
@@ -49,12 +55,14 @@
{% if admins %}
<table class="member-list">
<tr>
<th width="75%">邮箱</th>
<th width="4%"></th>
<th width="71%">邮箱</th>
<th width="25%">操作</th>
</tr>
{% for member in admins %}
<tr>
<td>{% avatar member.user_name 20 %}</td>
<td>{{ member.user_name }}</td>
<td>
{% if member.user_name != request.user.username %}

View File

@@ -1,7 +1,7 @@
from django.conf.urls.defaults import *
from views import group_info, group_member_operations, group_add_admin, \
group_members, msg_reply, msg_reply_new, group_recommend, \
group_manage, msg_reply, msg_reply_new, group_recommend, \
create_group_repo, group_joinrequest, attention, group_message_remove, \
group_remove_admin
@@ -9,7 +9,7 @@ urlpatterns = patterns('',
url(r'^(?P<group_id>[\d]+)/$', group_info, name='group_info'),
url(r'^reply/(?P<msg_id>[\d]+)/$', msg_reply, name='msg_reply'),
url(r'^reply/new/$', msg_reply_new, name='msg_reply_new'),
url(r'^(?P<group_id>\d+)/members/$', group_members, name='group_members'),
url(r'^(?P<group_id>\d+)/manage/$', group_manage, name='group_members'),
url(r'^(?P<group_id>[\d]+)/create-repo/$', create_group_repo, name='create_group_repo'),
(r'^(?P<group_id>[\d]+)/member/(?P<user_name>[^/]+)/$', group_member_operations),
url(r'^(?P<group_id>\d+)/msgdel/(?P<msg_id>\d+)/$', group_message_remove, name='group_message_remove'),

View File

@@ -521,7 +521,7 @@ def group_info(request, group_id):
@login_required
@ctx_switch_required
@group_staff_required
def group_members(request, group_id):
def group_manage(request, group_id):
group_id = int(group_id) # Checked by URL Conf
group = get_group(group_id)
@@ -544,6 +544,7 @@ def group_members(request, group_id):
for email in member_list:
mail_sended.send(sender=None, user=user, email=email)
mail_sended_list = []
if request.cloud_mode:
if request.user.org:
# Can only invite org users to group.
@@ -582,6 +583,7 @@ def group_members(request, group_id):
send_mail('您的好友在SeaCloud上将你加入到群组',
t.render(Context(c)), None, [email],
fail_silently=False)
mail_sended_list.append(email)
except:
data = json.dumps({'error': _(u'Failed to send mail.')})
return HttpResponse(data, status=500,
@@ -612,6 +614,9 @@ def group_members(request, group_id):
result['error'] = _(e.msg)
return HttpResponse(json.dumps(result), status=500,
content_type=content_type)
if mail_sended_list:
messages.success(request, _(u'Successfully added group member(s). An email has been sent to user(s).'))
else:
messages.success(request, _(u'Successfully added group member(s).'))
return HttpResponse(json.dumps('success'), status=200,
content_type=content_type)
@@ -619,6 +624,7 @@ def group_members(request, group_id):
### GET ###
members_all = ccnet_threaded_rpc.get_group_members(group_id)
admins = [ m for m in members_all if m.is_staff ]
contacts = Contact.objects.filter(user_email=user)
return render_to_response('group/group_manage.html', {

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -62,7 +62,6 @@ def edit_profile(request):
def user_profile(request, user):
user_nickname = ''
user_intro = ''
err_msg = ''
try:
user_check = User.objects.get(email=user)
@@ -76,7 +75,8 @@ def user_profile(request, user):
user_nickname = profile.nickname
user_intro = profile.intro
else:
err_msg = '该用户不存在'
nickname = user
intro = ''
if user == request.user.username or \
Contact.objects.filter(user_email=request.user.username,
@@ -84,16 +84,15 @@ def user_profile(request, user):
new_user = False
else:
new_user = True
print new_user
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))
}, context_instance=RequestContext(request))
@login_required
def get_user_profile(request, user):
data = {
'email': user,
@@ -116,7 +115,7 @@ def get_user_profile(request, user):
data['user_nickname'] = profile.nickname
data['user_intro'] = profile.intro
else:
data['err_msg'] = '该用户不存在'
data['user_intro'] = '他还未接受邀请。'
if user == request.user.username or \
Contact.objects.filter(user_email=request.user.username,

View File

@@ -161,6 +161,7 @@ AVATAR_STORAGE_DIR = 'avatars'
GROUP_AVATAR_STORAGE_DIR = 'avatars/groups'
AVATAR_GRAVATAR_BACKUP = False
AVATAR_DEFAULT_URL = '/avatars/default.jpg'
AVATAR_DEFAULT_NON_REGISTERED_URL = '/avatars/default-non-register.jpg'
GROUP_AVATAR_DEFAULT_URL = 'avatars/groups/default.png'
AVATAR_MAX_AVATARS_PER_USER = 1
AVATAR_CACHE_TIMEOUT = 24 * 60 * 60