|
@@ -74,7 +74,7 @@ class Thread(models.Model):
|
|
last_poster_slug = models.SlugField(max_length=255, null=True, blank=True)
|
|
last_poster_slug = models.SlugField(max_length=255, null=True, blank=True)
|
|
last_poster_style = models.CharField(max_length=255, null=True, blank=True)
|
|
last_poster_style = models.CharField(max_length=255, null=True, blank=True)
|
|
participants = models.ManyToManyField('User', related_name='private_thread_set')
|
|
participants = models.ManyToManyField('User', related_name='private_thread_set')
|
|
- report_for = models.ForeignKey('Post', null=True, blank=True, related_name='reports', on_delete=models.SET_NULL)
|
|
|
|
|
|
+ report_for = models.ForeignKey('Post', related_name='report_set', null=True, blank=True, on_delete=models.SET_NULL)
|
|
moderated = models.BooleanField(default=False)
|
|
moderated = models.BooleanField(default=False)
|
|
deleted = models.BooleanField(default=False)
|
|
deleted = models.BooleanField(default=False)
|
|
closed = models.BooleanField(default=False)
|
|
closed = models.BooleanField(default=False)
|
|
@@ -86,6 +86,17 @@ class Thread(models.Model):
|
|
class Meta:
|
|
class Meta:
|
|
app_label = 'misago'
|
|
app_label = 'misago'
|
|
|
|
|
|
|
|
+ def delete(self, *args, **kwargs):
|
|
|
|
+ """
|
|
|
|
+ FUGLY HAX for weird stuff that happens with
|
|
|
|
+ relations on model deletion in MySQL
|
|
|
|
+ """
|
|
|
|
+ if self.replies_reported:
|
|
|
|
+ clear_reports = [post.pk for post in self.post_set.filter(reported=True)]
|
|
|
|
+ if clear_reports:
|
|
|
|
+ Thread.objects.filter(report_for__in=clear_reports).update(report_for=None)
|
|
|
|
+ return super(Thread, self).delete(*args, **kwargs)
|
|
|
|
+
|
|
def get_date(self):
|
|
def get_date(self):
|
|
return self.start
|
|
return self.start
|
|
|
|
|
|
@@ -244,4 +255,4 @@ pre_delete.connect(delete_user_handler, dispatch_uid="delete_user_participations
|
|
def sync_user_handler(sender, **kwargs):
|
|
def sync_user_handler(sender, **kwargs):
|
|
sender.threads = sender.thread_set.count()
|
|
sender.threads = sender.thread_set.count()
|
|
|
|
|
|
-sync_user_profile.connect(sync_user_handler, dispatch_uid="sync_user_threads")
|
|
|
|
|
|
+sync_user_profile.connect(sync_user_handler, dispatch_uid="sync_user_threads")
|