X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/c5248fba11755939b9b03aa996db697f8fd4b099..e41eda9e5ca27742a6430d3abdd6bebcb4704938:/forum/models/node.py diff --git a/forum/models/node.py b/forum/models/node.py index 13749cd..00cbbd0 100644 --- a/forum/models/node.py +++ b/forum/models/node.py @@ -77,6 +77,7 @@ class NodeMetaClass(models.Model.__metaclass__): node_create = django.dispatch.Signal(providing_args=['instance']) +node_edit = django.dispatch.Signal(providing_args=['instance']) class Node(BaseModel, NodeContent, DeletableContent): __metaclass__ = NodeMetaClass @@ -89,12 +90,12 @@ class Node(BaseModel, NodeContent, DeletableContent): tags = models.ManyToManyField('Tag', related_name='%(class)ss') - score = models.IntegerField(default=0) - vote_up_count = models.IntegerField(default=0) + score = DenormalizedField(default=0) + vote_up_count = DenormalizedField(default=0) vote_down_count = models.IntegerField(default=0) - comment_count = models.PositiveIntegerField(default=0) - offensive_flag_count = models.SmallIntegerField(default=0) + comment_count = DenormalizedField(default=0) + offensive_flag_count = DenormalizedField(default=0) last_edited_at = models.DateTimeField(null=True, blank=True) last_edited_by = models.ForeignKey(User, null=True, blank=True, related_name='last_edited_%(class)ss') @@ -136,14 +137,17 @@ class Node(BaseModel, NodeContent, DeletableContent): self.body = revision.body old_revision = self.active_revision - self.active_revision = revision - self.save() if not old_revision: + signal = node_create + else: self.last_edited_at = datetime.datetime.now() self.last_edited_by = user - node_create.send(sender=self.__class__, instance=self) + signal = node_edit + + self.save() + signal.send(sender=self.__class__, instance=self) def get_tag_list_if_changed(self): dirty = self.get_dirty_fields() @@ -201,7 +205,7 @@ class Node(BaseModel, NodeContent, DeletableContent): app_label = 'forum' -class NodeRevision(NodeContent): +class NodeRevision(BaseModel, NodeContent): node = models.ForeignKey(Node, related_name='revisions') summary = models.CharField(max_length=300) revision = models.PositiveIntegerField()