Coverage for website/photos/forms.py: 87.50%

14 statements  

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

1from django import forms 

2from django.utils.translation import gettext_lazy as _ 

3 

4from django_filepond_widget.fields import FilePondField 

5 

6from photos.models import Album, Photo 

7from photos.validators import ArchiveFileTypeValidator 

8 

9 

10class AlbumForm(forms.ModelForm): 

11 """Class for an album submission form.""" 

12 

13 def __init__(self, *args, **kwargs): 

14 """Initialize AlbumForm. 

15 

16 Set the cover options to photos from the specified album. 

17 https://stackoverflow.com/questions/4391776/django-admin-inline-forms-limit-foreign-key-queryset-to-a-set-of-values#4392047 

18 """ 

19 super().__init__(*args, **kwargs) 

20 if "instance" in kwargs and "_cover" in self.fields: 20 ↛ 21line 20 didn't jump to line 21 because the condition on line 20 was never true

21 self.fields["_cover"].queryset = Photo.objects.filter(album=self.instance) 

22 

23 album_archive = FilePondField( 

24 required=False, 

25 help_text=_("Uploading a zip or tar file adds all contained images as photos."), 

26 validators=[ArchiveFileTypeValidator()], 

27 filepond_options={"chunkSize": 15_000_000}, 

28 ) 

29 

30 class Meta: 

31 """Meta class for AlbumForm.""" 

32 

33 model = Album 

34 fields = ( 

35 "title", 

36 "date", 

37 "slug", 

38 "hidden", 

39 "shareable", 

40 "_cover", 

41 )