]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/views/commands.py
Adds better permalinks to answers, computing the position of an answer in the list.
[osqa.git] / forum / views / commands.py
index 63c65063ea044d8ca82b1aa8b208dbd31df74842..3c4907688a531a693fac96a68f782ffb4fc4b62a 100644 (file)
@@ -2,7 +2,7 @@ import datetime
 from forum import settings
 from django.core.exceptions import ObjectDoesNotExist
 from django.utils import simplejson
-from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden, Http404
+from django.http import HttpResponse, HttpResponseRedirect, Http404
 from django.shortcuts import get_object_or_404, render_to_response
 from django.utils.translation import ungettext, ugettext as _
 from django.template import RequestContext
@@ -12,8 +12,8 @@ from forum.actions import *
 from django.core.urlresolvers import reverse
 from django.contrib.auth.decorators import login_required
 from forum.utils.decorators import ajax_method, ajax_login_required
-from forum.modules.decorators import decoratable
 from decorators import command, CommandException, RefreshPageCommand
+from forum.modules import decorate
 from forum import settings
 import logging
 
@@ -58,7 +58,7 @@ class CannotDoubleActionException(CommandException):
                 )
 
 
-@command
+@decorate.withfn(command)
 def vote_post(request, id, vote_type):
     post = get_object_or_404(Node, id=id).leaf
     user = request.user
@@ -114,7 +114,7 @@ def vote_post(request, id, vote_type):
 
     return response
 
-@command
+@decorate.withfn(command)
 def flag_post(request, id):
     if not request.POST:
         return render_to_response('node/report.html', {'types': settings.FLAG_TYPES})
@@ -150,7 +150,7 @@ def flag_post(request, id):
 
     return {'message': _("Thank you for your report. A moderator will review your submission shortly.")}
 
-@command
+@decorate.withfn(command)
 def like_comment(request, id):
     comment = get_object_or_404(Comment, id=id)
     user = request.user
@@ -180,7 +180,7 @@ def like_comment(request, id):
     }
     }
 
-@command
+@decorate.withfn(command)
 def delete_comment(request, id):
     comment = get_object_or_404(Comment, id=id)
     user = request.user
@@ -200,7 +200,7 @@ def delete_comment(request, id):
     }
     }
 
-@command
+@decorate.withfn(command)
 def mark_favorite(request, id):
     question = get_object_or_404(Question, id=id)
 
@@ -222,8 +222,7 @@ def mark_favorite(request, id):
     }
     }
 
-@decoratable
-@command
+@decorate.withfn(command)
 def comment(request, id):
     post = get_object_or_404(Node, id=id)
     user = request.user
@@ -264,7 +263,7 @@ def comment(request, id):
         return {
         'commands': {
         'insert_comment': [
-                id, comment.id, comment.comment, user.username, user.get_profile_url(),
+                id, comment.id, comment.comment, user.decorated_name, user.get_profile_url(),
                 reverse('delete_comment', kwargs={'id': comment.id}),
                 reverse('node_markdown', kwargs={'id': comment.id})
                 ]
@@ -277,7 +276,7 @@ def comment(request, id):
         }
         }
 
-@command
+@decorate.withfn(command)
 def node_markdown(request, id):
     user = request.user
 
@@ -288,7 +287,7 @@ def node_markdown(request, id):
     return HttpResponse(node.body, mimetype="text/plain")
 
 
-@command
+@decorate.withfn(command)
 def accept_answer(request, id):
     user = request.user
 
@@ -318,7 +317,7 @@ def accept_answer(request, id):
 
     return {'commands': commands}
 
-@command
+@decorate.withfn(command)
 def delete_post(request, id):
     post = get_object_or_404(Node, id=id)
     user = request.user
@@ -341,7 +340,7 @@ def delete_post(request, id):
 
     return ret
 
-@command
+@decorate.withfn(command)
 def close(request, id, close):
     if close and not request.POST:
         return render_to_response('node/report.html', {'types': settings.CLOSE_TYPES})
@@ -370,7 +369,7 @@ def close(request, id, close):
 
     return RefreshPageCommand()
 
-@command
+@decorate.withfn(command)
 def wikify(request, id):
     node = get_object_or_404(Node, id=id)
     user = request.user
@@ -394,7 +393,7 @@ def wikify(request, id):
 
     return RefreshPageCommand()
 
-@command
+@decorate.withfn(command)
 def convert_to_comment(request, id):
     user = request.user
     answer = get_object_or_404(Answer, id=id)
@@ -427,7 +426,7 @@ def convert_to_comment(request, id):
 
     return RefreshPageCommand()
 
-@command
+@decorate.withfn(command)
 def subscribe(request, id):
     question = get_object_or_404(Question, id=id)
 
@@ -481,10 +480,10 @@ def matching_tags(request):
 
 def related_questions(request):
     if request.POST and request.POST.get('title', None):
+        can_rank, questions = Question.objects.search(request.POST['title'])
         return HttpResponse(simplejson.dumps(
                 [dict(title=q.title, url=q.get_absolute_url(), score=q.score, summary=q.summary)
-                 for q in Question.objects.search(request.POST['title']).filter_state(deleted=False)[0:10]]),
-                            mimetype="application/json")
+                 for q in questions.filter_state(deleted=False)[0:10]]), mimetype="application/json")
     else:
         raise Http404()