X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/8b8e4c83d5d90a663bc903c75f7986c4d108d811..141cd657f2d6a583113b84978215f29ad97bb70d:/forum/models/action.py diff --git a/forum/models/action.py b/forum/models/action.py index 58ec7d5..55cf733 100644 --- a/forum/models/action.py +++ b/forum/models/action.py @@ -1,4 +1,6 @@ from django.utils.translation import ugettext as _ +from django.utils.encoding import smart_unicode + from utils import PickledObjectField from threading import Thread from forum.utils import html @@ -42,9 +44,9 @@ class ActionManager(CachedManager): class Action(BaseModel): user = models.ForeignKey('User', related_name="actions") real_user = models.ForeignKey('User', related_name="proxied_actions", null=True) - ip = models.CharField(max_length=16) + ip = models.CharField(max_length=39) node = models.ForeignKey('Node', null=True, related_name="actions") - action_type = models.CharField(max_length=16) + action_type = models.CharField(max_length=32) action_date = models.DateTimeField(default=datetime.datetime.now) extra = PickledObjectField() @@ -52,7 +54,7 @@ class Action(BaseModel): canceled = models.BooleanField(default=False) canceled_by = models.ForeignKey('User', null=True, related_name="canceled_actions") canceled_at = models.DateTimeField(null=True) - canceled_ip = models.CharField(max_length=16) + canceled_ip = models.CharField(max_length=39) hooks = {} @@ -133,7 +135,11 @@ class Action(BaseModel): if isnew: if (self.node is None) or (not self.node.nis.wiki): self.repute_users() + + if isnew: self.process_action() + + if isnew: self.trigger_hooks(threaded, True) return self @@ -213,10 +219,10 @@ class ActionProxy(Action): __metaclass__ = ActionProxyMetaClass def friendly_username(self, viewer, user): - return (viewer == user) and _('You') or user.username + return (viewer == user) and _('You') or smart_unicode(user.username) def friendly_ownername(self, owner, user): - return (owner == user) and _('your') or user.username + return (owner == user) and _('your') or smart_unicode(user.username) def viewer_or_user_verb(self, viewer, user, viewer_verb, user_verb): return (viewer == user) and viewer_verb or user_verb @@ -300,7 +306,7 @@ class ActionRepute(models.Model): return 0 def _add_to_rep(self, value): - if self.user.reputation + value < 1: + if int(self.user.reputation + value) < 1 and not settings.ALLOW_NEGATIVE_REPUTATION: return 0 else: return models.F('reputation') + value