From 03652c7f2b3a71d814fba818d3991b309c9cb888 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Fri, 14 Sep 2007 22:36:15 +0000 Subject: [PATCH] Fixed #3091 -- django.contrib.comments views now accept extra_context and context_processors arguments. Thanks, Eric Floehr and __hawkeye__ git-svn-id: http://code.djangoproject.com/svn/django/trunk@6236 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/comments/views/comments.py | 16 +++++++++------ django/contrib/comments/views/karma.py | 6 ++++-- django/contrib/comments/views/userflags.py | 24 ++++++++++++++-------- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/django/contrib/comments/views/comments.py b/django/contrib/comments/views/comments.py index fbec04c8eb..67da5759ac 100644 --- a/django/contrib/comments/views/comments.py +++ b/django/contrib/comments/views/comments.py @@ -155,7 +155,7 @@ class PublicFreeCommentManipulator(oldforms.Manipulator): c.save() return c -def post_comment(request): +def post_comment(request, extra_context=None, context_processors=None): """ Post a comment @@ -185,6 +185,7 @@ def post_comment(request): rating_choices choice of ratings """ + if extra_context is None: extra_context = {} if not request.POST: raise Http404, _("Only POSTs are allowed") try: @@ -244,7 +245,7 @@ def post_comment(request): 'ratings_required': RATINGS_REQUIRED in option_list, 'rating_range': rating_range, 'rating_choices': rating_choices, - }, context_instance=RequestContext(request)) + }, context_instance=RequestContext(request, extra_context, context_processors)) elif 'post' in request.POST: # If the IP is banned, mail the admins, do NOT save the comment, and # serve up the "Thanks for posting" page as if the comment WAS posted. @@ -257,7 +258,7 @@ def post_comment(request): else: raise Http404, _("The comment form didn't provide either 'preview' or 'post'") -def post_free_comment(request): +def post_free_comment(request, extra_context=None, context_processors=None): """ Post a free comment (not requiring a log in) @@ -277,6 +278,7 @@ def post_free_comment(request): security hash (must be included in a posted form to succesfully post a comment). """ + if extra_context is None: extra_context = {} if not request.POST: raise Http404, _("Only POSTs are allowed") try: @@ -307,7 +309,7 @@ def post_free_comment(request): 'options': options, 'target': target, 'hash': security_hash, - }, context_instance=RequestContext(request)) + }, context_instance=RequestContext(request, extra_context, context_processors)) elif 'post' in request.POST: # If the IP is banned, mail the admins, do NOT save the comment, and # serve up the "Thanks for posting" page as if the comment WAS posted. @@ -321,7 +323,7 @@ def post_free_comment(request): else: raise Http404, _("The comment form didn't provide either 'preview' or 'post'") -def comment_was_posted(request): +def comment_was_posted(request, extra_context=None, context_processors=None): """ Display "comment was posted" success page @@ -330,6 +332,7 @@ def comment_was_posted(request): object The object the comment was posted on """ + if extra_context is None: extra_context = {} obj = None if 'c' in request.GET: content_type_id, object_id = request.GET['c'].split(':') @@ -338,4 +341,5 @@ def comment_was_posted(request): obj = content_type.get_object_for_this_type(pk=object_id) except ObjectDoesNotExist: pass - return render_to_response('comments/posted.html', {'object': obj}, context_instance=RequestContext(request)) + return render_to_response('comments/posted.html', {'object': obj}, + context_instance=RequestContext(request, extra_context, context_processors)) diff --git a/django/contrib/comments/views/karma.py b/django/contrib/comments/views/karma.py index c6ad301dee..7c0e284ae9 100644 --- a/django/contrib/comments/views/karma.py +++ b/django/contrib/comments/views/karma.py @@ -4,7 +4,7 @@ from django.template import RequestContext from django.contrib.comments.models import Comment, KarmaScore from django.utils.translation import ugettext as _ -def vote(request, comment_id, vote): +def vote(request, comment_id, vote, extra_context=None, context_processors=None): """ Rate a comment (+1 or -1) @@ -13,6 +13,7 @@ def vote(request, comment_id, vote): comment `comments.comments` object being rated """ + if extra_context is None: extra_context = {} rating = {'up': 1, 'down': -1}.get(vote, False) if not rating: raise Http404, "Invalid vote" @@ -27,4 +28,5 @@ def vote(request, comment_id, vote): KarmaScore.objects.vote(request.user.id, comment_id, rating) # Reload comment to ensure we have up to date karma count comment = Comment.objects.get(pk=comment_id) - return render_to_response('comments/karma_vote_accepted.html', {'comment': comment}, context_instance=RequestContext(request)) + return render_to_response('comments/karma_vote_accepted.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors)) diff --git a/django/contrib/comments/views/userflags.py b/django/contrib/comments/views/userflags.py index 76f14ef19c..91518dc5dd 100644 --- a/django/contrib/comments/views/userflags.py +++ b/django/contrib/comments/views/userflags.py @@ -6,7 +6,7 @@ from django.contrib.auth.decorators import login_required from django.http import HttpResponseRedirect from django.conf import settings -def flag(request, comment_id): +def flag(request, comment_id, extra_context=None, context_processors=None): """ Flags a comment. Confirmation on GET, action on POST. @@ -15,18 +15,22 @@ def flag(request, comment_id): comment the flagged `comments.comments` object """ + if extra_context is None: extra_context = {} comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID) if request.POST: UserFlag.objects.flag(comment, request.user) return HttpResponseRedirect('%sdone/' % request.path) - return render_to_response('comments/flag_verify.html', {'comment': comment}, context_instance=RequestContext(request)) + return render_to_response('comments/flag_verify.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors)) flag = login_required(flag) -def flag_done(request, comment_id): +def flag_done(request, comment_id, extra_context=None, context_processors=None): + if extra_context is None: extra_context = {} comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID) - return render_to_response('comments/flag_done.html', {'comment': comment}, context_instance=RequestContext(request)) + return render_to_response('comments/flag_done.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors)) -def delete(request, comment_id): +def delete(request, comment_id, extra_context=None, context_processors=None): """ Deletes a comment. Confirmation on GET, action on POST. @@ -35,6 +39,7 @@ def delete(request, comment_id): comment the flagged `comments.comments` object """ + if extra_context is None: extra_context = {} comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID) if not Comment.objects.user_is_moderator(request.user): raise Http404 @@ -46,9 +51,12 @@ def delete(request, comment_id): m = ModeratorDeletion(None, request.user.id, comment.id, None) m.save() return HttpResponseRedirect('%sdone/' % request.path) - return render_to_response('comments/delete_verify.html', {'comment': comment}, context_instance=RequestContext(request)) + return render_to_response('comments/delete_verify.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors)) delete = login_required(delete) -def delete_done(request, comment_id): +def delete_done(request, comment_id, extra_context=None, context_processors=None): + if extra_context is None: extra_context = {} comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID) - return render_to_response('comments/delete_done.html', {'comment': comment}, context_instance=RequestContext(request)) + return render_to_response('comments/delete_done.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors))