return self.summary
def get_comments(self, private):
+ """
+ Gets the comments that have been made on this Influence. Each
+ comment gets its reply_form attribute set to a Form appropriate
+ for replying to the comment.
+
+ If private is True, private comments are included in this list.
+ """
def quote_reply(comment):
return "\n".join(["> " + l for l in comment.comment.split("\n")])
# Annotate each comment with a proper reply form
for comment in comments:
initial = { 'comment' : quote_reply(comment) }
- comment.reply_form = get_influence_comment_form(private, comment)(initial=initial)
-
+ prefix = "reply-to-%s" % (comment.pk)
+ FormClass = get_influence_comment_form(private, comment)
+ comment.reply_form = FormClass(initial=initial,
+ prefix=prefix)
return comments
class Meta:
return render_to_response('influences/influence_detail.html', context, RequestContext(request))
@login_required
-def influence_comment(request, edit_id=None, *args, **kwargs):
+def influence_comment(request, object_id, edit_id=None):
+ kwargs = {}
# Add the content_type, since we don't put in in the url explicitly
kwargs['content_type'] = ContentType.objects.get_for_model(Influence).id
# Find the comment to which we're replying, so we can get the right form for it.
reply_to = get_object_or_404(ThreadedComment, id=edit_id)
else:
reply_to = None
+
# Find the right form class
kwargs['form_class'] = get_influence_comment_form(request.user.is_staff, reply_to)
# Override the model, so we don't get a free comment, but a normal
# one. We can't use threadedcomments' comment view for that, since
# that hardcodes the form_class.
kwargs['model'] = ThreadedComment
- return free_comment(request, edit_id=edit_id, *args, **kwargs)
+ # Set a custom preview view
+ if parent_id:
+ kwargs['prefix'] = "reply-to-%s" % (parent_id)
+ return free_comment(request, object_id=object_id, edit_id=edit_id, **kwargs)
# vim: set sts=4 sw=4 expandtab: