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)