]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/views/commands.py
Should fix the missing admin items problem.
[osqa.git] / forum / views / commands.py
index 4aa96f8a1f9cadbd8363c36c25672aa147960417..aeb01e54b2a387d3a8795cf30cb83ef0b8a2bc28 100644 (file)
@@ -73,6 +73,7 @@ def vote_post(request, id, vote_type):
         raise NotEnoughRepPointsException(vote_type == 'up' and _('upvote') or _('downvote'))
 
     user_vote_count_today = user.get_vote_count_today()
         raise NotEnoughRepPointsException(vote_type == 'up' and _('upvote') or _('downvote'))
 
     user_vote_count_today = user.get_vote_count_today()
+    user_can_vote_count_today = user.can_vote_count_today()
 
     if user_vote_count_today >= user.can_vote_count_today():
         raise NotEnoughLeftException(_('votes'), str(settings.MAX_VOTES_PER_DAY))
 
     if user_vote_count_today >= user.can_vote_count_today():
         raise NotEnoughLeftException(_('votes'), str(settings.MAX_VOTES_PER_DAY))
@@ -91,13 +92,11 @@ def vote_post(request, id, vote_type):
                     )
 
         old_vote.cancel(ip=request.META['REMOTE_ADDR'])
                     )
 
         old_vote.cancel(ip=request.META['REMOTE_ADDR'])
-        score_inc += (old_vote.__class__ == VoteDownAction) and 1 or -1
-
-    if old_vote.__class__ != new_vote_cls:
-        new_vote_cls(user=user, node=post, ip=request.META['REMOTE_ADDR']).save()
-        score_inc += (new_vote_cls == VoteUpAction) and 1 or -1
-    else:
+        score_inc = (old_vote.__class__ == VoteDownAction) and 1 or -1
         vote_type = "none"
         vote_type = "none"
+    else:
+        new_vote_cls(user=user, node=post, ip=request.META['REMOTE_ADDR']).save()
+        score_inc = (new_vote_cls == VoteUpAction) and 1 or -1
 
     response = {
     'commands': {
 
     response = {
     'commands': {
@@ -106,7 +105,7 @@ def vote_post(request, id, vote_type):
     }
     }
 
     }
     }
 
-    votes_left = (int(settings.MAX_VOTES_PER_DAY) - user_vote_count_today) + (vote_type == 'none' and -1 or 1)
+    votes_left = (user_can_vote_count_today - user_vote_count_today) + (vote_type == 'none' and -1 or 1)
 
     if int(settings.START_WARN_VOTES_LEFT) >= votes_left:
         response['message'] = _("You have %(nvotes)s %(tvotes)s left today.") % \
 
     if int(settings.START_WARN_VOTES_LEFT) >= votes_left:
         response['message'] = _("You have %(nvotes)s %(tvotes)s left today.") % \
@@ -266,7 +265,8 @@ def comment(request, id):
                 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}),
                 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}),
-                reverse('convert_comment', kwargs={'id': comment.id}),            
+                reverse('convert_comment', kwargs={'id': comment.id}),
+                user.can_convert_comment_to_answer(comment),
                 ]
         }
         }
                 ]
         }
         }
@@ -535,6 +535,10 @@ def matching_users(request):
 def related_questions(request):
     if request.POST and request.POST.get('title', None):
         can_rank, questions = Question.objects.search(request.POST['title'])
 def related_questions(request):
     if request.POST and request.POST.get('title', None):
         can_rank, questions = Question.objects.search(request.POST['title'])
+
+        if can_rank and isinstance(can_rank, basestring):
+            questions = questions.order_by(can_rank)
+
         return HttpResponse(simplejson.dumps(
                 [dict(title=q.title, url=q.get_absolute_url(), score=q.score, summary=q.summary)
                  for q in questions.filter_state(deleted=False)[0:10]]), mimetype="application/json")
         return HttpResponse(simplejson.dumps(
                 [dict(title=q.title, url=q.get_absolute_url(), score=q.score, summary=q.summary)
                  for q in questions.filter_state(deleted=False)[0:10]]), mimetype="application/json")
@@ -580,6 +584,9 @@ def award_points(request, user_id, answer_id):
         points = int(request.POST['points'])
 
         # We should check if the user has enough reputation points, otherwise we raise an exception.
         points = int(request.POST['points'])
 
         # We should check if the user has enough reputation points, otherwise we raise an exception.
+        if points < 0:
+            raise CommandException(_("The number of points to award needs to be a positive value."))
+
         if user.reputation < points:
             raise NotEnoughRepPointsException(_("award"))
 
         if user.reputation < points:
             raise NotEnoughRepPointsException(_("award"))
 
@@ -588,4 +595,4 @@ def award_points(request, user_id, answer_id):
         # We take points from the awarding user
         AwardPointsAction(user=request.user, node=answer, extra=extra).save(data=dict(value=points, affected=awarded_user))
 
         # We take points from the awarding user
         AwardPointsAction(user=request.user, node=answer, extra=extra).save(data=dict(value=points, affected=awarded_user))
 
-        return { 'message' : _("You have awarded %s with %d points") % (awarded_user, points) }
+        return { 'message' : _("You have awarded %(awarded_user)s with %(points)d points") % {'awarded_user' : awarded_user, 'points' : points} }