Add a navigation link for managing subscriptions (for starters, just unsubbing).

(imported from commit 23274a8790bf1f017e9c33db52bf746e291f23ba)
This commit is contained in:
Jessica McKellar
2012-08-30 12:04:35 -04:00
parent 111dde0075
commit 7e56e7a0f4
5 changed files with 71 additions and 3 deletions

View File

@@ -9,7 +9,7 @@ from django.utils.timezone import utc
from django.contrib.auth.models import User
from zephyr.models import Zephyr, UserProfile, ZephyrClass, Subscription, \
Recipient, filter_by_subscriptions
Recipient, filter_by_subscriptions, get_display_recipient
from zephyr.forms import RegistrationForm
import tornado.web
@@ -140,3 +140,31 @@ def zephyr(request):
new_zephyr.save()
return HttpResponse('')
@login_required
def subscriptions(request):
userprofile = UserProfile.objects.get(user=request.user)
subscriptions = Subscription.objects.filter(userprofile_id=userprofile, active=True)
# For now, don't display the subscription for your ability to receive personals.
sub_names = [get_display_recipient(sub.recipient_id) for sub in subscriptions if sub.recipient_id.type != "personal"]
return render_to_response('zephyr/subscriptions.html',
{'subscriptions': sub_names, 'user_profile': userprofile},
context_instance=RequestContext(request))
@login_required
def manage_subscriptions(request):
if not request.POST:
# Do something reasonable.
return
user_profile = UserProfile.objects.get(user=request.user)
unsubs = request.POST.getlist('subscription')
for sub_name in unsubs:
zephyr_class = ZephyrClass.objects.get(name=sub_name)
subscription = Subscription.objects.get(
userprofile_id=user_profile.id, recipient_id=zephyr_class.id)
subscription.active = False
subscription.save()
return HttpResponseRedirect(reverse('zephyr.views.subscriptions'))