diff -r 5ff1fc726848 -r c6bca38c1cbf pytask/profile/views.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pytask/profile/views.py Sat Jan 08 11:20:57 2011 +0530 @@ -0,0 +1,149 @@ +from django.shortcuts import render_to_response, redirect +from django.http import Http404 + +from django.contrib.auth.decorators import login_required +from django.core.context_processors import csrf +from django.views.decorators.csrf import csrf_protect + +from pytask.profile.forms import EditProfileForm +from pytask.profile.utils import get_notification + +@login_required +def view_profile(request): + """ Display the profile information. + """ + + user = request.user + profile = user.get_profile() + + context = {"user": user, + "profile": profile, + } + return render_to_response("profile/view.html", context) + +@login_required +def edit_profile(request): + """ Make only a few fields editable. + """ + + user = request.user + profile = user.get_profile() + + context = {"user": user, + "profile": profile, + } + + context.update(csrf(request)) + + if request.method == "POST": + form = EditProfileForm(request.POST, instance=profile) + + if form.is_valid(): + form.save() + return redirect("/profile/view") + else: + context.update({"form":form}) + return render_to_response("profile/edit.html", context) + else: + form = EditProfileForm(instance=profile) + context.update({"form":form}) + return render_to_response("profile/edit.html", context) + +@login_required +def browse_notifications(request): + """ get the list of notifications that are not deleted and display in + datetime order.""" + + user = request.user + + active_notifications = user.notification_sent_to.filter(is_deleted=False).order_by('sent_date').reverse() + + context = {'user':user, + 'notifications':active_notifications, + } + + return render_to_response('profile/browse_notifications.html', context) + +@login_required +def view_notification(request, nid): + """ get the notification depending on nid. + Display it. + """ + + user = request.user + newest, newer, notification, older, oldest = get_notification(nid, user) + + if not notification: + raise Http404 + + notification.is_read = True + notification.save() + + context = {'user':user, + 'notification':notification, + 'newest':newest, + 'newer':newer, + 'older':older, + 'oldest':oldest, + } + + return render_to_response('profile/view_notification.html', context) + +@login_required +def delete_notification(request, nid): + """ check if the user owns the notification and delete it. + """ + + user = request.user + newest, newer, notification, older, oldest = get_notification(nid, user) + + if not notification: + raise Http404 + + notification.is_deleted = True + notification.save() + + context = {'user':user, + 'notification':notification, + 'newest':newest, + 'newer':newer, + 'older':older, + 'oldest':oldest, + } + + if older: + redirect_url = "/profile/notf/view/nid=%s"%older.uniq_key + else: + redirect_url = "/profile/notf/browse" + + return redirect(redirect_url) + +@login_required +def unread_notification(request, nid): + + """ check if the user owns the notification and delete it. + """ + + user = request.user + newest, newer, notification, older, oldest = get_notification(nid, user) + + if not notification: + raise Http404 + + notification.is_read = False + notification.save() + + context = {'user':user, + 'notification':notification, + 'newest':newest, + 'newer':newer, + 'older':older, + 'oldest':oldest, + } + + if older: + redirect_url = "/profile/notf/view/nid=%s"%older.uniq_key + else: + redirect_url = "/profile/notf/browse" + + return redirect(redirect_url)