X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/26dc6264fd04855c752b03517707bd94f76284ee..b97cf4924e1f43e7cf92bfc807a8e3dec1a2eec1:/forum/models/node.py diff --git a/forum/models/node.py b/forum/models/node.py index 9e734d2..a92dee9 100644 --- a/forum/models/node.py +++ b/forum/models/node.py @@ -1,3 +1,4 @@ +from akismet import * from base import * from tag import Tag @@ -82,20 +83,20 @@ node_edit = django.dispatch.Signal(providing_args=['instance']) class Node(BaseModel, NodeContent, DeletableContent): __metaclass__ = NodeMetaClass - node_type = models.CharField(max_length=16, default='node') - parent = models.ForeignKey('Node', related_name='children', null=True) - abs_parent = models.ForeignKey('Node', related_name='all_children', null=True) + node_type = models.CharField(max_length=16, default='node') + parent = models.ForeignKey('Node', related_name='children', null=True) + abs_parent = models.ForeignKey('Node', related_name='all_children', null=True) - added_at = models.DateTimeField(default=datetime.datetime.now) + added_at = models.DateTimeField(default=datetime.datetime.now) - tags = models.ManyToManyField('Tag', related_name='%(class)ss') + 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') @@ -201,11 +202,23 @@ class Node(BaseModel, NodeContent, DeletableContent): super(Node, self).save(*args, **kwargs) if tags is not None: self.tags = tags + @staticmethod + def isSpam(comment, data): + api = Akismet() + if api.key is None: + print "problem" # raise APIKeyError + else: + if api.comment_check(comment, data): + return True + else: + return False + return data + class Meta: 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()