From 4dfe9dcdab5c24d77cc66671d98129696c077af8 Mon Sep 17 00:00:00 2001 From: Sushil Tiwari Date: Thu, 20 Feb 2025 15:37:48 +0545 Subject: [PATCH] Remove title generation for emergency --- api/admin.py | 4 +- api/factories/event.py | 1 - ...nt_title_remove_event_title_ar_and_more.py | 82 ++++++++++++ api/models.py | 68 ++++------ api/receivers.py | 9 -- api/serializers.py | 4 +- api/test_models.py | 14 +- api/test_views.py | 4 +- api/translation.py | 3 +- deployments/snapshots/snap_tests.py | 122 +++++++++--------- deployments/tests.py | 2 +- lang/tests.py | 2 + 12 files changed, 186 insertions(+), 129 deletions(-) create mode 100644 api/migrations/0218_remove_event_title_remove_event_title_ar_and_more.py diff --git a/api/admin.py b/api/admin.py index 9ce4fa618..ff90ee572 100644 --- a/api/admin.py +++ b/api/admin.py @@ -249,14 +249,12 @@ def changeform_view(self, request, *args, **kwargs): "field_reports", "auto_generated_source", "parent_event", - "name", ) else: self.readonly_fields = ( "appeals", "field_reports", "auto_generated_source", - "name", ) return super(EventAdmin, self).changeform_view(request, *args, **kwargs) @@ -340,7 +338,7 @@ class FieldReportAdmin(CompareVersionAdmin, RegionRestrictedAdmin, TranslationAd def create_events(self, request, queryset): for report in queryset: event = models.Event.objects.create( - title=report.title, + name=report.summary, dtype=getattr(report, "dtype"), disaster_start_date=getattr(report, "created_at"), auto_generated=True, diff --git a/api/factories/event.py b/api/factories/event.py index 71bf55b62..f3656a2e6 100644 --- a/api/factories/event.py +++ b/api/factories/event.py @@ -23,7 +23,6 @@ class Meta: model = Event name = fuzzy.FuzzyText(length=50) - title = fuzzy.FuzzyText(length=10) slug = fuzzy.FuzzyText(length=50) dtype = factory.SubFactory(DisasterTypeFactory) diff --git a/api/migrations/0218_remove_event_title_remove_event_title_ar_and_more.py b/api/migrations/0218_remove_event_title_remove_event_title_ar_and_more.py new file mode 100644 index 000000000..11783d683 --- /dev/null +++ b/api/migrations/0218_remove_event_title_remove_event_title_ar_and_more.py @@ -0,0 +1,82 @@ +# Generated by Django 4.2.17 on 2025-02-20 09:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("api", "0217_merge_20250107_1019"), + ] + + operations = [ + migrations.RemoveField( + model_name="event", + name="title", + ), + migrations.RemoveField( + model_name="event", + name="title_ar", + ), + migrations.RemoveField( + model_name="event", + name="title_en", + ), + migrations.RemoveField( + model_name="event", + name="title_es", + ), + migrations.RemoveField( + model_name="event", + name="title_fr", + ), + migrations.AlterField( + model_name="fieldreport", + name="title", + field=models.CharField( + blank=True, + help_text="Title is used to generate the summary/name of the Field Report.
The summary is constructed as: Country IS03: Disaster Type - Start Date - Title - Field Report Number - (date)", + max_length=256, + ), + ), + migrations.AlterField( + model_name="fieldreport", + name="title_ar", + field=models.CharField( + blank=True, + help_text="Title is used to generate the summary/name of the Field Report.
The summary is constructed as: Country IS03: Disaster Type - Start Date - Title - Field Report Number - (date)", + max_length=256, + null=True, + ), + ), + migrations.AlterField( + model_name="fieldreport", + name="title_en", + field=models.CharField( + blank=True, + help_text="Title is used to generate the summary/name of the Field Report.
The summary is constructed as: Country IS03: Disaster Type - Start Date - Title - Field Report Number - (date)", + max_length=256, + null=True, + ), + ), + migrations.AlterField( + model_name="fieldreport", + name="title_es", + field=models.CharField( + blank=True, + help_text="Title is used to generate the summary/name of the Field Report.
The summary is constructed as: Country IS03: Disaster Type - Start Date - Title - Field Report Number - (date)", + max_length=256, + null=True, + ), + ), + migrations.AlterField( + model_name="fieldreport", + name="title_fr", + field=models.CharField( + blank=True, + help_text="Title is used to generate the summary/name of the Field Report.
The summary is constructed as: Country IS03: Disaster Type - Start Date - Title - Field Report Number - (date)", + max_length=256, + null=True, + ), + ), + ] diff --git a/api/models.py b/api/models.py index 0a6872f76..d174f7fb0 100644 --- a/api/models.py +++ b/api/models.py @@ -742,6 +742,16 @@ class Event(models.Model): """A disaster, which could cover multiple countries""" name = models.CharField(verbose_name=_("name"), max_length=256) + dtype = models.ForeignKey(DisasterType, verbose_name=_("disaster type"), null=True, on_delete=models.SET_NULL) + disaster_start_date = models.DateTimeField(verbose_name=_("disaster start date")) + regions = models.ManyToManyField(Region, verbose_name=_("regions")) + countries = models.ManyToManyField(Country, verbose_name=_("countries")) + countries_for_preview = models.ManyToManyField( + Country, verbose_name=_("countries for preview"), blank=True, related_name="countries_for_preview" + ) + districts = models.ManyToManyField(District, verbose_name=_("districts"), blank=True) + # visibility + visibility = models.IntegerField(choices=VisibilityChoices.choices, verbose_name=_("visibility"), default=1) # Obsolete: slug is not editable until we resolve https://github.com/IFRCGo/go-frontend/issues/1013 slug = models.CharField( verbose_name=_("slug"), @@ -758,13 +768,6 @@ class Event(models.Model): " Recommend using hyphens over underscores. Special characters like # is not allowed." ), ) - dtype = models.ForeignKey(DisasterType, verbose_name=_("disaster type"), null=True, on_delete=models.SET_NULL) - districts = models.ManyToManyField(District, verbose_name=_("districts"), blank=True) - countries = models.ManyToManyField(Country, verbose_name=_("countries")) - countries_for_preview = models.ManyToManyField( - Country, verbose_name=_("countries for preview"), blank=True, related_name="countries_for_preview" - ) - regions = models.ManyToManyField(Region, verbose_name=_("regions")) parent_event = models.ForeignKey( "self", null=True, @@ -778,7 +781,6 @@ class Event(models.Model): ) image = models.ImageField(verbose_name=_("image"), null=True, blank=True, upload_to=snippet_image_path) summary = HTMLField(verbose_name=_("summary"), blank=True, default="") - title = models.CharField(max_length=256, blank=True) num_injured = models.IntegerField(verbose_name=_("number of injured"), null=True, blank=True) num_dead = models.IntegerField(verbose_name=_("number of dead"), null=True, blank=True) @@ -789,7 +791,6 @@ class Event(models.Model): ifrc_severity_level = models.IntegerField(choices=AlertLevel.choices, default=0, verbose_name=_("IFRC Severity level")) glide = models.CharField(verbose_name=_("glide"), max_length=18, blank=True) - disaster_start_date = models.DateTimeField(verbose_name=_("disaster start date")) created_at = models.DateTimeField(verbose_name=_("created at"), auto_now_add=True) updated_at = models.DateTimeField(verbose_name=_("updated at"), auto_now=True) previous_update = models.DateTimeField(verbose_name=_("previous update"), null=True, blank=True) @@ -816,8 +817,6 @@ class Event(models.Model): tab_two_title = models.CharField(verbose_name=_("tab two title"), max_length=50, null=True, blank=True) tab_three_title = models.CharField(verbose_name=_("tab three title"), max_length=50, null=True, blank=True) - # visibility - visibility = models.IntegerField(choices=VisibilityChoices.choices, verbose_name=_("visibility"), default=1) emergency_response_contact_email = models.CharField( verbose_name=_("emergency response contact email"), null=True, blank=True, max_length=255 ) @@ -873,15 +872,6 @@ def record_type(self): def to_dict(self): return to_dict(self) - def generate_formatted_name(self): - country_iso3 = self.countries.first().iso3 if self.id and self.countries.first() else "N/A" - disaster_start_date = self.disaster_start_date.strftime("%m-%Y") - for lang in AVAILABLE_LANGUAGES: - with translation_override(lang): - dtype = self.dtype.name if self.dtype else "N/A" - self.name = f"{country_iso3}: {dtype} - {disaster_start_date} - {self.title}" - yield build_localized_fieldname("name", lang) - def save(self, *args, **kwargs): # Make the slug lowercase @@ -892,15 +882,6 @@ def save(self, *args, **kwargs): if not self.id and not self.disaster_start_date: self.disaster_start_date = timezone.now() - updated_name_fields = list(self.generate_formatted_name()) - - # Updating the updated_fields with the fields that are updated - if kwargs.get("update_fields"): - kwargs["update_fields"] = ( - *kwargs["update_fields"], - *updated_name_fields, - ) - return super(Event, self).save(*args, **kwargs) def __str__(self): @@ -1479,21 +1460,31 @@ class RecentAffected(models.IntegerChoices): default=False, help_text=_("Is this a Field Report specific to the COVID-19 emergency?"), ) - - # Used to differentiate reports that have and have not been synced from DMIS - rid = models.CharField(verbose_name=_("r id"), max_length=100, null=True, blank=True, editable=False) - summary = models.TextField(verbose_name=_("summary"), blank=True) # Title field is used for the translation and later adding formated into the summary - title = models.CharField(max_length=256, blank=True) - fr_num = models.IntegerField(verbose_name=_("field report number"), null=True, blank=True) + title = models.CharField( + max_length=256, + blank=True, + help_text=_( + "Title is used to generate the summary/name of the Field Report.
" + "The summary is constructed as: " + "Country IS03: Disaster Type - Start Date - Title - Field Report Number - (date)" + ), + ) description = HTMLField(verbose_name=_("description"), blank=True, default="") dtype = models.ForeignKey(DisasterType, verbose_name=_("disaster type"), on_delete=models.PROTECT) event = models.ForeignKey( Event, verbose_name=_("event"), related_name="field_reports", null=True, blank=True, on_delete=models.SET_NULL ) - districts = models.ManyToManyField(District, verbose_name=_("districts"), blank=True) - countries = models.ManyToManyField(Country, verbose_name=_("countries")) regions = models.ManyToManyField(Region, verbose_name=_("regions"), blank=True) + countries = models.ManyToManyField(Country, verbose_name=_("countries")) + districts = models.ManyToManyField(District, verbose_name=_("districts"), blank=True) + # visibility + visibility = models.IntegerField(choices=VisibilityChoices.choices, verbose_name=_("visibility"), default=1) + # Used to differentiate reports that have and have not been synced from DMIS + rid = models.CharField(verbose_name=_("r id"), max_length=100, null=True, blank=True, editable=False) + summary = models.TextField(verbose_name=_("summary"), blank=True) + + fr_num = models.IntegerField(verbose_name=_("field report number"), null=True, blank=True) # This entity is more a type than a status, so let's label it this way on admin page: status = models.IntegerField( choices=Status.choices, @@ -1582,9 +1573,6 @@ class RecentAffected(models.IntegerChoices): # actions taken actions_others = models.TextField(verbose_name=_("actions taken (others)"), null=True, blank=True) - # visibility - visibility = models.IntegerField(choices=VisibilityChoices.choices, verbose_name=_("visibility"), default=1) - # information bulletin = models.IntegerField(choices=RequestChoices.choices, verbose_name=_("bulletin"), default=0, null=True) dref = models.IntegerField(choices=RequestChoices.choices, verbose_name=_("DREF"), default=0, null=True) diff --git a/api/receivers.py b/api/receivers.py index b8f182e3f..dfa57a304 100644 --- a/api/receivers.py +++ b/api/receivers.py @@ -288,15 +288,6 @@ def remove_appeal_filter(sender, instance, using, **kwargs): appealFilter.save() -@receiver(m2m_changed, sender=Event.countries.through) -def update_event_name(sender, instance, action, **kwargs): - """ - Update the event name when the countries are changed. - """ - if action in ["post_add", "post_remove"]: - instance.save() - - @receiver(m2m_changed, sender=FieldReport.countries.through) def update_fieldreport_summary(sender, instance, action, **kwargs): """ diff --git a/api/serializers.py b/api/serializers.py index 75e1ac9d9..60cccc9d8 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -1164,7 +1164,6 @@ class Meta: "dtype", "countries", "summary", - "title", "num_affected", "ifrc_severity_level", "ifrc_severity_level_display", @@ -1300,7 +1299,6 @@ class Meta: "countries", "districts", "summary", - "title", "num_affected", "tab_two_title", "tab_three_title", @@ -2058,7 +2056,7 @@ class Meta: def create_event(self, report): event = Event.objects.create( - title=report.title, + name=report.summary, dtype=report.dtype, summary=report.description or "", disaster_start_date=report.start_date, diff --git a/api/test_models.py b/api/test_models.py index 1038f3505..f63d3355c 100644 --- a/api/test_models.py +++ b/api/test_models.py @@ -26,14 +26,14 @@ class EventTest(TestCase): def setUp(self): dtype = models.DisasterType.objects.get(pk=1) - models.Event.objects.create(title="disaster1", summary="test disaster", dtype=dtype) - event = models.Event.objects.create(title="disaster2", summary="another test disaster", dtype=dtype) + models.Event.objects.create(name="disaster1", summary="test disaster", dtype=dtype) + event = models.Event.objects.create(name="disaster2", summary="another test disaster", dtype=dtype) models.KeyFigure.objects.create(event=event, number=7, deck="things", source="website") models.Snippet.objects.create(event=event, snippet="this is a snippet") def test_disaster_create(self): - obj1 = models.Event.objects.get(title="disaster1") - obj2 = models.Event.objects.get(title="disaster2") + obj1 = models.Event.objects.get(name="disaster1") + obj2 = models.Event.objects.get(name="disaster2") self.assertEqual(obj1.summary, "test disaster") self.assertEqual(obj2.summary, "another test disaster") keyfig = obj2.key_figures.all() @@ -68,7 +68,7 @@ def test_profile_create(self): class AppealTest(APITestCase): def setUp(self): # An appeal with needs_confirmation=True should not return the event in the API response. - event = models.Event.objects.create(title="associated event", summary="foo") + event = models.Event.objects.create(name="associated event", summary="foo") country = models.Country.objects.create(name="country") models.Appeal.objects.create( aid="test1", name="appeal", atype=1, code="abc", needs_confirmation=True, event=event, country=country @@ -87,13 +87,13 @@ class FieldReportTest(TestCase): def setUp(self): dtype = models.DisasterType.objects.get(pk=1) - event = models.Event.objects.create(title="disaster1", summary="test disaster", dtype=dtype) + event = models.Event.objects.create(name="disaster1", summary="test disaster", dtype=dtype) country = models.Country.objects.create(name="country") report = models.FieldReport.objects.create(rid="test1", event=event, dtype=dtype) report.countries.add(country) def test_field_report_create(self): - event = models.Event.objects.get(title="disaster1") + event = models.Event.objects.get(name="disaster1") country = models.Country.objects.get(name="country") self.assertEqual(event.field_reports.all()[0].countries.all()[0], country) obj = models.FieldReport.objects.get(rid="test1") diff --git a/api/test_views.py b/api/test_views.py index 4b9cff70c..f4f67b945 100644 --- a/api/test_views.py +++ b/api/test_views.py @@ -308,7 +308,7 @@ def test_sit_rep_types(self): type1 = models.SituationReportType.objects.create(type="Lyric") type2 = models.SituationReportType.objects.create(type="Epic") dtype1 = models.DisasterType.objects.get(pk=1) - event1 = models.Event.objects.create(title="disaster1", summary="test disaster1", dtype=dtype1) + event1 = models.Event.objects.create(name="disaster1", summary="test disaster1", dtype=dtype1) models.SituationReport.objects.create(name="test1", event=event1, type=type1, visibility=3) models.SituationReport.objects.create(name="test2", event=event1, type=type2, visibility=3) @@ -386,7 +386,7 @@ def test_create_and_update(self): self.assertEqual(created.title_en, "test") # created an emergency automatically - self.assertEqual(created.event.title, "test") + self.assertEqual(created.event.name, response["summary"]) # event_pk = created.event.id # body['countries'] = [country2.id] diff --git a/api/translation.py b/api/translation.py index a68847800..c801b355b 100644 --- a/api/translation.py +++ b/api/translation.py @@ -78,8 +78,7 @@ class DisasterTypeTO(TranslationOptions): @register(Event) class EventTO(TranslationOptions): - fields = ("name", "summary", "title") - skip_fields = ("name",) # XXX: CUSTOM field Not used by TranslationOptions, but used in lang/tasks.py + fields = ("name", "summary") @register(ExternalPartner) diff --git a/deployments/snapshots/snap_tests.py b/deployments/snapshots/snap_tests.py index 13256c5da..efb4e9f1b 100644 --- a/deployments/snapshots/snap_tests.py +++ b/deployments/snapshots/snap_tests.py @@ -91,16 +91,16 @@ snapshots[ "TestProjectAPI::test_project_csv_api 1" ] = """actual_expenditure,budget_amount,description,document,dtype,dtype_detail.id,dtype_detail.name,dtype_detail.summary,dtype_detail.translation_module_original_language,end_date,event,event_detail.dtype,event_detail.emergency_response_contact_email,event_detail.id,event_detail.name,event_detail.parent_event,event_detail.slug,event_detail.start_date,event_detail.translation_module_original_language,id,modified_at,modified_by,modified_by_detail,name,operation_type,operation_type_display,primary_sector,primary_sector_display,programme_type,programme_type_display,project_country,project_country_detail.id,project_country_detail.iso,project_country_detail.iso3,project_country_detail.name,project_country_detail.society_name,project_districts_detail.code,project_districts_detail.id,project_districts_detail.is_deprecated,project_districts_detail.is_enclave,project_districts_detail.name,reached_female,reached_male,reached_other,reached_total,regional_project,regional_project_detail.created_at,regional_project_detail.id,regional_project_detail.modified_at,regional_project_detail.name,regional_project_detail.translation_module_original_language,regional_project_detail.translation_module_skip_auto_translation,reporting_ns,reporting_ns_contact_email,reporting_ns_contact_name,reporting_ns_contact_role,reporting_ns_detail.id,reporting_ns_detail.iso,reporting_ns_detail.iso3,reporting_ns_detail.name,reporting_ns_detail.society_name,secondary_sectors,secondary_sectors_display,start_date,status,status_display,target_female,target_male,target_other,target_total,translation_module_original_language,translation_module_skip_auto_translation,user,visibility,visibility_display\r -0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,rpo: disaster-type-1 - 03-2016 - event-1,1,event-slug,,en,1,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,5,public,Public\r -0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,rpo: disaster-type-1 - 03-2016 - event-1,1,event-slug,,en,2,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,6,public,Public\r -0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,rpo: disaster-type-1 - 03-2016 - event-1,1,event-slug,,en,3,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,7,public,Public\r -0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,rpo: disaster-type-1 - 03-2016 - event-1,1,event-slug,,en,4,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,8,public,Public\r -0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,rpo: disaster-type-1 - 03-2016 - event-1,1,event-slug,,en,5,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,9,public,Public\r -0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,rpo: disaster-type-1 - 03-2016 - event-1,1,event-slug,,en,6,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,10,public,Public\r -0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,rpo: disaster-type-1 - 03-2016 - event-1,1,event-slug,,en,7,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,11,public,Public\r -0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,rpo: disaster-type-1 - 03-2016 - event-1,1,event-slug,,en,8,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,12,public,Public\r -0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,rpo: disaster-type-1 - 03-2016 - event-1,1,event-slug,,en,9,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,13,public,Public\r -0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,rpo: disaster-type-1 - 03-2016 - event-1,1,event-slug,,en,10,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,14,public,Public\r +0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,event-1,1,event-slug,,en,1,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,5,public,Public\r +0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,event-1,1,event-slug,,en,2,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,6,public,Public\r +0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,event-1,1,event-slug,,en,3,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,7,public,Public\r +0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,event-1,1,event-slug,,en,4,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,8,public,Public\r +0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,event-1,1,event-slug,,en,5,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,9,public,Public\r +0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,event-1,1,event-slug,,en,6,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,10,public,Public\r +0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,event-1,1,event-slug,,en,7,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,11,public,Public\r +0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,event-1,1,event-slug,,en,8,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,12,public,Public\r +0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,event-1,1,event-slug,,en,9,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,13,public,Public\r +0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,event-1,1,event-slug,,en,10,2008-01-01T00:00:00.123456Z,,,project-1,1,Emergency Operation,1,sect-1,0,Bilateral,1,1,bV,rpo,country-1,society-name-1,"dct1, dct2","1, 2","True, False","False, True","district-1, district-2",0,0,0,0,1,2008-01-01T00:00:00.123456Z,1,2008-01-01T00:00:00.123456Z,regional-project-1,en,False,1,,,,1,bV,rpo,country-1,society-name-1,"1, 2","sec-tag-1, sec-tag-2",2008-01-01,1,Ongoing,0,0,0,0,en,False,14,public,Public\r """ snapshots["TestProjectAPI::test_project_delete 1"] = b"" @@ -113,14 +113,14 @@ { "actual_expenditure": 0, "annual_splits": [], - "budget_amount": 8500000, + "budget_amount": 6440000, "description": "", "document": None, "dtype": 3, "dtype_detail": { "id": 3, - "name": "disaster-type-SOuThWwJELKQTARVIsBZaHgbyjdQdmrWYksRqjdSYsnWIcwCgN", - "summary": "RVJoVPJypGYYZSsSQdyyAYRuJdaVqmNXCoOTTPxWLIVMmXUmsClRellVGhycBrJqikLqavDTjcjuMdXONQtFYKJweYTuHolHeYGkAIIzfwonQvvxsnWNHEJWPahQwCpPNNpcRuyYhyqIUsbHXxGZGCFcsPmuGfgkXIIaOenQOXnRBgnISVXBPeVRjbDTvcfedlYqJeKoqAyCOzBubyRhIaPUNeWVLcSewGgsYRtMfsWCyzQbEkIoiVzYZIsOjtRYUPxaJJjhcaKMzIJftnVVUwnAPGjkloNqmhlQZKdWJDPJesQeqgmULFvwiQPpgsNemuFCvNQtSLjKKxZuBkaupYoTVPBrxiRUvEDCwXtFJglPMfriImqUOeUebGObLLzXLncJqIIEPXjxzoXLUsiDGGfzxGaQpZNRkWGiCklKKQjVUEwcoWFoeqxocQnHYxyEDccPugTHOrVqLIKlyPyxLPeHqyoHzwwFYEMaGiCkoeGPrnjlkxMT", + "name": "disaster-type-MSVGtSJuTVJOnmnNTsRwRiTPlGISOuThWwJELKQTARVIsBZaHg", + "summary": "byjdQdmrWYksRqjdSYsnWIcwCgNRVJoVPJypGYYZSsSQdyyAYRuJdaVqmNXCoOTTPxWLIVMmXUmsClRellVGhycBrJqikLqavDTjcjuMdXONQtFYKJweYTuHolHeYGkAIIzfwonQvvxsnWNHEJWPahQwCpPNNpcRuyYhyqIUsbHXxGZGCFcsPmuGfgkXIIaOenQOXnRBgnISVXBPeVRjbDTvcfedlYqJeKoqAyCOzBubyRhIaPUNeWVLcSewGgsYRtMfsWCyzQbEkIoiVzYZIsOjtRYUPxaJJjhcaKMzIJftnVVUwnAPGjkloNqmhlQZKdWJDPJesQeqgmULFvwiQPpgsNemuFCvNQtSLjKKxZuBkaupYoTVPBrxiRUvEDCwXtFJglPMfriImqUOeUebGObLLzXLncJqIIEPXjxzoXLUsiDGGfzxGaQpZNRkWGiCklKKQjVUEwcoWFoeqxocQnHYxyEDccPugTHOrVqLIKlyPyxLPeHq", "translation_module_original_language": "en", }, "end_date": "2008-01-01", @@ -130,9 +130,9 @@ "dtype": 1, "emergency_response_contact_email": None, "id": 2, - "name": "N/A: disaster-type-hlIzHiUoaWbtDRUIBIyopDwjrmUWhcZQANXbpnegMcCMRTdpVc - 12-2019 - LFfGCZdDiG", + "name": "xNooiEjDVMxASJEWIZQnWpRWMYfHCHTxeKhdJGmKIjkuHChRnT", "parent_event": 1, - "slug": "adkdjdrztubzqavnlecbwseideecsalxixpupaxycyyfrqiipw", + "slug": "lffgczddigadkdjdrztubzqavnlecbwseideecsalxixpupaxy", "start_date": None, "translation_module_original_language": "en", }, @@ -140,7 +140,7 @@ "modified_at": "2008-01-01T00:00:00.123456Z", "modified_by": None, "modified_by_detail": None, - "name": "project-hQoAZvUhEREEnLkPAbpciKLkiOGcKjdkqlHzMKObUUQsfnCMEE", + "name": "project-yoHzwwFYEMaGiCkoeGPrnjlkxMThQoAZvUhEREEnLkPAbpciKL", "operation_type": 0, "operation_type_display": "Programme", "primary_sector": 1, @@ -168,7 +168,7 @@ "created_at": "2008-01-01T00:00:00.123456Z", "id": 1, "modified_at": "2008-01-01T00:00:00.123456Z", - "name": "regional-project-yyigbmHGRAjMglENMcYIGWhfEQiMIaXRPBHAxcSHBoZEYXywLZ", + "name": "regional-project-fnCMEEkoAMjYLXlNQGqkURvDMLeoyyigbmHGRAjMglENMcYIGW", "translation_module_original_language": "en", "translation_module_skip_auto_translation": False, }, @@ -209,14 +209,14 @@ { "actual_expenditure": 0, "annual_splits": [], - "budget_amount": 8500000, + "budget_amount": 6440000, "description": "", "document": None, "dtype": 3, "dtype_detail": { "id": 3, - "name": "disaster-type-SOuThWwJELKQTARVIsBZaHgbyjdQdmrWYksRqjdSYsnWIcwCgN", - "summary": "RVJoVPJypGYYZSsSQdyyAYRuJdaVqmNXCoOTTPxWLIVMmXUmsClRellVGhycBrJqikLqavDTjcjuMdXONQtFYKJweYTuHolHeYGkAIIzfwonQvvxsnWNHEJWPahQwCpPNNpcRuyYhyqIUsbHXxGZGCFcsPmuGfgkXIIaOenQOXnRBgnISVXBPeVRjbDTvcfedlYqJeKoqAyCOzBubyRhIaPUNeWVLcSewGgsYRtMfsWCyzQbEkIoiVzYZIsOjtRYUPxaJJjhcaKMzIJftnVVUwnAPGjkloNqmhlQZKdWJDPJesQeqgmULFvwiQPpgsNemuFCvNQtSLjKKxZuBkaupYoTVPBrxiRUvEDCwXtFJglPMfriImqUOeUebGObLLzXLncJqIIEPXjxzoXLUsiDGGfzxGaQpZNRkWGiCklKKQjVUEwcoWFoeqxocQnHYxyEDccPugTHOrVqLIKlyPyxLPeHqyoHzwwFYEMaGiCkoeGPrnjlkxMT", + "name": "disaster-type-MSVGtSJuTVJOnmnNTsRwRiTPlGISOuThWwJELKQTARVIsBZaHg", + "summary": "byjdQdmrWYksRqjdSYsnWIcwCgNRVJoVPJypGYYZSsSQdyyAYRuJdaVqmNXCoOTTPxWLIVMmXUmsClRellVGhycBrJqikLqavDTjcjuMdXONQtFYKJweYTuHolHeYGkAIIzfwonQvvxsnWNHEJWPahQwCpPNNpcRuyYhyqIUsbHXxGZGCFcsPmuGfgkXIIaOenQOXnRBgnISVXBPeVRjbDTvcfedlYqJeKoqAyCOzBubyRhIaPUNeWVLcSewGgsYRtMfsWCyzQbEkIoiVzYZIsOjtRYUPxaJJjhcaKMzIJftnVVUwnAPGjkloNqmhlQZKdWJDPJesQeqgmULFvwiQPpgsNemuFCvNQtSLjKKxZuBkaupYoTVPBrxiRUvEDCwXtFJglPMfriImqUOeUebGObLLzXLncJqIIEPXjxzoXLUsiDGGfzxGaQpZNRkWGiCklKKQjVUEwcoWFoeqxocQnHYxyEDccPugTHOrVqLIKlyPyxLPeHq", "translation_module_original_language": "en", }, "end_date": "2008-01-01", @@ -226,9 +226,9 @@ "dtype": 1, "emergency_response_contact_email": None, "id": 2, - "name": "N/A: disaster-type-hlIzHiUoaWbtDRUIBIyopDwjrmUWhcZQANXbpnegMcCMRTdpVc - 12-2019 - LFfGCZdDiG", + "name": "xNooiEjDVMxASJEWIZQnWpRWMYfHCHTxeKhdJGmKIjkuHChRnT", "parent_event": 1, - "slug": "adkdjdrztubzqavnlecbwseideecsalxixpupaxycyyfrqiipw", + "slug": "lffgczddigadkdjdrztubzqavnlecbwseideecsalxixpupaxy", "start_date": None, "translation_module_original_language": "en", }, @@ -236,7 +236,7 @@ "modified_at": "2008-01-01T00:00:00.123456Z", "modified_by": None, "modified_by_detail": None, - "name": "project-hQoAZvUhEREEnLkPAbpciKLkiOGcKjdkqlHzMKObUUQsfnCMEE", + "name": "project-yoHzwwFYEMaGiCkoeGPrnjlkxMThQoAZvUhEREEnLkPAbpciKL", "operation_type": 0, "operation_type_display": "Programme", "primary_sector": 1, @@ -264,7 +264,7 @@ "created_at": "2008-01-01T00:00:00.123456Z", "id": 1, "modified_at": "2008-01-01T00:00:00.123456Z", - "name": "regional-project-yyigbmHGRAjMglENMcYIGWhfEQiMIaXRPBHAxcSHBoZEYXywLZ", + "name": "regional-project-fnCMEEkoAMjYLXlNQGqkURvDMLeoyyigbmHGRAjMglENMcYIGW", "translation_module_original_language": "en", "translation_module_skip_auto_translation": False, }, @@ -297,14 +297,14 @@ { "actual_expenditure": 0, "annual_splits": [], - "budget_amount": 9540000, + "budget_amount": 6090000, "description": "", "document": None, "dtype": 6, "dtype_detail": { "id": 6, - "name": "disaster-type-swYzzLWPaEPGWjzooUVnEoHLYJWDUDvYfumBXSAnCCJbxiKitV", - "summary": "aFZQwvoABRWzWXSItuLbKYcijvKOZMMKzynzeIymEgvKCOtfkgRJlcSMFblmeysnosQHeDdxHakuAzkhiIAEVeynintBTQEkMKtLmGTRDrmajCezMZpHvKFDDKcVfsPDwSTYtzNZlAplNUBDyQlSKgzScpkrOIsQeSUUnFAWJhxeWgGXXuACkqnGcDbeOSRVDyvVzmzcaqhTiuQVDFDefJQpTCiErkkbMglshIVzkeQWaRrjCwlnTcRInCSdOZHPQTQgyStCdMadXyXmpxpmfbAbavmRQeogZQkUkcAGguuJOmNnIzBhongwulazPuaynDoeQrPNxcenAtXMFgTIYKkqgMuOSyRXSivlOWSuQEevbMLCyGOVoGLTaobNWhtpVBWpNfdixFsmjynPcpUMCVviruPYWcHYAPsWboUvvpnIdQpZRSUoMyHulCOaeFemdOjniflLJYnpGfBUDtkUmpBlMptsKCOmrYEfxzykECBGNVBWjYEb", + "name": "disaster-type-blCoqPewfsGGIPfYroghexcImvmRvqtVXRrmTMiWTVIqaXtswY", + "summary": "zzLWPaEPGWjzooUVnEoHLYJWDUDvYfumBXSAnCCJbxiKitVaFZQwvoABRWzWXSItuLbKYcijvKOZMMKzynzeIymEgvKCOtfkgRJlcSMFblmeysnosQHeDdxHakuAzkhiIAEVeynintBTQEkMKtLmGTRDrmajCezMZpHvKFDDKcVfsPDwSTYtzNZlAplNUBDyQlSKgzScpkrOIsQeSUUnFAWJhxeWgGXXuACkqnGcDbeOSRVDyvVzmzcaqhTiuQVDFDefJQpTCiErkkbMglshIVzkeQWaRrjCwlnTcRInCSdOZHPQTQgyStCdMadXyXmpxpmfbAbavmRQeogZQkUkcAGguuJOmNnIzBhongwulazPuaynDoeQrPNxcenAtXMFgTIYKkqgMuOSyRXSivlOWSuQEevbMLCyGOVoGLTaobNWhtpVBWpNfdixFsmjynPcpUMCVviruPYWcHYAPsWboUvvpnIdQpZRSUoMyHulCOaeFemdOjni", "translation_module_original_language": "en", }, "end_date": "2008-01-01", @@ -314,9 +314,9 @@ "dtype": 4, "emergency_response_contact_email": None, "id": 4, - "name": "N/A: disaster-type-bfICRQfGzmFuMMGdQxzjTBxyxaswwtCJfnUCVAZCskZUBUAiLM - 05-2014 - kIthbzFXjD", + "name": "ZoHPvALvPPYuFLQSHJCDtKiYtkYqoExsXdjwsDkNkTIsllTSQY", "parent_event": 3, - "slug": "ujavigvptseswkqjzkucvshuecirjhtbznocwfudmpmlhoyxrm", + "slug": "jkphcukicqxlnjtcquwjxcikithbzfxjdujavigvptseswkqjz", "start_date": None, "translation_module_original_language": "en", }, @@ -324,7 +324,7 @@ "modified_at": "2008-01-01T00:00:00.123456Z", "modified_by": None, "modified_by_detail": None, - "name": "project-WyBfWtMIjJUlqyDtDsyJMEeviTEmjmaaGUUxFzAzVxyFtPLeAc", + "name": "project-flLJYnpGfBUDtkUmpBlMptsKCOmrYEfxzykECBGNVBWjYEbWyB", "operation_type": 1, "operation_type_display": "Emergency Operation", "primary_sector": 1, @@ -336,10 +336,10 @@ "project_country": 4, "project_country_detail": { "id": 4, - "iso": "Al", - "iso3": "kRs", - "name": "country-imaNWqaDFFIZaMFpnLQEDACfMMapJrNOJndljdPwcjcQKMtvfd", - "society_name": "society-name-NQSSMKYJlDVLxcfXtuxyeWBJesEihSrvHAHnSnNdgKUOHfEUSM", + "iso": "rN", + "iso3": "OJn", + "name": "country-XkvKQjkjlXTdAttUXCsOlhimaNWqaDFFIZaMFpnLQEDACfMMap", + "society_name": "society-name-dljdPwcjcQKMtvfdgAlkRsNQSSMKYJlDVLxcfXtuxyeWBJesEi", }, "project_districts": [], "project_districts_detail": [], @@ -352,7 +352,7 @@ "created_at": "2008-01-01T00:00:00.123456Z", "id": 2, "modified_at": "2008-01-01T00:00:00.123456Z", - "name": "regional-project-VppEcxOTRbSQPjqMDRjqpMLQkahXfPTyzTLfHmBkBqStGIQyLt", + "name": "regional-project-JMEeviTEmjmaaGUUxFzAzVxyFtPLeAchyKkmWBqXWUwGTFOSxS", "translation_module_original_language": "en", "translation_module_skip_auto_translation": False, }, @@ -362,10 +362,10 @@ "reporting_ns_contact_role": None, "reporting_ns_detail": { "id": 3, - "iso": "YJ", - "iso3": "Elx", - "name": "country-gBiqEXofsMIAqmaTVYaKHhHayPnSZuAxgjBPLqqIBKxNrRzWnA", - "society_name": "society-name-JJEqtKwXTzViQhVoCYSkgnGzYvZJNSRTdkyOaZfjEMBfeqoxfM", + "iso": "yP", + "iso3": "nSZ", + "name": "country-MIaXRPBHAxcSHBoZEYXywLZVWSKgBiqEXofsMIAqmaTVYaKHhH", + "society_name": "society-name-uAxgjBPLqqIBKxNrRzWnAJYJElxJJEqtKwXTzViQhVoCYSkgnG", }, "secondary_sectors": [], "secondary_sectors_display": [], @@ -390,14 +390,14 @@ snapshots["TestProjectAPI::test_project_read 1"] = { "actual_expenditure": 0, "annual_splits": [], - "budget_amount": 8500000, + "budget_amount": 6440000, "description": "", "document": None, "dtype": 3, "dtype_detail": { "id": 3, - "name": "disaster-type-SOuThWwJELKQTARVIsBZaHgbyjdQdmrWYksRqjdSYsnWIcwCgN", - "summary": "RVJoVPJypGYYZSsSQdyyAYRuJdaVqmNXCoOTTPxWLIVMmXUmsClRellVGhycBrJqikLqavDTjcjuMdXONQtFYKJweYTuHolHeYGkAIIzfwonQvvxsnWNHEJWPahQwCpPNNpcRuyYhyqIUsbHXxGZGCFcsPmuGfgkXIIaOenQOXnRBgnISVXBPeVRjbDTvcfedlYqJeKoqAyCOzBubyRhIaPUNeWVLcSewGgsYRtMfsWCyzQbEkIoiVzYZIsOjtRYUPxaJJjhcaKMzIJftnVVUwnAPGjkloNqmhlQZKdWJDPJesQeqgmULFvwiQPpgsNemuFCvNQtSLjKKxZuBkaupYoTVPBrxiRUvEDCwXtFJglPMfriImqUOeUebGObLLzXLncJqIIEPXjxzoXLUsiDGGfzxGaQpZNRkWGiCklKKQjVUEwcoWFoeqxocQnHYxyEDccPugTHOrVqLIKlyPyxLPeHqyoHzwwFYEMaGiCkoeGPrnjlkxMT", + "name": "disaster-type-MSVGtSJuTVJOnmnNTsRwRiTPlGISOuThWwJELKQTARVIsBZaHg", + "summary": "byjdQdmrWYksRqjdSYsnWIcwCgNRVJoVPJypGYYZSsSQdyyAYRuJdaVqmNXCoOTTPxWLIVMmXUmsClRellVGhycBrJqikLqavDTjcjuMdXONQtFYKJweYTuHolHeYGkAIIzfwonQvvxsnWNHEJWPahQwCpPNNpcRuyYhyqIUsbHXxGZGCFcsPmuGfgkXIIaOenQOXnRBgnISVXBPeVRjbDTvcfedlYqJeKoqAyCOzBubyRhIaPUNeWVLcSewGgsYRtMfsWCyzQbEkIoiVzYZIsOjtRYUPxaJJjhcaKMzIJftnVVUwnAPGjkloNqmhlQZKdWJDPJesQeqgmULFvwiQPpgsNemuFCvNQtSLjKKxZuBkaupYoTVPBrxiRUvEDCwXtFJglPMfriImqUOeUebGObLLzXLncJqIIEPXjxzoXLUsiDGGfzxGaQpZNRkWGiCklKKQjVUEwcoWFoeqxocQnHYxyEDccPugTHOrVqLIKlyPyxLPeHq", "translation_module_original_language": "en", }, "end_date": "2008-01-01", @@ -407,9 +407,9 @@ "dtype": 1, "emergency_response_contact_email": None, "id": 2, - "name": "N/A: disaster-type-hlIzHiUoaWbtDRUIBIyopDwjrmUWhcZQANXbpnegMcCMRTdpVc - 12-2019 - LFfGCZdDiG", + "name": "xNooiEjDVMxASJEWIZQnWpRWMYfHCHTxeKhdJGmKIjkuHChRnT", "parent_event": 1, - "slug": "adkdjdrztubzqavnlecbwseideecsalxixpupaxycyyfrqiipw", + "slug": "lffgczddigadkdjdrztubzqavnlecbwseideecsalxixpupaxy", "start_date": None, "translation_module_original_language": "en", }, @@ -417,7 +417,7 @@ "modified_at": "2008-01-01T00:00:00.123456Z", "modified_by": None, "modified_by_detail": None, - "name": "project-hQoAZvUhEREEnLkPAbpciKLkiOGcKjdkqlHzMKObUUQsfnCMEE", + "name": "project-yoHzwwFYEMaGiCkoeGPrnjlkxMThQoAZvUhEREEnLkPAbpciKL", "operation_type": 0, "operation_type_display": "Programme", "primary_sector": 1, @@ -445,7 +445,7 @@ "created_at": "2008-01-01T00:00:00.123456Z", "id": 1, "modified_at": "2008-01-01T00:00:00.123456Z", - "name": "regional-project-yyigbmHGRAjMglENMcYIGWhfEQiMIaXRPBHAxcSHBoZEYXywLZ", + "name": "regional-project-fnCMEEkoAMjYLXlNQGqkURvDMLeoyyigbmHGRAjMglENMcYIGW", "translation_module_original_language": "en", "translation_module_skip_auto_translation": False, }, @@ -479,14 +479,14 @@ snapshots["TestProjectAPI::test_project_update 1"] = { "actual_expenditure": 0, "annual_splits": [], - "budget_amount": 8500000, + "budget_amount": 6440000, "description": "", "document": None, "dtype": 3, "dtype_detail": { "id": 3, - "name": "disaster-type-SOuThWwJELKQTARVIsBZaHgbyjdQdmrWYksRqjdSYsnWIcwCgN", - "summary": "RVJoVPJypGYYZSsSQdyyAYRuJdaVqmNXCoOTTPxWLIVMmXUmsClRellVGhycBrJqikLqavDTjcjuMdXONQtFYKJweYTuHolHeYGkAIIzfwonQvvxsnWNHEJWPahQwCpPNNpcRuyYhyqIUsbHXxGZGCFcsPmuGfgkXIIaOenQOXnRBgnISVXBPeVRjbDTvcfedlYqJeKoqAyCOzBubyRhIaPUNeWVLcSewGgsYRtMfsWCyzQbEkIoiVzYZIsOjtRYUPxaJJjhcaKMzIJftnVVUwnAPGjkloNqmhlQZKdWJDPJesQeqgmULFvwiQPpgsNemuFCvNQtSLjKKxZuBkaupYoTVPBrxiRUvEDCwXtFJglPMfriImqUOeUebGObLLzXLncJqIIEPXjxzoXLUsiDGGfzxGaQpZNRkWGiCklKKQjVUEwcoWFoeqxocQnHYxyEDccPugTHOrVqLIKlyPyxLPeHqyoHzwwFYEMaGiCkoeGPrnjlkxMT", + "name": "disaster-type-MSVGtSJuTVJOnmnNTsRwRiTPlGISOuThWwJELKQTARVIsBZaHg", + "summary": "byjdQdmrWYksRqjdSYsnWIcwCgNRVJoVPJypGYYZSsSQdyyAYRuJdaVqmNXCoOTTPxWLIVMmXUmsClRellVGhycBrJqikLqavDTjcjuMdXONQtFYKJweYTuHolHeYGkAIIzfwonQvvxsnWNHEJWPahQwCpPNNpcRuyYhyqIUsbHXxGZGCFcsPmuGfgkXIIaOenQOXnRBgnISVXBPeVRjbDTvcfedlYqJeKoqAyCOzBubyRhIaPUNeWVLcSewGgsYRtMfsWCyzQbEkIoiVzYZIsOjtRYUPxaJJjhcaKMzIJftnVVUwnAPGjkloNqmhlQZKdWJDPJesQeqgmULFvwiQPpgsNemuFCvNQtSLjKKxZuBkaupYoTVPBrxiRUvEDCwXtFJglPMfriImqUOeUebGObLLzXLncJqIIEPXjxzoXLUsiDGGfzxGaQpZNRkWGiCklKKQjVUEwcoWFoeqxocQnHYxyEDccPugTHOrVqLIKlyPyxLPeHq", "translation_module_original_language": "en", }, "end_date": "2008-01-01", @@ -496,9 +496,9 @@ "dtype": 1, "emergency_response_contact_email": None, "id": 2, - "name": "N/A: disaster-type-hlIzHiUoaWbtDRUIBIyopDwjrmUWhcZQANXbpnegMcCMRTdpVc - 12-2019 - LFfGCZdDiG", + "name": "xNooiEjDVMxASJEWIZQnWpRWMYfHCHTxeKhdJGmKIjkuHChRnT", "parent_event": 1, - "slug": "adkdjdrztubzqavnlecbwseideecsalxixpupaxycyyfrqiipw", + "slug": "lffgczddigadkdjdrztubzqavnlecbwseideecsalxixpupaxy", "start_date": None, "translation_module_original_language": "en", }, @@ -518,13 +518,13 @@ "project_country": 3, "project_country_detail": { "id": 3, - "iso": "AJ", - "iso3": "YJE", - "name": "country-SKgBiqEXofsMIAqmaTVYaKHhHayPnSZuAxgjBPLqqIBKxNrRzW", - "society_name": "society-name-lxJJEqtKwXTzViQhVoCYSkgnGzYvZJNSRTdkyOaZfjEMBfeqox", + "iso": "ay", + "iso3": "PnS", + "name": "country-iMIaXRPBHAxcSHBoZEYXywLZVWSKgBiqEXofsMIAqmaTVYaKHh", + "society_name": "society-name-ZuAxgjBPLqqIBKxNrRzWnAJYJElxJJEqtKwXTzViQhVoCYSkgn", }, "project_districts": [1], - "project_districts_detail": [{"id": 1, "name": "district-imaNWqaDFFIZaMFpnLQEDACfMMapJrNOJndljdPwcjcQKMtvfd"}], + "project_districts_detail": [{"id": 1, "name": "district-kyJycXkvKQjkjlXTdAttUXCsOlhimaNWqaDFFIZaMFpnLQEDAC"}], "reached_female": 0, "reached_male": 0, "reached_other": 0, @@ -534,7 +534,7 @@ "created_at": "2008-01-01T00:00:00.123456Z", "id": 1, "modified_at": "2008-01-01T00:00:00.123456Z", - "name": "regional-project-yyigbmHGRAjMglENMcYIGWhfEQiMIaXRPBHAxcSHBoZEYXywLZ", + "name": "regional-project-fnCMEEkoAMjYLXlNQGqkURvDMLeoyyigbmHGRAjMglENMcYIGW", "translation_module_original_language": "en", "translation_module_skip_auto_translation": False, }, @@ -544,10 +544,10 @@ "reporting_ns_contact_role": None, "reporting_ns_detail": { "id": 3, - "iso": "AJ", - "iso3": "YJE", - "name": "country-SKgBiqEXofsMIAqmaTVYaKHhHayPnSZuAxgjBPLqqIBKxNrRzW", - "society_name": "society-name-lxJJEqtKwXTzViQhVoCYSkgnGzYvZJNSRTdkyOaZfjEMBfeqox", + "iso": "ay", + "iso3": "PnS", + "name": "country-iMIaXRPBHAxcSHBoZEYXywLZVWSKgBiqEXofsMIAqmaTVYaKHh", + "society_name": "society-name-ZuAxgjBPLqqIBKxNrRzWnAJYJElxJJEqtKwXTzViQhVoCYSkgn", }, "secondary_sectors": [], "secondary_sectors_display": [], diff --git a/deployments/tests.py b/deployments/tests.py index 2c8609d76..853ea418e 100644 --- a/deployments/tests.py +++ b/deployments/tests.py @@ -204,7 +204,7 @@ def test_project_csv_api(self): slug="event-slug", districts=[district1.id, district2.id], dtype=dtype, - title="event-1", + name="event-1", ) ProjectFactory.create_batch( 10, diff --git a/lang/tests.py b/lang/tests.py index 7e9a337d7..685816ce8 100644 --- a/lang/tests.py +++ b/lang/tests.py @@ -244,6 +244,8 @@ def test_ifrc_translator(self, requests_mock): ]: with override_settings( AUTO_TRANSLATION_TRANSLATOR="lang.translation.IfrcTranslator", + IFRC_TRANSLATION_DOMAIN=None, + IFRC_TRANSLATION_API_KEY=None, **settings_params, ): with self.assertRaises(Exception):