See #890: Ensure report handled_date is populated automatically when handling the report

This commit is contained in:
Eliot Berriot 2019-08-26 14:47:01 +02:00
parent b659eec4df
commit 177f06cf2a
No known key found for this signature in database
GPG Key ID: DD6965E2476E5C27
2 changed files with 32 additions and 1 deletions

View File

@ -6,13 +6,14 @@ from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.contrib.postgres.fields import JSONField from django.contrib.postgres.fields import JSONField
from django.db import models from django.db import models
from django.db.models.signals import pre_save
from django.dispatch import receiver
from django.urls import reverse from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from funkwhale_api.federation import models as federation_models from funkwhale_api.federation import models as federation_models
from funkwhale_api.federation import utils as federation_utils from funkwhale_api.federation import utils as federation_utils
class InstancePolicyQuerySet(models.QuerySet): class InstancePolicyQuerySet(models.QuerySet):
def active(self): def active(self):
return self.filter(is_active=True) return self.filter(is_active=True)
@ -160,3 +161,11 @@ class Report(federation_models.FederationMixin):
self.fid = self.get_federation_id() self.fid = self.get_federation_id()
return super().save(**kwargs) return super().save(**kwargs)
@receiver(pre_save, sender=Report)
def set_handled_date(sender, instance, **kwargs):
if instance.is_handled is True and not instance.handled_date:
instance.handled_date = timezone.now()
elif not instance.is_handled:
instance.handled_date = None

View File

@ -0,0 +1,22 @@
def test_setting_report_handled_to_true_sets_handled_date(factories, now):
target = factories["music.Artist"]()
report = factories["moderation.Report"](target=target)
assert report.is_handled is False
assert report.handled_date is None
report.is_handled = True
report.save()
assert report.handled_date == now
def test_setting_report_handled_to_false_sets_handled_date_to_null(factories, now):
target = factories["music.Artist"]()
report = factories["moderation.Report"](
target=target, is_handled=True, handled_date=now
)
report.is_handled = False
report.save()
assert report.handled_date is None