1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-13 22:01:06 +00:00
Files
seahub/profile/views.py

130 lines
4.1 KiB
Python
Raw Normal View History

2012-06-20 19:14:18 +08:00
# encoding: utf-8
2012-06-23 16:12:33 +08:00
import simplejson as json
2012-06-05 19:38:28 +08:00
from django.core.urlresolvers import reverse
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404
from django.template import Context, RequestContext
2012-08-14 13:18:55 +08:00
from django.contrib import messages
from django.contrib.auth.decorators import login_required
2012-10-29 14:24:04 +08:00
from django.utils.translation import ugettext as _
2012-06-25 20:42:19 +08:00
from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_binding_peerids
from pysearpc import SearpcError
2012-06-21 20:53:13 +08:00
from forms import ProfileForm
from models import Profile
2012-08-14 13:18:55 +08:00
from utils import refresh_cache
from seahub.utils import render_error
from seahub.base.accounts import User
2012-06-21 20:53:13 +08:00
from seahub.contacts.models import Contact
2012-06-21 20:53:13 +08:00
@login_required
def edit_profile(request):
2012-08-14 13:18:55 +08:00
"""
Show and edit user profile.
"""
if request.method == 'POST':
2012-06-21 20:53:13 +08:00
form = ProfileForm(request.POST)
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()
profile.user = request.user.username
profile.nickname = nickname
profile.intro = intro
profile.save()
2012-10-30 11:27:01 +08:00
messages.success(request, _(u'Successfully edited profile.'))
2012-08-14 13:18:55 +08:00
# refresh nickname cache
refresh_cache(request.user.username)
return HttpResponseRedirect(reverse('edit_profile'))
else:
2012-10-29 14:24:04 +08:00
messages.error(request, _(u'Failed to edit profile'))
2012-06-21 20:53:13 +08:00
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', {
2012-06-21 20:53:13 +08:00
'form': form,
}, context_instance=RequestContext(request))
2012-06-20 19:14:18 +08:00
2012-06-21 20:53:13 +08:00
@login_required
def user_profile(request, username_or_id):
2012-06-20 19:14:18 +08:00
user_nickname = ''
user_intro = ''
user = None
# fetch the user by username or id, try id first
2012-06-21 20:53:13 +08:00
try:
user_id = int(username_or_id)
try:
user = User.objects.get(id=user_id)
except:
pass
except ValueError:
try:
user = User.objects.get(email=username_or_id)
except User.DoesNotExist:
pass
2012-06-20 19:14:18 +08:00
if user:
2012-06-21 20:53:13 +08:00
profile = Profile.objects.filter(user=user)
if profile:
profile = profile[0]
user_nickname = profile.nickname
user_intro = profile.intro
2012-06-20 19:14:18 +08:00
else:
user_nickname = ""
2012-10-29 14:24:04 +08:00
user_intro = _(u'Has not accepted invitation yet')
2012-06-21 20:53:13 +08:00
2012-06-20 19:14:18 +08:00
return render_to_response('profile/user_profile.html', {
'email': user.username,
2012-10-22 17:50:09 +08:00
'nickname': user_nickname,
'intro': user_intro,
}, context_instance=RequestContext(request))
2012-06-23 16:12:33 +08:00
2012-10-22 17:50:09 +08:00
@login_required
2012-06-23 16:12:33 +08:00
def get_user_profile(request, user):
data = {
'email': user,
'user_nickname': '',
'user_intro': '',
'err_msg': '',
'new_user': ''
}
content_type = 'application/json; charset=utf-8'
2012-06-23 16:12:33 +08:00
try:
user_check = User.objects.get(email=user)
except User.DoesNotExist:
2012-06-23 16:12:33 +08:00
user_check = None
if user_check:
profile = Profile.objects.filter(user=user)
if profile:
profile = profile[0]
data['user_nickname'] = profile.nickname
data['user_intro'] = profile.intro
else:
2012-10-29 14:24:04 +08:00
data['user_intro'] = _(u'Has not accepted invitation yet')
2012-06-23 16:12:33 +08:00
if user == request.user.username or \
Contact.objects.filter(user_email=request.user.username,
contact_email=user).count() > 0:
data['new_user'] = False
else:
data['new_user'] = True
return HttpResponse(json.dumps(data), content_type=content_type)