]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/models/action.py
Various improvements in module functionality, and a couple of migrations to fix some...
[osqa.git] / forum / models / action.py
index d6d0c648fdf63ceca30f068b746f21c84c61b286..7fd2e6ff564c10c9ad1d695632147939b1b5caab 100644 (file)
@@ -15,8 +15,13 @@ class ActionQuerySet(CachedQuerySet):
         else:
             return super(ActionQuerySet, self).obj_from_datadict(datadict)
 
-    def get(self, *args, **kwargs):
-        return super(ActionQuerySet, self).get(*args, **kwargs).leaf()
+    def get(self, *args, **kwargs):            
+        action = super(ActionQuerySet, self).get(*args, **kwargs).leaf()
+
+        if not isinstance(action, self.model):
+            raise self.model.DoesNotExist()
+
+        return action
 
 class ActionManager(CachedManager):
     use_for_related_fields = True
@@ -36,6 +41,7 @@ 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)
     node = models.ForeignKey('Node', null=True, related_name="actions")
     action_type = models.CharField(max_length=16)
@@ -231,6 +237,9 @@ class ActionProxy(Action):
         '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