X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/96e9e11916b1e23edbfb23d9ff9e0a08a86b61d3..7fc0c9f2c94f090d9f743798cd9ef835757dcbc2:/forum/views/commands.py?ds=inline diff --git a/forum/views/commands.py b/forum/views/commands.py index bd8e373..f88dee8 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 * @@ -548,13 +549,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 +578,17 @@ 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, extra=extra).save(data=dict(value=-points, affected=user)) + + # And give them to the awarded one + AwardPointsAction(user=request.user, extra=extra).save(data=dict(value=points, affected=awarded_user)) + + return { 'message' : _("You have awarded %s with %d points") % (awarded_user, points) }