From df0ea0655cf333934e58b790dee0c44a8a75f95e Mon Sep 17 00:00:00 2001 From: Brian Rosner Date: Sat, 8 Sep 2012 16:29:17 -0600 Subject: [PATCH] implemented more result notification behavior --- symposion/reviews/urls.py | 1 + symposion/reviews/views.py | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/symposion/reviews/urls.py b/symposion/reviews/urls.py index 0e2a2c6c..b0968bca 100644 --- a/symposion/reviews/urls.py +++ b/symposion/reviews/urls.py @@ -11,6 +11,7 @@ urlpatterns = patterns("symposion.reviews.views", url(r"^section/(?P[\w\-]+)/admin/accept/$", "review_bulk_accept", name="review_bulk_accept"), url(r"^section/(?P[\w\-]+)/notification/(?P\w+)/$", "result_notification", name="result_notification"), url(r"^section/(?P[\w\-]+)/notification/(?P\w+)/prepare/$", "result_notification_prepare", name="result_notification_prepare"), + url(r"^section/(?P[\w\-]+)/notification/(?P\w+)/send/$", "result_notification_send", name="result_notification_send"), url(r"^review/(?P\d+)/$", "review_detail", name="review_detail"), diff --git a/symposion/reviews/views.py b/symposion/reviews/views.py index 06f8b8a6..f7c4fe9c 100644 --- a/symposion/reviews/views.py +++ b/symposion/reviews/views.py @@ -414,6 +414,7 @@ def result_notification_prepare(request, section_slug, status): "section_slug": section_slug, "status": status, "proposals": proposals, + "proposal_pks": " ".join(proposal_pks), } return render(request, "reviews/result_notification_prepare.html", ctx) @@ -422,4 +423,22 @@ def result_notification_send(request, section_slug, status): if request.method != "POST": return HttpResponseNotAllowed(["POST"]) - # @@@ discuss with jtauber about how to handle this + if "proposal_pks" not in request.POST: + return HttpResponseBadRequest() + + try: + proposal_pks = [int(pk) for pk in request.POST["proposal_pks"]] + except ValueError: + return HttpResponseBadRequest() + + proposals = ProposalBase.objects.filter( + kind__section__slug=section_slug, + result__status=status, + ) + proposals = proposals.filter(pk__in=proposal_pks) + proposals = proposals.select_related("speaker__user", "result") + proposals = proposals.select_subclasses() + + # create ResultNotification objects and send + + return redirect("result_notification", section_slug=section_slug, status=status)