X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/0f2d00f9d7d5d28149707f66c719b28edfe51aed..133a8f939cdfa69dd6a7caeafed158aa38d20092:/forum/models/base.py diff --git a/forum/models/base.py b/forum/models/base.py index 13eae22..7974af6 100644 --- a/forum/models/base.py +++ b/forum/models/base.py @@ -79,6 +79,7 @@ class BaseModel(models.Model): class ActiveObjectManager(models.Manager): + use_for_related_fields = True def get_query_set(self): return super(ActiveObjectManager, self).get_query_set().filter(canceled=False) @@ -158,8 +159,25 @@ class DeletableContent(models.Model): else: return False +mark_canceled = django.dispatch.Signal(providing_args=['instance']) + +class CancelableContent(models.Model): + canceled = models.BooleanField(default=False) + + def cancel(self): + if not self.canceled: + self.canceled = True + self.save() + mark_canceled.send(sender=self.__class__, instance=self) + return True + + return False + + class Meta: + abstract = True + app_label = 'forum' + -from meta import Comment, Vote, FlaggedItem from node import Node, NodeRevision class QandA(Node):