]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/models/action.py
OSQA-497, adding a new settings that allows to specify whether the permissions to...
[osqa.git] / forum / models / action.py
index 7fd2e6ff564c10c9ad1d695632147939b1b5caab..e8d076542adbdce911816203d808ad85b9ff1137 100644 (file)
@@ -16,7 +16,7 @@ class ActionQuerySet(CachedQuerySet):
             return super(ActionQuerySet, self).obj_from_datadict(datadict)
 
     def get(self, *args, **kwargs):            
             return super(ActionQuerySet, self).obj_from_datadict(datadict)
 
     def get(self, *args, **kwargs):            
-        action = super(ActionQuerySet, self).get(*args, **kwargs).leaf()
+        action = super(ActionQuerySet, self).get(*args, **kwargs).leaf
 
         if not isinstance(action, self.model):
             raise self.model.DoesNotExist()
 
         if not isinstance(action, self.model):
             raise self.model.DoesNotExist()
@@ -42,9 +42,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)
 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")
     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()
     action_date = models.DateTimeField(default=datetime.datetime.now)
 
     extra = PickledObjectField()
@@ -52,7 +52,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 = 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 = {}
 
 
     hooks = {}
 
@@ -101,6 +101,7 @@ class Action(BaseModel):
             cancel = ActionRepute(action=self, user=repute.user, value=(-repute.value), by_canceled=True)
             cancel.save()
 
             cancel = ActionRepute(action=self, user=repute.user, value=(-repute.value), by_canceled=True)
             cancel.save()
 
+    @property
     def leaf(self):
         leaf_cls = ActionProxyMetaClass.types.get(self.action_type, None)
 
     def leaf(self):
         leaf_cls = ActionProxyMetaClass.types.get(self.action_type, None)
 
@@ -299,7 +300,7 @@ class ActionRepute(models.Model):
         return 0
 
     def _add_to_rep(self, value):
         return 0
 
     def _add_to_rep(self, value):
-        if self.user.reputation + value < 0:
+        if (self.user.reputation + value < 1) and not settings.ALLOW_NEGATIVE_REPUTATION:
             return 0
         else:
             return models.F('reputation') + value
             return 0
         else:
             return models.F('reputation') + value