Skip to content
Snippets Groups Projects
Verified Commit 177f06cf authored by Eliot Berriot's avatar Eliot Berriot
Browse files

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

parent b659eec4
No related branches found
No related tags found
No related merge requests found
...@@ -6,13 +6,14 @@ from django.contrib.contenttypes.fields import GenericForeignKey ...@@ -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): ...@@ -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
\ No newline at end of file
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment