Coverage for website/facedetection/forms.py: 34.78%

17 statements  

« prev     ^ index     » next       coverage.py v7.6.7, created at 2025-08-14 10:31 +0000

1from django import forms 

2from django.conf import settings 

3 

4from .models import ReferenceFace 

5 

6 

7class ReferenceFaceUploadForm(forms.ModelForm): 

8 """Class for a reference face submission form.""" 

9 

10 class Meta: 

11 """Meta class for ReferenceFaceUploadForm.""" 

12 

13 model = ReferenceFace 

14 fields = ("file",) 

15 

16 def save(self, commit=True, user=None): 

17 """Save the user encoding.""" 

18 if not user: 

19 raise forms.ValidationError("User must be specified.") 

20 

21 instance = super().save(commit=False) 

22 instance.user = user 

23 

24 if ( 

25 user.reference_faces.filter( 

26 marked_for_deletion_at__isnull=True, 

27 ).count() 

28 >= settings.FACEDETECTION_MAX_NUM_REFERENCE_FACES 

29 ): 

30 raise forms.ValidationError( 

31 "You have reached the maximum number of reference faces" 

32 ) 

33 

34 if commit: 

35 instance.save() 

36 return instance