See #890: Ensure report handled_date is populated automatically when handling the report
This commit is contained in:
parent
b659eec4df
commit
177f06cf2a
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue