X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/3ff018b6b9cc5c0b36054456a671389a481f72a2..9f41798b37e6931c3e5eb90b7366cc5d358635a9:/forum/models/meta.py?ds=inline diff --git a/forum/models/meta.py b/forum/models/meta.py index 6465105..3fd0680 100644 --- a/forum/models/meta.py +++ b/forum/models/meta.py @@ -5,7 +5,7 @@ class Vote(models.Model): user = models.ForeignKey(User, related_name="votes") node = models.ForeignKey(Node, related_name="votes") value = models.SmallIntegerField() - action = models.ForeignKey(Action, unique=True, related_name="vote") + action = models.OneToOneField(Action, related_name="vote") voted_at = models.DateTimeField(default=datetime.datetime.now) class Meta: @@ -17,7 +17,7 @@ class Flag(models.Model): user = models.ForeignKey(User, related_name="flags") node = models.ForeignKey(Node, related_name="flags") reason = models.CharField(max_length=300) - action = models.ForeignKey(Action, unique=True, related_name="flag") + action = models.OneToOneField(Action, related_name="flag") flagged_at = models.DateTimeField(default=datetime.datetime.now) class Meta: @@ -64,7 +64,15 @@ class Badge(models.Model): @models.permalink def get_absolute_url(self): - return ('badge', [], {'id': self.id, 'slug': slugify(self.name)}) + return ('badge', [], {'id': self.id, 'slug': slugify(self.name)}) + + def save(self, *args, **kwargs): + if isinstance(self.awarded_count, models.expressions.ExpressionNode): + super(Badge, self).save(*args, **kwargs) + self.awarded_count = self.__class__.objects.filter(id=self.id).values_list('awarded_count', flat=True)[0] + else: + super(Badge, self).save(*args, **kwargs) + class Meta: app_label = 'forum' @@ -78,7 +86,7 @@ class Award(models.Model): awarded_at = models.DateTimeField(default=datetime.datetime.now) trigger = models.ForeignKey(Action, related_name="awards", null=True) - action = models.ForeignKey(Action, related_name="award", unique=True) + action = models.OneToOneField(Action, related_name="award") class Meta: