7777)
7878from local_units .serializers import MiniDelegationOfficeSerializer
7979from local_units .models import DelegationOffice
80+ from utils .file_check import validate_file_type
8081
8182
8283class GeoSerializerMixin :
@@ -200,6 +201,10 @@ class Meta:
200201 "average_household_size" ,
201202 )
202203
204+ def validate_logo (self , logo ):
205+ validate_file_type (logo )
206+ return logo
207+
203208
204209class CountryGeoSerializer (ModelSerializer ):
205210 bbox = serializers .SerializerMethodField ()
@@ -487,6 +492,10 @@ class Meta:
487492 "id" ,
488493 )
489494
495+ def validate_image (self , image ):
496+ validate_file_type (image )
497+ return image
498+
490499
491500class RegionEmergencySnippetSerializer (ModelSerializer ):
492501 class Meta :
@@ -551,6 +560,10 @@ class Meta:
551560 "id" ,
552561 )
553562
563+ def validate_image (self , image ):
564+ validate_file_type (image )
565+ return image
566+
554567
555568class RegionLinkSerializer (ModelSerializer ):
556569 class Meta :
@@ -778,6 +791,7 @@ def get_country_delegation(self, country):
778791
779792class CountryKeyDocumentSerializer (ModelSerializer ):
780793 country_details = MiniCountrySerializer (source = 'country' , read_only = True )
794+
781795 class Meta :
782796 model = CountryKeyDocument
783797 fields = "__all__"
@@ -832,6 +846,10 @@ class Meta:
832846 "tab_display" ,
833847 )
834848
849+ def validate_image (self , image ):
850+ validate_file_type (image )
851+ return image
852+
835853
836854class EventContactSerializer (ModelSerializer ):
837855 class Meta :
@@ -931,6 +949,7 @@ class Meta:
931949
932950
933951class EventFeaturedDocumentSerializer (serializers .ModelSerializer ):
952+
934953 class Meta :
935954 model = EventFeaturedDocument
936955 fields = (
@@ -941,6 +960,14 @@ class Meta:
941960 "file" ,
942961 )
943962
963+ def validate_thumbnail (self , thumbnail ):
964+ validate_file_type (thumbnail )
965+ return thumbnail
966+
967+ def validate_file (self , file ):
968+ validate_file_type (file )
969+ return file
970+
944971
945972class EventLinkSerializer (ModelSerializer ):
946973 class Meta :
@@ -1376,6 +1403,10 @@ class Meta:
13761403 "visibility_display" ,
13771404 )
13781405
1406+ def validate_document (self , document ):
1407+ validate_file_type (document )
1408+ return document
1409+
13791410
13801411class AppealTableauSerializer (serializers .ModelSerializer ):
13811412 country = MiniCountrySerializer ()
@@ -1559,8 +1590,8 @@ class AppealDocumentAppealSerializer(serializers.ModelSerializer):
15591590 class Meta :
15601591 model = Appeal
15611592 fields = (
1562- 'id' ,
1563- ' code' ,
1593+ "id" ,
1594+ " code" ,
15641595 )
15651596
15661597
@@ -1582,6 +1613,10 @@ class Meta:
15821613 "id" ,
15831614 )
15841615
1616+ def validate_document (self , document ):
1617+ validate_file_type (document )
1618+ return document
1619+
15851620
15861621class ProfileSerializer (ModelSerializer ):
15871622 country = MiniCountrySerializer ()
@@ -1666,7 +1701,7 @@ class Meta:
16661701
16671702
16681703class UserCountryCountrySerializer (serializers .ModelSerializer ):
1669- region_details = MiniRegionSerialzier (source = ' region' , read_only = True )
1704+ region_details = MiniRegionSerialzier (source = " region" , read_only = True )
16701705
16711706 class Meta :
16721707 model = Country
@@ -1680,12 +1715,12 @@ class Meta:
16801715
16811716class UserCountrySerializer (serializers .ModelSerializer ):
16821717 country_name = serializers .CharField (source = "country.name" , read_only = True )
1683- region = serializers .IntegerField (source = ' country.region.name' , read_only = True )
1684- region_details = MiniRegionSerialzier (source = ' country.region' , read_only = True )
1718+ region = serializers .IntegerField (source = " country.region.name" , read_only = True )
1719+ region_details = MiniRegionSerialzier (source = " country.region" , read_only = True )
16851720
16861721 class Meta :
16871722 model = UserCountry
1688- exclude = ('id' , ' user' )
1723+ exclude = ("id" , " user" )
16891724
16901725
16911726class UserMeSerializer (UserSerializer ):
@@ -1737,9 +1772,9 @@ def get_lang_permissions(user) -> dict:
17371772 def get_is_dref_coordinator_for_regions (user ) -> List [int ]:
17381773 data = list (
17391774 Permission .objects .filter (
1740- codename__startswith = ' dref_region_admin_' ,
1775+ codename__startswith = " dref_region_admin_" ,
17411776 group__user = user
1742- ).values_list (' codename' , flat = True )
1777+ ).values_list (" codename" , flat = True )
17431778 )
17441779 regions = []
17451780 for d in data :
@@ -1750,27 +1785,27 @@ def get_is_dref_coordinator_for_regions(user) -> List[int]:
17501785 @staticmethod
17511786 def get_is_per_admin_for_regions (user ) -> List [int ]:
17521787 permission_codenames = Permission .objects .filter (
1753- codename__startswith = ' per_region_admin' ,
1788+ codename__startswith = " per_region_admin" ,
17541789 group__user = user
1755- ).values_list (' codename' , flat = True )
1790+ ).values_list (" codename" , flat = True )
17561791
1757- regions = {int (code .split ('_' )[- 1 ]) for code in permission_codenames }
1792+ regions = {int (code .split ("_" )[- 1 ]) for code in permission_codenames }
17581793 return list (regions )
17591794
17601795 @staticmethod
17611796 def get_is_per_admin_for_countries (user ) -> List [int ]:
17621797 permission_codenames = Permission .objects .filter (
1763- codename__startswith = ' per_country_admin' ,
1798+ codename__startswith = " per_country_admin" ,
17641799 group__user = user
1765- ).values_list (' codename' , flat = True )
1800+ ).values_list (" codename" , flat = True )
17661801
1767- countries = {int (code .split ('_' )[- 1 ]) for code in permission_codenames }
1802+ countries = {int (code .split ("_" )[- 1 ]) for code in permission_codenames }
17681803 return list (countries )
17691804
17701805 @staticmethod
17711806 @extend_schema_field (UserCountrySerializer (many = True ))
17721807 def get_user_countries_regions (user ):
1773- qs = UserCountry .objects .filter (user = user ).distinct (' country' )
1808+ qs = UserCountry .objects .filter (user = user ).distinct (" country" )
17741809 return UserCountrySerializer (qs , many = True ).data
17751810
17761811
@@ -1818,7 +1853,7 @@ class Meta:
18181853
18191854class FieldReportEnumDisplayMixin :
18201855 """
1821- Use for fields = ' __all__'
1856+ Use for fields = " __all__"
18221857 """
18231858
18241859 epi_figures_source_display = serializers .CharField (source = "get_epi_figures_source_display" , read_only = True )
@@ -1961,7 +1996,7 @@ def __init__(self, *args, **kwargs):
19611996 external_partners = ExternalPartnerSerializer (many = True )
19621997 supported_activities = SupportedActivitySerializer (many = True )
19631998 regions = RegionSerializer (many = True )
1964- visibility_display = serializers .CharField (source = ' get_visibility_display' , read_only = True )
1999+ visibility_display = serializers .CharField (source = " get_visibility_display" , read_only = True )
19652000
19662001 class Meta :
19672002 model = FieldReport
@@ -1972,11 +2007,11 @@ class FieldReportMiniUserSerializer(ModelSerializer):
19722007 class Meta :
19732008 model = User
19742009 fields = (
1975- 'id' ,
1976- ' username' ,
1977- ' email' ,
1978- ' first_name' ,
1979- ' last_name'
2010+ "id" ,
2011+ " username" ,
2012+ " email" ,
2013+ " first_name" ,
2014+ " last_name"
19802015 )
19812016
19822017
@@ -2015,7 +2050,7 @@ class FieldReportSerializer(
20152050 dtype_details = DisasterTypeSerializer (source = "dtype" , read_only = True )
20162051 external_partners_details = ExternalPartnerSerializer (source = "external_partners" , many = True , read_only = True )
20172052 supported_activities_details = SupportedActivitySerializer (source = "supported_activities" , many = True , read_only = True )
2018- user_details = FieldReportMiniUserSerializer (source = ' user' , read_only = True )
2053+ user_details = FieldReportMiniUserSerializer (source = " user" , read_only = True )
20192054
20202055 class Meta :
20212056 model = FieldReport
@@ -2037,7 +2072,7 @@ def create_event(self, report):
20372072 event .regions .add (* report .regions .all ())
20382073 FieldReportSerializer .trigger_field_translation (event )
20392074 report .event = event
2040- report .save (update_fields = [' event' ])
2075+ report .save (update_fields = [" event" ])
20412076
20422077 def validate (self , data ):
20432078 # Set RecentAffected according to the sent _affected key – see (¤) in other code parts
@@ -2058,7 +2093,7 @@ def validate(self, data):
20582093 return data
20592094
20602095 def create (self , validated_data ):
2061- validated_data [' user' ] = self .context ["request" ].user
2096+ validated_data [" user" ] = self .context ["request" ].user
20622097 countries = validated_data ["countries" ]
20632098 field_report = super ().create (validated_data )
20642099 # also add regions for the coutries selected
@@ -2068,7 +2103,7 @@ def create(self, validated_data):
20682103 return field_report
20692104
20702105 def update (self , instance , validated_data ):
2071- validated_data [' user' ] = self .context ["request" ].user
2106+ validated_data [" user" ] = self .context ["request" ].user
20722107 return super ().update (instance , validated_data )
20732108
20742109
@@ -2339,7 +2374,7 @@ class HistoricalDisasterSerializer(serializers.Serializer):
23392374
23402375
23412376class ExportSerializer (serializers .ModelSerializer ):
2342- status_display = serializers .CharField (source = ' get_status_display' , read_only = True )
2377+ status_display = serializers .CharField (source = " get_status_display" , read_only = True )
23432378
23442379 class Meta :
23452380 model = Export
@@ -2354,10 +2389,14 @@ class Meta:
23542389 "url"
23552390 )
23562391
2392+ def validate_pdf_file (self , pdf_file ):
2393+ validate_file_type (pdf_file )
2394+ return pdf_file
2395+
23572396 def create (self , validated_data ):
2358- export_id = validated_data .get (' export_id' )
2359- export_type = validated_data .get (' export_type' )
2360- country_id = validated_data .get (' per_country' )
2397+ export_id = validated_data .get (" export_id" )
2398+ export_type = validated_data .get (" export_type" )
2399+ country_id = validated_data .get (" per_country" )
23612400 if export_type == Export .ExportType .DREF :
23622401 title = Dref .objects .filter (
23632402 id = export_id
0 commit comments