diff --git a/per/filter_set.py b/per/filter_set.py index 513c8c8091..d59d864f41 100644 --- a/per/filter_set.py +++ b/per/filter_set.py @@ -47,7 +47,8 @@ class Meta: class PerDocumentFilter(filters.FilterSet): country = filters.NumberFilter(field_name="country") region = filters.NumberFilter(field_name="country__region") + per = filters.NumberFilter(field_name="per") class Meta: model = PerDocumentUpload - fields = () \ No newline at end of file + fields = () diff --git a/per/migrations/0111_perdocumentupload_per.py b/per/migrations/0111_perdocumentupload_per.py new file mode 100644 index 0000000000..a054914b9f --- /dev/null +++ b/per/migrations/0111_perdocumentupload_per.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.25 on 2024-04-02 05:24 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('per', '0110_auto_20240325_0611'), + ] + + operations = [ + migrations.AddField( + model_name='perdocumentupload', + name='per', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='per.overview', verbose_name='Per'), + ), + ] diff --git a/per/models.py b/per/models.py index 51eec267e7..dc09e664aa 100644 --- a/per/models.py +++ b/per/models.py @@ -779,6 +779,13 @@ class PerDocumentUpload(models.Model): verbose_name=_("created at"), auto_now_add=True ) + per = models.ForeignKey( + Overview, + verbose_name=_('Per'), + on_delete=models.SET_NULL, + null=True, + blank=True + ) def __str__(self): - return f'{self.country.name} - {self.created_by}' + return f'{self.country.name} - {self.created_by} - {self.per_id}' diff --git a/per/serializers.py b/per/serializers.py index 6d07483560..00c3ca0f5b 100644 --- a/per/serializers.py +++ b/per/serializers.py @@ -4,10 +4,8 @@ from django.contrib.auth.models import User from django.db import models from django.contrib.auth.models import Permission -from django.utils.translation import gettext - -from api.models import Region, Appeal +from api.models import Region, Appeal, Country from api.serializers import RegoCountrySerializer, UserNameSerializer from .models import ( Form, @@ -1023,6 +1021,18 @@ def validate(self, data): ) return data + def validate_per(self, per): + if per is None: + raise serializers.ValidationError("This field is required") + country_per = list( + Country.objects.filter(id=self.initial_data['country']).values_list("per_overviews", flat=True) + ) + if per and per.id not in country_per: + raise serializers.ValidationError( + gettext(f"Per {per.id} doesn't match country {self.initial_data['country']}") + ) + return per + def validate_file(self, file): validate_file_type(file) return file