Mercurial > public > sg101
diff gpp/bio/views.py @ 1:dbd703f7d63a
Initial import of sg101 stuff from private repository.
author | gremmie |
---|---|
date | Mon, 06 Apr 2009 02:43:12 +0000 |
parents | |
children | 74f04122295e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gpp/bio/views.py Mon Apr 06 02:43:12 2009 +0000 @@ -0,0 +1,138 @@ +""" +Views for the bio application. +""" + +from django.shortcuts import render_to_response +from django.shortcuts import get_object_or_404 +from django.template import RequestContext +from django.contrib import auth +from django.http import HttpResponseRedirect +from django.core.urlresolvers import reverse +from django.contrib.auth.decorators import login_required + +from bio.models import UserProfile +from bio.forms import UploadAvatarForm +from bio.forms import EditUserForm +from bio.forms import EditUserProfileForm +from core.paginator import DiggPaginator + +####################################################################### + +def get_profile(user): + try: + profile = user.get_profile() + except: + profile = UserProfile() + profile.user = user + return profile + +####################################################################### + +def member_list(request, type='user', page=1): + if type == 'user': + users = auth.models.User.objects.all().order_by('username') + else: + users = auth.models.User.objects.all().order_by('date_joined') + + paginator = DiggPaginator(users, 10, body=5, tail=3, margin=3, padding=2) + try: + the_page = paginator.page(int(page)) + except InvalidPage: + raise Http404 + + return render_to_response('bio/members.html', { + 'page': the_page, + 'type': type, + }, + context_instance = RequestContext(request)) + +####################################################################### + +@login_required +def my_profile(request): + profile = get_profile(request.user) + + return render_to_response('bio/view_profile.html', { + 'subject': request.user, + 'profile': profile, + 'hide_email': False, + 'this_is_me': True, + }, + context_instance = RequestContext(request)) + +####################################################################### + +@login_required +def view_profile(request, username): + + user = get_object_or_404(auth.models.User, username = username) + if user == request.user: + return HttpResponseRedirect(reverse('bio.views.my_profile')) + + profile = get_profile(user) + + # work around MySQL's handling of Boolean + hide_email = bool(profile.hide_email) + + return render_to_response('bio/view_profile.html', { + 'subject': user, + 'profile': profile, + 'hide_email': hide_email, + 'this_is_me': False, + }, + context_instance = RequestContext(request)) + +####################################################################### + +@login_required +def edit_profile(request): + if request.method == 'POST': + if request.POST.get('submit_button', 'Cancel') == 'Cancel': + return HttpResponseRedirect(reverse('bio.views.my_profile')) + profile = get_profile(request.user) + user_form = EditUserForm(request.POST, instance=request.user) + profile_form = EditUserProfileForm(request.POST, instance=profile) + if user_form.is_valid() and profile_form.is_valid(): + user_form.save() + profile = profile_form.save(commit=False) + profile.user = request.user + profile.save() + return HttpResponseRedirect(reverse('bio.views.my_profile')) + else: + profile = get_profile(request.user) + user_form = EditUserForm(instance=request.user) + profile_form = EditUserProfileForm(instance=profile) + + return render_to_response('bio/edit_profile.html', { + 'user_form': user_form, + 'profile_form': profile_form, + }, + context_instance = RequestContext(request)) + +####################################################################### + +@login_required +def change_avatar(request): + if request.method == 'POST': + form = UploadAvatarForm(request.POST, request.FILES) + if form.is_valid(): + profile = get_profile(request.user) + file = form.get_file() + if profile.avatar.name != '': + profile.avatar.delete(save=False) + if file is not None: + profile.avatar.save(form.get_filename(), file, save=False) + profile.save() + + request.user.message_set.create(message='Avatar updated.') + return HttpResponseRedirect(reverse('bio-me')) + else: + form = UploadAvatarForm() + + return render_to_response('bio/avatar.html', { + 'form': form, + }, + context_instance = RequestContext(request)) + + +# vim: ts=4 sw=4