def render(self, context): from django.conf.settings import COMMENTS_BANNED_USERS_GROUP, SITE_ID get_list_function = self.free and freecomments.get_list or comments.get_list_with_karma if self.context_var_name is not None: try: self.obj_id = template.resolve_variable(self.context_var_name, context) except template.VariableDoesNotExist: return '' kwargs = { 'object_id__exact': self.obj_id, 'content_type__package__label__exact': self.package, 'content_type__python_module_name__exact': self.module, 'site__id__exact': SITE_ID, 'select_related': True, 'order_by': (self.ordering + 'submit_date',), } kwargs.update(self.extra_kwargs) if not self.free and COMMENTS_BANNED_USERS_GROUP: kwargs['select'] = {'is_hidden': 'user_id IN (SELECT user_id FROM auth_users_groups WHERE group_id = %s)' % COMMENTS_BANNED_USERS_GROUP} comment_list = get_list_function(**kwargs) if not self.free: if context.has_key('user') and not context['user'].is_anonymous(): user_id = context['user'].id context['user_can_moderate_comments'] = comments.user_is_moderator(context['user']) else: user_id = None context['user_can_moderate_comments'] = False # Only display comments by banned users to those users themselves. if COMMENTS_BANNED_USERS_GROUP: comment_list = [c for c in comment_list if not c.is_hidden or (user_id == c.user_id)] context[self.var_name] = comment_list return ''
def delete(request, comment_id): """ Deletes a comment. Confirmation on GET, action on POST. Templates: `comments/delete_verify`, `comments/delete_done` Context: comment the flagged `comments.comments` object """ try: comment = comments.get_object(pk=comment_id, site__id__exact=SITE_ID) except comments.CommentDoesNotExist: raise Http404 if not comments.user_is_moderator(request.user): raise Http404 if request.POST: # If the comment has already been removed, silently fail. if not comment.is_removed: comment.is_removed = True comment.save() m = moderatordeletions.ModeratorDeletion(None, request.user.id, comment.id, None) m.save() return HttpResponseRedirect('%sdone/' % request.path) return render_to_response('comments/delete_verify', {'comment': comment}, context_instance=DjangoContext(request))