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:
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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:
|
||||
|
Binary file not shown.
@@ -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 "推荐失败"
|
||||
|
@@ -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 %}
|
||||
|
@@ -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>
|
||||
<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>
|
||||
</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 %}
|
||||
|
@@ -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'),
|
||||
|
@@ -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', {
|
||||
|
BIN
media/avatars/default-non-register.jpg
Normal file
BIN
media/avatars/default-non-register.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
@@ -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,
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user