+def influence_list(request):
+ # Only show this player's influences
+ os = Influence.objects.filter(character__player=request.user)
+ return render_to_response('influences/influence_list.html', {'object_list' : os}, RequestContext(request))
+
+def quote_reply(comment):
+ return "\n".join(["> " + l for l in comment.comment.split("\n")])
+
+@login_required
+def influence_detail(request, object_id):
+
+ o = Influence.objects.get(pk=object_id)
+ # Don't show other player's influences
+ if (o.character.player != request.user):
+ return HttpResponseForbidden("Forbidden -- Trying to view influences of somebody else's character")
+
+ # Show all comments to staff, but only public comments to other
+ # users
+ if request.user.is_staff:
+ comments = ThreadedComment.objects.get_tree(o)
+ else:
+ comments = ThreadedComment.public.get_tree(o)
+
+ # Annotate each comment with a proper reply form
+ for comment in comments:
+ initial = { 'comment' : quote_reply(comment) }
+ comment.reply_form = get_influence_comment_form(request.user.is_staff, comment)(initial=initial)
+
+ context = {
+ 'object' : o,
+ 'comments' : comments,
+ 'comment_form' : get_influence_comment_form(request.user.is_staff, None)()
+ }
+ return render_to_response('influences/influence_detail.html', context, RequestContext(request))