mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-13 05:39:59 +00:00
Add nickname cache
This commit is contained in:
@@ -4,11 +4,14 @@ import re
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from django import template
|
from django import template
|
||||||
|
from django.core.cache import cache
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
|
|
||||||
|
from profile.models import Profile
|
||||||
|
from profile.settings import NICKNAME_CACHE_TIMEOUT, NICKNAME_CACHE_PREFIX
|
||||||
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
|
from seahub.shortcuts import get_first_object_or_none
|
||||||
|
|
||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
@@ -114,11 +117,12 @@ def translate_remain_time(value):
|
|||||||
|
|
||||||
@register.filter(name='email2nickname')
|
@register.filter(name='email2nickname')
|
||||||
def email2nickname(value):
|
def email2nickname(value):
|
||||||
try:
|
nickname = cache.get(NICKNAME_CACHE_PREFIX+value)
|
||||||
profile = Profile.objects.get(user=value)
|
if not nickname:
|
||||||
return profile.nickname
|
profile = get_first_object_or_none(Profile.objects.filter(user=value))
|
||||||
except Profile.DoesNotExist:
|
nickname = profile.nickname if profile else value.split('@')[0]
|
||||||
return value.split('@')[0]
|
cache.set(NICKNAME_CACHE_PREFIX+value, nickname, NICKNAME_CACHE_TIMEOUT)
|
||||||
|
return nickname
|
||||||
|
|
||||||
@register.filter(name='url_target_blank')
|
@register.filter(name='url_target_blank')
|
||||||
def url_target_blank(text):
|
def url_target_blank(text):
|
||||||
|
4
profile/settings.py
Normal file
4
profile/settings.py
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
from django.conf import settings
|
||||||
|
|
||||||
|
NICKNAME_CACHE_TIMEOUT = getattr(settings, 'NICKNAME_CACHE_TIMEOUT', 24 * 60 * 60)
|
||||||
|
NICKNAME_CACHE_PREFIX = getattr(settings, 'NICKNAME_CACHE_PREFIX', 'NICKNAME_')
|
@@ -7,9 +7,14 @@
|
|||||||
{% block right_panel %}
|
{% block right_panel %}
|
||||||
<div id="user-basic-info">
|
<div id="user-basic-info">
|
||||||
<h2>个人基本信息修改</h2>
|
<h2>个人基本信息修改</h2>
|
||||||
{% if modified %}
|
{% if messages %}
|
||||||
<p class="notification">修改成功。</p>
|
<ul class="messages hide">
|
||||||
|
{% for message in messages %}
|
||||||
|
<li class="info">{{ message }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
<label>头像:</label>{% avatar request.user.username 60 %}
|
<label>头像:</label>{% avatar request.user.username 60 %}
|
||||||
<a href="{{ SITE_ROOT }}avatar/add/">更改</a><br />
|
<a href="{{ SITE_ROOT }}avatar/add/">更改</a><br />
|
||||||
|
14
profile/utils.py
Normal file
14
profile/utils.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
from django.core.cache import cache
|
||||||
|
|
||||||
|
from models import Profile
|
||||||
|
from settings import NICKNAME_CACHE_PREFIX, NICKNAME_CACHE_TIMEOUT
|
||||||
|
from seahub.shortcuts import get_first_object_or_none
|
||||||
|
|
||||||
|
def refresh_cache(user):
|
||||||
|
"""
|
||||||
|
Function to be called when change user nickname.
|
||||||
|
"""
|
||||||
|
profile = get_first_object_or_none(Profile.objects.filter(user=user))
|
||||||
|
nickname = profile.nickname if profile else value.split('@')[0]
|
||||||
|
cache.set(NICKNAME_CACHE_PREFIX+user, nickname, NICKNAME_CACHE_TIMEOUT)
|
||||||
|
|
@@ -4,6 +4,7 @@ from django.core.urlresolvers import reverse
|
|||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.shortcuts import render_to_response, get_object_or_404
|
from django.shortcuts import render_to_response, get_object_or_404
|
||||||
from django.template import Context, RequestContext
|
from django.template import Context, RequestContext
|
||||||
|
from django.contrib import messages
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
|
|
||||||
from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_binding_peerids
|
from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_binding_peerids
|
||||||
@@ -11,18 +12,20 @@ from pysearpc import SearpcError
|
|||||||
|
|
||||||
from forms import ProfileForm
|
from forms import ProfileForm
|
||||||
from models import Profile
|
from models import Profile
|
||||||
from utils import render_error
|
from utils import refresh_cache
|
||||||
|
from seahub.utils import render_error
|
||||||
from seahub.base.accounts import User
|
from seahub.base.accounts import User
|
||||||
from seahub.contacts.models import Contact
|
from seahub.contacts.models import Contact
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def edit_profile(request):
|
def edit_profile(request):
|
||||||
modified = False
|
"""
|
||||||
|
Show and edit user profile.
|
||||||
|
"""
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = ProfileForm(request.POST)
|
form = ProfileForm(request.POST)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
modified = True
|
|
||||||
nickname = form.cleaned_data['nickname']
|
nickname = form.cleaned_data['nickname']
|
||||||
intro = form.cleaned_data['intro']
|
intro = form.cleaned_data['intro']
|
||||||
try:
|
try:
|
||||||
@@ -34,6 +37,13 @@ def edit_profile(request):
|
|||||||
profile.nickname = nickname
|
profile.nickname = nickname
|
||||||
profile.intro = intro
|
profile.intro = intro
|
||||||
profile.save()
|
profile.save()
|
||||||
|
messages.add_message(request, messages.INFO, u'修改成功')
|
||||||
|
# refresh nickname cache
|
||||||
|
refresh_cache(request.user.username)
|
||||||
|
|
||||||
|
return HttpResponseRedirect(reverse('edit_profile'))
|
||||||
|
else:
|
||||||
|
messages.add_message(request, messages.ERROR, u'修改失败')
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
profile = Profile.objects.get(user=request.user.username)
|
profile = Profile.objects.get(user=request.user.username)
|
||||||
@@ -46,7 +56,6 @@ def edit_profile(request):
|
|||||||
|
|
||||||
return render_to_response('profile/set_profile.html', {
|
return render_to_response('profile/set_profile.html', {
|
||||||
'form': form,
|
'form': form,
|
||||||
'modified': modified,
|
|
||||||
}, context_instance=RequestContext(request))
|
}, context_instance=RequestContext(request))
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
Reference in New Issue
Block a user