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()
class Action(BaseModel):
user = models.ForeignKey('User', related_name="actions")
- ip = models.CharField(max_length=16)
+ real_user = models.ForeignKey('User', related_name="proxied_actions", null=True)
+ 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()
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 = {}
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)
'node_desc': node_desc,
}
+ def affected_links(self, viewer):
+ return ", ".join([self.hyperlink(u.get_profile_url(), self.friendly_username(viewer, u)) for u in set([r.user for r in self.reputes.all()])])
+
class Meta:
proxy = True
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