X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/96e9e11916b1e23edbfb23d9ff9e0a08a86b61d3..9be87a69e33d2abe99c77b104d63fbf9a2a21ac6:/forum/views/commands.py diff --git a/forum/views/commands.py b/forum/views/commands.py index bd8e373..0b54126 100644 --- a/forum/views/commands.py +++ b/forum/views/commands.py @@ -6,6 +6,7 @@ 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 +from django.template.loader import render_to_string from forum.models import * from forum.models.node import NodeMetaClass from forum.actions import * @@ -90,13 +91,11 @@ def vote_post(request, id, vote_type): ) 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" + 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': { @@ -265,7 +264,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}), - reverse('convert_comment', kwargs={'id': comment.id}), + reverse('convert_comment', kwargs={'id': comment.id}), + user.can_convert_comment_to_answer(comment), ] } } @@ -548,13 +548,22 @@ def answer_permanent_link(request, id): # Getting the current object URL -- the Application URL + the object relative URL url = '%s%s' % (settings.APP_BASE_URL, answer.get_absolute_url()) - # Display the template - return render_to_response('node/permanent_link.html', { 'url' : url, }) + if not request.POST: + # Display the template + return render_to_response('node/permanent_link.html', { 'url' : url, }) + + return { + 'commands' : { + 'copy_url' : [request.POST['permanent_link_url'],], + }, + 'message' : _("The permanent URL to the answer has been copied to your clipboard."), + } @decorate.withfn(command) def award_points(request, user_id, answer_id): user = request.user awarded_user = get_object_or_404(User, id=user_id) + answer = get_object_or_404(Answer, id=answer_id) # Users shouldn't be able to award themselves if awarded_user.id == user.id: @@ -568,4 +577,14 @@ def award_points(request, user_id, answer_id): return render_to_response("node/award_points.html", { 'user' : user, 'awarded_user' : awarded_user, }) else: points = int(request.POST['points']) - return { 'message' : _("You have awarded %s with %d points") % (awarded_user, points) } \ No newline at end of file + + # We should check if the user has enough reputation points, otherwise we raise an exception. + if user.reputation < points: + raise NotEnoughRepPointsException(_("award")) + + extra = dict(message=request.POST.get('message', ''), awarding_user=request.user.id, value=points) + + # 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 %(awarded_user)s with %(points)d points") % {'awarded_user' : awarded_user, 'points' : points} }