mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-03 16:10:26 +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_DEFAULT_SIZE = getattr(settings, 'AVATAR_DEFAULT_SIZE', 80)
|
||||||
AVATAR_STORAGE_DIR = getattr(settings, 'AVATAR_STORAGE_DIR', 'avatars')
|
AVATAR_STORAGE_DIR = getattr(settings, 'AVATAR_STORAGE_DIR', 'avatars')
|
||||||
AVATAR_DEFAULT_URL = getattr(settings, 'AVATAR_DEFAULT_URL', 'avatar/img/default.jpg')
|
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 avatars ###
|
||||||
GROUP_AVATAR_DEFAULT_SIZE = getattr(settings, 'GROUP_AVATAR_DEFAULT_SIZE', 48)
|
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 django.core.urlresolvers import reverse
|
||||||
|
|
||||||
from seahub.base.accounts import User
|
from seahub.base.accounts import User
|
||||||
|
from seahub.views import is_registered_user
|
||||||
|
|
||||||
from avatar.settings import (AVATAR_GRAVATAR_BACKUP, AVATAR_GRAVATAR_DEFAULT,
|
from avatar.settings import (AVATAR_GRAVATAR_BACKUP, AVATAR_GRAVATAR_DEFAULT,
|
||||||
AVATAR_DEFAULT_SIZE)
|
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()
|
register = template.Library()
|
||||||
|
|
||||||
@@ -40,7 +42,7 @@ def avatar(user, size=AVATAR_DEFAULT_SIZE):
|
|||||||
alt = unicode(user)
|
alt = unicode(user)
|
||||||
url = avatar_url(user, size)
|
url = avatar_url(user, size)
|
||||||
except User.DoesNotExist:
|
except User.DoesNotExist:
|
||||||
url = get_default_avatar_url()
|
url = get_default_avatar_non_registered_url()
|
||||||
alt = _("Default Avatar")
|
alt = _("Default Avatar")
|
||||||
else:
|
else:
|
||||||
alt = unicode(user)
|
alt = unicode(user)
|
||||||
|
@@ -4,7 +4,8 @@ from django.core.cache import cache
|
|||||||
from seahub.base.accounts import User
|
from seahub.base.accounts import User
|
||||||
|
|
||||||
from avatar.settings import (AVATAR_DEFAULT_URL, AVATAR_CACHE_TIMEOUT,
|
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()
|
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)
|
||||||
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):
|
def get_primary_avatar(user, size=AVATAR_DEFAULT_SIZE):
|
||||||
if not isinstance(user, User):
|
if not isinstance(user, User):
|
||||||
try:
|
try:
|
||||||
|
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \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"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -58,39 +58,43 @@ msgstr "只有群组管理员可以删除成员。"
|
|||||||
msgid "Can not remove myself"
|
msgid "Can not remove myself"
|
||||||
msgstr "无法删除自己"
|
msgstr "无法删除自己"
|
||||||
|
|
||||||
#: views.py:553
|
#: views.py:554
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to add group member, %s is not in current organization."
|
msgid "Failed to add group member, %s is not in current organization."
|
||||||
msgstr "添加成员失败,%s 未在当前团体中。"
|
msgstr "添加成员失败,%s 未在当前团体中。"
|
||||||
|
|
||||||
#: views.py:586
|
#: views.py:588
|
||||||
msgid "Failed to send mail."
|
msgid "Failed to send mail."
|
||||||
msgstr "邮件发送失败。"
|
msgstr "邮件发送失败。"
|
||||||
|
|
||||||
#: views.py:603
|
#: views.py:605
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to add group member, %s is not registerd."
|
msgid "Failed to add group member, %s is not registerd."
|
||||||
msgstr "添加成员失败,%s 未注册。"
|
msgstr "添加成员失败,%s 未注册。"
|
||||||
|
|
||||||
#: views.py:615
|
#: views.py:618
|
||||||
msgid "Successfully added group member(s)."
|
msgid "Successfully added group member(s). An email has been sent to user(s)."
|
||||||
msgstr "操作成功"
|
msgstr "添加群组成员成功,邀请邮件已发送。"
|
||||||
|
|
||||||
#: views.py:772
|
#: views.py:620
|
||||||
|
msgid "Successfully added group member(s)."
|
||||||
|
msgstr "添加群组成员成功。"
|
||||||
|
|
||||||
|
#: views.py:786
|
||||||
msgid "Recommend error: wrong group id"
|
msgid "Recommend error: wrong group id"
|
||||||
msgstr "推荐失败:群组id不正确"
|
msgstr "推荐失败:群组id不正确"
|
||||||
|
|
||||||
#: views.py:780
|
#: views.py:794
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Recommend to %s error: you are not in that group"
|
msgid "Recommend to %s error: you are not in that group"
|
||||||
msgstr "推荐到 %s 失败:未参加该群组"
|
msgstr "推荐到 %s 失败:未参加该群组"
|
||||||
|
|
||||||
#: views.py:800
|
#: views.py:814
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Recommend to <a href=\"%(url)s\" target=\"_blank\">%(name)s</a> success。"
|
"Recommend to <a href=\"%(url)s\" target=\"_blank\">%(name)s</a> success。"
|
||||||
msgstr "推荐到<a href=\"%(url)s\" target=\"_blank\">%(name)s</a>成功"
|
msgstr "推荐到<a href=\"%(url)s\" target=\"_blank\">%(name)s</a>成功"
|
||||||
|
|
||||||
#: views.py:805
|
#: views.py:819
|
||||||
msgid "Recommend failed"
|
msgid "Recommend failed"
|
||||||
msgstr "推荐失败"
|
msgstr "推荐失败"
|
||||||
|
@@ -57,7 +57,7 @@
|
|||||||
<h3 class="info-item-top">操作</h3>
|
<h3 class="info-item-top">操作</h3>
|
||||||
<ul class="with-bg info-item-bottom">
|
<ul class="with-bg info-item-bottom">
|
||||||
{% if is_staff %}
|
{% 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 %}
|
{% else %}
|
||||||
<li><a id="quit-group" href="#" data="{{ SITE_ROOT }}group/{{ group.id }}/?op=quit">退出群组</a></li>
|
<li><a id="quit-group" href="#" data="{{ SITE_ROOT }}group/{{ group.id }}/?op=quit">退出群组</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
{% extends base_template %}
|
{% extends base_template %}
|
||||||
{% load seahub_tags %}
|
{% load seahub_tags avatar_tags %}
|
||||||
{% load url from future %}
|
{% load url from future %}
|
||||||
|
|
||||||
{% block nav_group_class %}class="cur"{% endblock %}
|
{% block nav_group_class %}class="cur"{% endblock %}
|
||||||
@@ -9,12 +9,16 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block left_panel %}
|
{% block left_panel %}
|
||||||
<h3>操作</h3>
|
<div class="info-item">
|
||||||
<ul class="with-bg">
|
<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 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 id="group-remove" href="#" data="{{ SITE_ROOT }}group/{{ group.id }}/?op=dismiss">解散群组</a></li>
|
||||||
<li><a href="{{ SITE_ROOT }}group/{{ group.id }}/">返回群组</a></li>
|
<li><a href="{{ SITE_ROOT }}group/{{ group.id }}/">返回群组</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block right_panel %}
|
{% block right_panel %}
|
||||||
@@ -23,12 +27,14 @@
|
|||||||
{% if members %}
|
{% if members %}
|
||||||
<table class="member-list">
|
<table class="member-list">
|
||||||
<tr>
|
<tr>
|
||||||
<th width="75%">邮箱</th>
|
<th width="4%"></th>
|
||||||
|
<th width="71%">邮箱</th>
|
||||||
<th width="25%">操作</th>
|
<th width="25%">操作</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
{% for member in members %}
|
{% for member in members %}
|
||||||
<tr>
|
<tr>
|
||||||
|
<td>{% avatar member.user_name 20 %}</td>
|
||||||
<td>{{ member.user_name }}</td>
|
<td>{{ member.user_name }}</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="#" data="{{ SITE_ROOT }}group/{{ group.id }}/member/{{ member.user_name }}/?op=delete" class="member-remove-btn op">删除</a>
|
<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 %}
|
{% if admins %}
|
||||||
<table class="member-list">
|
<table class="member-list">
|
||||||
<tr>
|
<tr>
|
||||||
<th width="75%">邮箱</th>
|
<th width="4%"></th>
|
||||||
|
<th width="71%">邮箱</th>
|
||||||
<th width="25%">操作</th>
|
<th width="25%">操作</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
{% for member in admins %}
|
{% for member in admins %}
|
||||||
<tr>
|
<tr>
|
||||||
|
<td>{% avatar member.user_name 20 %}</td>
|
||||||
<td>{{ member.user_name }}</td>
|
<td>{{ member.user_name }}</td>
|
||||||
<td>
|
<td>
|
||||||
{% if member.user_name != request.user.username %}
|
{% if member.user_name != request.user.username %}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
from django.conf.urls.defaults import *
|
from django.conf.urls.defaults import *
|
||||||
|
|
||||||
from views import group_info, group_member_operations, group_add_admin, \
|
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, \
|
create_group_repo, group_joinrequest, attention, group_message_remove, \
|
||||||
group_remove_admin
|
group_remove_admin
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@ urlpatterns = patterns('',
|
|||||||
url(r'^(?P<group_id>[\d]+)/$', group_info, name='group_info'),
|
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/(?P<msg_id>[\d]+)/$', msg_reply, name='msg_reply'),
|
||||||
url(r'^reply/new/$', msg_reply_new, name='msg_reply_new'),
|
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'),
|
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),
|
(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'),
|
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
|
@login_required
|
||||||
@ctx_switch_required
|
@ctx_switch_required
|
||||||
@group_staff_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_id = int(group_id) # Checked by URL Conf
|
||||||
|
|
||||||
group = get_group(group_id)
|
group = get_group(group_id)
|
||||||
@@ -544,6 +544,7 @@ def group_members(request, group_id):
|
|||||||
for email in member_list:
|
for email in member_list:
|
||||||
mail_sended.send(sender=None, user=user, email=email)
|
mail_sended.send(sender=None, user=user, email=email)
|
||||||
|
|
||||||
|
mail_sended_list = []
|
||||||
if request.cloud_mode:
|
if request.cloud_mode:
|
||||||
if request.user.org:
|
if request.user.org:
|
||||||
# Can only invite org users to group.
|
# Can only invite org users to group.
|
||||||
@@ -582,6 +583,7 @@ def group_members(request, group_id):
|
|||||||
send_mail('您的好友在SeaCloud上将你加入到群组',
|
send_mail('您的好友在SeaCloud上将你加入到群组',
|
||||||
t.render(Context(c)), None, [email],
|
t.render(Context(c)), None, [email],
|
||||||
fail_silently=False)
|
fail_silently=False)
|
||||||
|
mail_sended_list.append(email)
|
||||||
except:
|
except:
|
||||||
data = json.dumps({'error': _(u'Failed to send mail.')})
|
data = json.dumps({'error': _(u'Failed to send mail.')})
|
||||||
return HttpResponse(data, status=500,
|
return HttpResponse(data, status=500,
|
||||||
@@ -612,6 +614,9 @@ def group_members(request, group_id):
|
|||||||
result['error'] = _(e.msg)
|
result['error'] = _(e.msg)
|
||||||
return HttpResponse(json.dumps(result), status=500,
|
return HttpResponse(json.dumps(result), status=500,
|
||||||
content_type=content_type)
|
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).'))
|
messages.success(request, _(u'Successfully added group member(s).'))
|
||||||
return HttpResponse(json.dumps('success'), status=200,
|
return HttpResponse(json.dumps('success'), status=200,
|
||||||
content_type=content_type)
|
content_type=content_type)
|
||||||
@@ -619,6 +624,7 @@ def group_members(request, group_id):
|
|||||||
### GET ###
|
### GET ###
|
||||||
members_all = ccnet_threaded_rpc.get_group_members(group_id)
|
members_all = ccnet_threaded_rpc.get_group_members(group_id)
|
||||||
admins = [ m for m in members_all if m.is_staff ]
|
admins = [ m for m in members_all if m.is_staff ]
|
||||||
|
|
||||||
contacts = Contact.objects.filter(user_email=user)
|
contacts = Contact.objects.filter(user_email=user)
|
||||||
|
|
||||||
return render_to_response('group/group_manage.html', {
|
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):
|
def user_profile(request, user):
|
||||||
user_nickname = ''
|
user_nickname = ''
|
||||||
user_intro = ''
|
user_intro = ''
|
||||||
err_msg = ''
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
user_check = User.objects.get(email=user)
|
user_check = User.objects.get(email=user)
|
||||||
@@ -76,7 +75,8 @@ def user_profile(request, user):
|
|||||||
user_nickname = profile.nickname
|
user_nickname = profile.nickname
|
||||||
user_intro = profile.intro
|
user_intro = profile.intro
|
||||||
else:
|
else:
|
||||||
err_msg = '该用户不存在'
|
nickname = user
|
||||||
|
intro = ''
|
||||||
|
|
||||||
if user == request.user.username or \
|
if user == request.user.username or \
|
||||||
Contact.objects.filter(user_email=request.user.username,
|
Contact.objects.filter(user_email=request.user.username,
|
||||||
@@ -84,16 +84,15 @@ def user_profile(request, user):
|
|||||||
new_user = False
|
new_user = False
|
||||||
else:
|
else:
|
||||||
new_user = True
|
new_user = True
|
||||||
|
print new_user
|
||||||
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,
|
'new_user': new_user,
|
||||||
'err_msg': err_msg,
|
}, context_instance=RequestContext(request))
|
||||||
},
|
|
||||||
context_instance=RequestContext(request))
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
def get_user_profile(request, user):
|
def get_user_profile(request, user):
|
||||||
data = {
|
data = {
|
||||||
'email': user,
|
'email': user,
|
||||||
@@ -116,7 +115,7 @@ def get_user_profile(request, user):
|
|||||||
data['user_nickname'] = profile.nickname
|
data['user_nickname'] = profile.nickname
|
||||||
data['user_intro'] = profile.intro
|
data['user_intro'] = profile.intro
|
||||||
else:
|
else:
|
||||||
data['err_msg'] = '该用户不存在'
|
data['user_intro'] = '他还未接受邀请。'
|
||||||
|
|
||||||
if user == request.user.username or \
|
if user == request.user.username or \
|
||||||
Contact.objects.filter(user_email=request.user.username,
|
Contact.objects.filter(user_email=request.user.username,
|
||||||
|
@@ -161,6 +161,7 @@ AVATAR_STORAGE_DIR = 'avatars'
|
|||||||
GROUP_AVATAR_STORAGE_DIR = 'avatars/groups'
|
GROUP_AVATAR_STORAGE_DIR = 'avatars/groups'
|
||||||
AVATAR_GRAVATAR_BACKUP = False
|
AVATAR_GRAVATAR_BACKUP = False
|
||||||
AVATAR_DEFAULT_URL = '/avatars/default.jpg'
|
AVATAR_DEFAULT_URL = '/avatars/default.jpg'
|
||||||
|
AVATAR_DEFAULT_NON_REGISTERED_URL = '/avatars/default-non-register.jpg'
|
||||||
GROUP_AVATAR_DEFAULT_URL = 'avatars/groups/default.png'
|
GROUP_AVATAR_DEFAULT_URL = 'avatars/groups/default.png'
|
||||||
AVATAR_MAX_AVATARS_PER_USER = 1
|
AVATAR_MAX_AVATARS_PER_USER = 1
|
||||||
AVATAR_CACHE_TIMEOUT = 24 * 60 * 60
|
AVATAR_CACHE_TIMEOUT = 24 * 60 * 60
|
||||||
|
Reference in New Issue
Block a user