X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/f5fda79fa40310950e0c6f40a40619c701fd3f08..c20ffa09925ec21f3631e6f14f078f2f8b05be70:/forum/actions/user.py diff --git a/forum/actions/user.py b/forum/actions/user.py index 50d1a73..15ad5ee 100644 --- a/forum/actions/user.py +++ b/forum/actions/user.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext as _ +from django.utils.translation import ungettext, ugettext as _ from django.db.models import F from forum.models.action import ActionProxy from forum.models import Award, Badge, ValidationHash, User @@ -23,6 +23,23 @@ class UserJoinsAction(ActionProxy): 'app_name': APP_SHORT_NAME, } +class EmailValidationAction(ActionProxy): + verb = _("validated e-mail") + + def repute_users(self): + self.repute(self.user, int(settings.REP_GAIN_BY_EMAIL_VALIDATION)) + + def process_action(self): + self.user.email_isvalid = True + self.user.save() + + def describe(self, viewer=None): + return _("%(user)s %(have_has)s validated the e-mail %(email)s") % { + 'user': self.hyperlink(self.user.get_profile_url(), self.friendly_username(viewer, self.user)), + 'have_has': self.viewer_or_user_verb(viewer, self.user, _('have'), _('has')), + 'email' : self.user.email + } + class EditProfileAction(ActionProxy): verb = _("edited profile") @@ -71,6 +88,43 @@ class BonusRepAction(ActionProxy): except Exception, e: return '' +class AwardPointsAction(ActionProxy): + verb = _("gave reputation points") + + def process_data(self, value, affected): + self._value = value + self._affected = affected + + + def repute_users(self): + self.repute(self._affected, self._value) + self.repute(self.user, -self._value) + + + self._affected.message_set.create( + message=_("Congratulations, you have been awarded an extra %(points)s reputation %(points_label)s on this answer.") % { + 'points': self._value, + 'points_label': ungettext('point', 'points', self._value), + 'answer_url': self.node.get_absolute_url() + }) + + def describe(self, viewer=None): + value = self.extra.get('value', _('unknown')) + + try: + if int(value) > 0: + return _("%(user)s awarded an extra %(value)s reputation points to %(users)s") % { + 'user': self.hyperlink(self.user.get_profile_url(), self.friendly_username(viewer, self.user)), + 'value': value, 'users':self.affected_links(viewer), + } + else: + return _("%(user)s penalised %(users)s in %(value)s reputation points") % { + 'user': self.hyperlink(self.user.get_profile_url(), self.friendly_username(viewer, self.user)), + 'value': value, 'users':self.affected_links(viewer), + } + except Exception, e: + return '' + class AwardAction(ActionProxy): verb = _("was awarded")