kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
				
				
				
			See #890: Ensure report handled_date is populated automatically when handling the report
							rodzic
							
								
									b659eec4df
								
							
						
					
					
						commit
						177f06cf2a
					
				| 
						 | 
				
			
			@ -6,13 +6,14 @@ from django.contrib.contenttypes.fields import GenericForeignKey
 | 
			
		|||
from django.contrib.contenttypes.models import ContentType
 | 
			
		||||
from django.contrib.postgres.fields import JSONField
 | 
			
		||||
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.utils import timezone
 | 
			
		||||
 | 
			
		||||
from funkwhale_api.federation import models as federation_models
 | 
			
		||||
from funkwhale_api.federation import utils as federation_utils
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class InstancePolicyQuerySet(models.QuerySet):
 | 
			
		||||
    def active(self):
 | 
			
		||||
        return self.filter(is_active=True)
 | 
			
		||||
| 
						 | 
				
			
			@ -160,3 +161,11 @@ class Report(federation_models.FederationMixin):
 | 
			
		|||
            self.fid = self.get_federation_id()
 | 
			
		||||
 | 
			
		||||
        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
 | 
			
		||||
		Ładowanie…
	
		Reference in New Issue