diff --git a/api/admin.py b/api/admin.py
index 02bd8bcac..0318aaadf 100644
--- a/api/admin.py
+++ b/api/admin.py
@@ -248,12 +248,14 @@ 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)
@@ -337,7 +339,7 @@ class FieldReportAdmin(CompareVersionAdmin, RegionRestrictedAdmin, TranslationAd
def create_events(self, request, queryset):
for report in queryset:
event = models.Event.objects.create(
- name=report.summary,
+ title=report.title,
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 f3656a2e6..71bf55b62 100644
--- a/api/factories/event.py
+++ b/api/factories/event.py
@@ -23,6 +23,7 @@ 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/management/commands/create_events.py b/api/management/commands/create_events.py
index 7078b772f..519bc8c5f 100644
--- a/api/management/commands/create_events.py
+++ b/api/management/commands/create_events.py
@@ -14,11 +14,12 @@ def handle(self, *args, **options):
print("Creating %s events" % len(appeals_without_events))
for appeal in appeals_without_events:
fields = {
- "name": appeal.name,
+ "title": appeal.name,
"dtype": appeal.dtype,
"disaster_start_date": appeal.start_date,
"auto_generated": True,
"auto_generated_source": SOURCES["appeal_admin"],
+ "skip_auto_generate_name": True,
}
event = Event.objects.create(**fields)
if appeal.country is not None:
diff --git a/api/management/commands/ingest_gdacs.py b/api/management/commands/ingest_gdacs.py
index c356d1cfc..c896eb100 100644
--- a/api/management/commands/ingest_gdacs.py
+++ b/api/management/commands/ingest_gdacs.py
@@ -100,11 +100,12 @@ def handle(self, *args, **options):
title = "%s..." % title[:97]
fields = {
- "name": title,
+ "title": title,
"summary": data["description"],
"disaster_start_date": data["publication_date"],
"auto_generated": True,
"auto_generated_source": SOURCES["gdacs"],
+ "skip_auto_generate_name": True,
"ifrc_severity_level": data["alert_level"],
}
event = Event.objects.create(**fields)
diff --git a/api/management/commands/ingest_who.py b/api/management/commands/ingest_who.py
index bdc0704c8..26b575241 100644
--- a/api/management/commands/ingest_who.py
+++ b/api/management/commands/ingest_who.py
@@ -127,11 +127,12 @@ def handle(self, *args, **options):
summary = data["description"] + " (" + data["category"] + ")"
fields = {
- "name": title,
+ "title": title,
"summary": summary,
"disaster_start_date": date,
"auto_generated": True,
"auto_generated_source": data["guid"],
+ "skip_auto_generate_name": True,
"ifrc_severity_level": alert_level,
}
# TODO: fields['name'] sometimes exceeds 100 maxlength, so will need some altering if this will be used
diff --git a/api/migrations/0219_event_skip_auto_generate_name_event_title_and_more.py b/api/migrations/0219_event_skip_auto_generate_name_event_title_and_more.py
new file mode 100644
index 000000000..63a88e2b9
--- /dev/null
+++ b/api/migrations/0219_event_skip_auto_generate_name_event_title_and_more.py
@@ -0,0 +1,69 @@
+# Generated by Django 4.2.17 on 2025-02-24 06:59
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("api", "0218_remove_event_title_remove_event_title_ar_and_more"),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name="event",
+ name="skip_auto_generate_name",
+ field=models.BooleanField(
+ default=False, help_text="If checked, the name of the Emergency will not be auto-generated. "
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="title",
+ field=models.CharField(
+ blank=True,
+ help_text="Title is used to generate the name of the Emergency. The name is constructed as: Country IS03 or Name: Disaster Type - Start Date - Title",
+ max_length=256,
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="title_ar",
+ field=models.CharField(
+ blank=True,
+ help_text="Title is used to generate the name of the Emergency. The name is constructed as: Country IS03 or Name: Disaster Type - Start Date - Title",
+ max_length=256,
+ null=True,
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="title_en",
+ field=models.CharField(
+ blank=True,
+ help_text="Title is used to generate the name of the Emergency. The name is constructed as: Country IS03 or Name: Disaster Type - Start Date - Title",
+ max_length=256,
+ null=True,
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="title_es",
+ field=models.CharField(
+ blank=True,
+ help_text="Title is used to generate the name of the Emergency. The name is constructed as: Country IS03 or Name: Disaster Type - Start Date - Title",
+ max_length=256,
+ null=True,
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="title_fr",
+ field=models.CharField(
+ blank=True,
+ help_text="Title is used to generate the name of the Emergency. The name is constructed as: Country IS03 or Name: Disaster Type - Start Date - Title",
+ max_length=256,
+ null=True,
+ ),
+ ),
+ ]
diff --git a/api/models.py b/api/models.py
index d174f7fb0..26ba2306d 100644
--- a/api/models.py
+++ b/api/models.py
@@ -741,6 +741,19 @@ def snippet_image_path(instance, filename):
class Event(models.Model):
"""A disaster, which could cover multiple countries"""
+ title = models.CharField(
+ max_length=256,
+ blank=True,
+ help_text=_(
+ "Title is used to generate the name of the Emergency. "
+ "The name is constructed as: "
+ "Country IS03 or Name: Disaster Type - Start Date - Title"
+ ),
+ )
+ skip_auto_generate_name = models.BooleanField(
+ default=False,
+ help_text=_("If checked, the name of the Emergency will not be auto-generated. "),
+ )
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"))
@@ -872,6 +885,22 @@ def record_type(self):
def to_dict(self):
return to_dict(self)
+ def generate_formatted_name(self):
+ disaster_start_date = self.disaster_start_date.strftime("%m-%Y")
+ # NOTE: using the country name if the iso3 is not available eg: Africa Region
+ country_iso3_or_name = (
+ self.countries.first().iso3 or self.countries.first().name if self.id and self.countries.first() else "N/A"
+ )
+ for lang in AVAILABLE_LANGUAGES:
+ with translation_override(lang):
+ dtype = self.dtype.name if self.dtype else "N/A"
+ # NOTE: Skip Auto generating name if the skip_auto_generate_name is True
+ if self.skip_auto_generate_name:
+ self.name = self.title
+ else:
+ self.name = f"{country_iso3_or_name}: {dtype} - {disaster_start_date} - {self.title}"
+ yield build_localized_fieldname("name", lang)
+
def save(self, *args, **kwargs):
# Make the slug lowercase
@@ -882,6 +911,15 @@ 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):
diff --git a/api/receivers.py b/api/receivers.py
index dfa57a304..b8f182e3f 100644
--- a/api/receivers.py
+++ b/api/receivers.py
@@ -288,6 +288,15 @@ 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 70d28e7be..bcb9f54ae 100644
--- a/api/serializers.py
+++ b/api/serializers.py
@@ -1164,6 +1164,7 @@ class Meta:
"dtype",
"countries",
"summary",
+ "title",
"num_affected",
"ifrc_severity_level",
"ifrc_severity_level_display",
@@ -1215,6 +1216,7 @@ class Meta:
"dtype_name",
"countries",
"summary",
+ "title",
"num_affected",
"ifrc_severity_level",
"glide",
@@ -1299,6 +1301,7 @@ class Meta:
"countries",
"districts",
"summary",
+ "title",
"num_affected",
"tab_two_title",
"tab_three_title",
@@ -2056,7 +2059,7 @@ class Meta:
def create_event(self, report):
event = Event.objects.create(
- name=report.summary,
+ title=report.title,
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 f63d3355c..1038f3505 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(name="disaster1", summary="test disaster", dtype=dtype)
- event = models.Event.objects.create(name="disaster2", summary="another test disaster", dtype=dtype)
+ 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.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(name="disaster1")
- obj2 = models.Event.objects.get(name="disaster2")
+ obj1 = models.Event.objects.get(title="disaster1")
+ obj2 = models.Event.objects.get(title="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(name="associated event", summary="foo")
+ event = models.Event.objects.create(title="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(name="disaster1", summary="test disaster", dtype=dtype)
+ event = models.Event.objects.create(title="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(name="disaster1")
+ event = models.Event.objects.get(title="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 f4f67b945..4b9cff70c 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(name="disaster1", summary="test disaster1", dtype=dtype1)
+ event1 = models.Event.objects.create(title="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.name, response["summary"])
+ self.assertEqual(created.event.title, "test")
# event_pk = created.event.id
# body['countries'] = [country2.id]
diff --git a/api/translation.py b/api/translation.py
index c801b355b..a68847800 100644
--- a/api/translation.py
+++ b/api/translation.py
@@ -78,7 +78,8 @@ class DisasterTypeTO(TranslationOptions):
@register(Event)
class EventTO(TranslationOptions):
- fields = ("name", "summary")
+ fields = ("name", "summary", "title")
+ skip_fields = ("name",) # XXX: CUSTOM field Not used by TranslationOptions, but used in lang/tasks.py
@register(ExternalPartner)
diff --git a/api/utils.py b/api/utils.py
index 925a5b8ed..2781cdb28 100644
--- a/api/utils.py
+++ b/api/utils.py
@@ -135,8 +135,8 @@ def generate_field_report_title(
# NOTE: Checking if event or country is changed while Updating
if id:
fr = get_object_or_404(FieldReport, id=id)
- if fr.event == event and fr.countries.first() == country:
- fr_num = current_fr_number
+ if fr.fr_num and fr.event == event and fr.countries.first() == country:
+ fr_num = fr.fr_num
suffix = ""
if fr_num > 1 and event:
diff --git a/deployments/snapshots/snap_tests.py b/deployments/snapshots/snap_tests.py
index efb4e9f1b..78cda6642 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,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
+0,100000,,,1,1,disaster-type-1,summary,en,2008-01-01,2,1,,2,NPL: disaster-type-1 - 08-2022 - 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,NPL,country-1,society-name-1,"dct1, dct2","1, 2","False, True","True, False","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,NPL,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,NPL: disaster-type-1 - 08-2022 - 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,NPL,country-1,society-name-1,"dct1, dct2","1, 2","False, True","True, False","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,NPL,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,NPL: disaster-type-1 - 08-2022 - 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,NPL,country-1,society-name-1,"dct1, dct2","1, 2","False, True","True, False","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,NPL,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,NPL: disaster-type-1 - 08-2022 - 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,NPL,country-1,society-name-1,"dct1, dct2","1, 2","False, True","True, False","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,NPL,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,NPL: disaster-type-1 - 08-2022 - 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,NPL,country-1,society-name-1,"dct1, dct2","1, 2","False, True","True, False","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,NPL,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,NPL: disaster-type-1 - 08-2022 - 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,NPL,country-1,society-name-1,"dct1, dct2","1, 2","False, True","True, False","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,NPL,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,NPL: disaster-type-1 - 08-2022 - 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,NPL,country-1,society-name-1,"dct1, dct2","1, 2","False, True","True, False","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,NPL,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,NPL: disaster-type-1 - 08-2022 - 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,NPL,country-1,society-name-1,"dct1, dct2","1, 2","False, True","True, False","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,NPL,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,NPL: disaster-type-1 - 08-2022 - 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,NPL,country-1,society-name-1,"dct1, dct2","1, 2","False, True","True, False","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,NPL,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,NPL: disaster-type-1 - 08-2022 - 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,NPL,country-1,society-name-1,"dct1, dct2","1, 2","False, True","True, False","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,NPL,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": 6440000,
+ "budget_amount": 6200000,
"description": "",
"document": None,
"dtype": 3,
"dtype_detail": {
"id": 3,
- "name": "disaster-type-MSVGtSJuTVJOnmnNTsRwRiTPlGISOuThWwJELKQTARVIsBZaHg",
- "summary": "byjdQdmrWYksRqjdSYsnWIcwCgNRVJoVPJypGYYZSsSQdyyAYRuJdaVqmNXCoOTTPxWLIVMmXUmsClRellVGhycBrJqikLqavDTjcjuMdXONQtFYKJweYTuHolHeYGkAIIzfwonQvvxsnWNHEJWPahQwCpPNNpcRuyYhyqIUsbHXxGZGCFcsPmuGfgkXIIaOenQOXnRBgnISVXBPeVRjbDTvcfedlYqJeKoqAyCOzBubyRhIaPUNeWVLcSewGgsYRtMfsWCyzQbEkIoiVzYZIsOjtRYUPxaJJjhcaKMzIJftnVVUwnAPGjkloNqmhlQZKdWJDPJesQeqgmULFvwiQPpgsNemuFCvNQtSLjKKxZuBkaupYoTVPBrxiRUvEDCwXtFJglPMfriImqUOeUebGObLLzXLncJqIIEPXjxzoXLUsiDGGfzxGaQpZNRkWGiCklKKQjVUEwcoWFoeqxocQnHYxyEDccPugTHOrVqLIKlyPyxLPeHq",
+ "name": "disaster-type-SESMjxXfpkFfRNvWOddwPjSIYgiFouJYPWwZCUmbSywUiqcFTC",
+ "summary": "JsISFmKlIwuUDrMJkeHjCsqIxDaXOGyUlbNxXNpuUeQIymHRFXJjNsuAPuhgHQecilcmgFmgcKPyQFHNSLqdxoMTeanPFfDZOdxJVAxYTdNrHcUetenHggUoIymmHQpKOlJVJAVgXOKwRDSQBgkYlJzGvQkIMCwuJuxAWOBUuMpKInyXJVqxCCzaUcsMbHitatonubXSrJGJKKjgcDwjiqxLpoqZtfKzKnUeUuYElFSSKgMPtcUZKyfXdXvwBAhXoVPMaOXOydtHcuIKjuGSojdRUzCWMKGfoBsYzjivfEKVdJzqfzGBXSiWiEJmFzPKmJNVHpperXBuRKfhQABxwmuwMPbXtkwNZCNjCcomRxjWUfhVdpNjsavSZhtCEbvnVInnIHWqJENUjSSQbyLQHcqkdsmYSNrdDPaeyQrQQxgbsPyoyGTguFMIflmGDJTbcpHtvFzVkbwRwwOtpGrZdOqybJrojvzQifUyHRNORoApKjBtMvCI",
"translation_module_original_language": "en",
},
"end_date": "2008-01-01",
@@ -130,9 +130,9 @@
"dtype": 1,
"emergency_response_contact_email": None,
"id": 2,
- "name": "xNooiEjDVMxASJEWIZQnWpRWMYfHCHTxeKhdJGmKIjkuHChRnT",
+ "name": "NPL: disaster-type-LyOxgRoEbNJuNoPeODStPAhicctFhgpIiyDxQVSIALVUjAPgFN - 03-2012 - event-1",
"parent_event": 1,
- "slug": "lffgczddigadkdjdrztubzqavnlecbwseideecsalxixpupaxy",
+ "slug": "uifsuvalmiyixhgrkqezsvvzhdejworurzzjxfyzaqihdxrvrq",
"start_date": None,
"translation_module_original_language": "en",
},
@@ -140,22 +140,22 @@
"modified_at": "2008-01-01T00:00:00.123456Z",
"modified_by": None,
"modified_by_detail": None,
- "name": "project-yoHzwwFYEMaGiCkoeGPrnjlkxMThQoAZvUhEREEnLkPAbpciKL",
- "operation_type": 0,
- "operation_type_display": "Programme",
+ "name": "project-inPiLIRZmitSTHiBXjPKkueJIUhlujUbWuAAtCVOVrjXmgilbW",
+ "operation_type": 1,
+ "operation_type_display": "Emergency Operation",
"primary_sector": 1,
"primary_sector_display": "sect-OhbVrpoiVgRVIfLBcbfnoGMbJmTPSIAoCLrZaWZkSBvrjnWvgf",
- "programme_type": 0,
- "programme_type_display": "Bilateral",
+ "programme_type": 2,
+ "programme_type_display": "Domestic",
"project_admin2": [],
"project_admin2_detail": [],
- "project_country": 2,
+ "project_country": 3,
"project_country_detail": {
- "id": 2,
- "iso": "Cp",
- "iso3": "xgR",
- "name": "country-oEbNJuNoPeODStPAhicctFhgpIiyDxQVSIALVUjAPgFNArcSxn",
- "society_name": "society-name-xIPwdzrmhDfQnPOMbdYvpiYKneWJnLnovXjYMarjiIqZlhQbia",
+ "id": 3,
+ "iso": "GX",
+ "iso3": "lSL",
+ "name": "country-sJHxSgckFiTVUAgqNmmhznDYmTvgWAcORLhXCDQLGiFaHVdJBL",
+ "society_name": "society-name-lUigyQMMuGyAMSWprzvsCZiiAMSVGtSJuTVJOnmnNTsRwRiTPl",
},
"project_districts": [],
"project_districts_detail": [],
@@ -168,20 +168,20 @@
"created_at": "2008-01-01T00:00:00.123456Z",
"id": 1,
"modified_at": "2008-01-01T00:00:00.123456Z",
- "name": "regional-project-fnCMEEkoAMjYLXlNQGqkURvDMLeoyyigbmHGRAjMglENMcYIGW",
+ "name": "regional-project-TPxlyFEikmocAWarAoVQmWnelCNFSuDpBzXcMVyUuzNVKMIHPT",
"translation_module_original_language": "en",
"translation_module_skip_auto_translation": False,
},
- "reporting_ns": 1,
+ "reporting_ns": 2,
"reporting_ns_contact_email": None,
"reporting_ns_contact_name": None,
"reporting_ns_contact_role": None,
"reporting_ns_detail": {
- "id": 1,
- "iso": "yr",
- "iso3": "OSJ",
- "name": "country-wMqZcUDIhyfJsONxKmTecQoXsfogyrDOxkxwnQrSRPeMOkIUpk",
- "society_name": "society-name-oRuXXdocZuzrenKTunPFzPDjqipVJIqVLBLzxoiGFfWdhjOkYR",
+ "id": 2,
+ "iso": "Xe",
+ "iso3": "bLe",
+ "name": "country-prPfpJMMUMsXSbQtnHMGmVzsPdYYpFyhpFOMeHaxuiyKAxIRlW",
+ "society_name": "society-name-aqncdYzGsOTGXABSzfOIINjrftfGnZjIuzLOWPRPetSBUpdpfB",
},
"secondary_sectors": [],
"secondary_sectors_display": [],
@@ -209,14 +209,14 @@
{
"actual_expenditure": 0,
"annual_splits": [],
- "budget_amount": 6440000,
+ "budget_amount": 6200000,
"description": "",
"document": None,
"dtype": 3,
"dtype_detail": {
"id": 3,
- "name": "disaster-type-MSVGtSJuTVJOnmnNTsRwRiTPlGISOuThWwJELKQTARVIsBZaHg",
- "summary": "byjdQdmrWYksRqjdSYsnWIcwCgNRVJoVPJypGYYZSsSQdyyAYRuJdaVqmNXCoOTTPxWLIVMmXUmsClRellVGhycBrJqikLqavDTjcjuMdXONQtFYKJweYTuHolHeYGkAIIzfwonQvvxsnWNHEJWPahQwCpPNNpcRuyYhyqIUsbHXxGZGCFcsPmuGfgkXIIaOenQOXnRBgnISVXBPeVRjbDTvcfedlYqJeKoqAyCOzBubyRhIaPUNeWVLcSewGgsYRtMfsWCyzQbEkIoiVzYZIsOjtRYUPxaJJjhcaKMzIJftnVVUwnAPGjkloNqmhlQZKdWJDPJesQeqgmULFvwiQPpgsNemuFCvNQtSLjKKxZuBkaupYoTVPBrxiRUvEDCwXtFJglPMfriImqUOeUebGObLLzXLncJqIIEPXjxzoXLUsiDGGfzxGaQpZNRkWGiCklKKQjVUEwcoWFoeqxocQnHYxyEDccPugTHOrVqLIKlyPyxLPeHq",
+ "name": "disaster-type-SESMjxXfpkFfRNvWOddwPjSIYgiFouJYPWwZCUmbSywUiqcFTC",
+ "summary": "JsISFmKlIwuUDrMJkeHjCsqIxDaXOGyUlbNxXNpuUeQIymHRFXJjNsuAPuhgHQecilcmgFmgcKPyQFHNSLqdxoMTeanPFfDZOdxJVAxYTdNrHcUetenHggUoIymmHQpKOlJVJAVgXOKwRDSQBgkYlJzGvQkIMCwuJuxAWOBUuMpKInyXJVqxCCzaUcsMbHitatonubXSrJGJKKjgcDwjiqxLpoqZtfKzKnUeUuYElFSSKgMPtcUZKyfXdXvwBAhXoVPMaOXOydtHcuIKjuGSojdRUzCWMKGfoBsYzjivfEKVdJzqfzGBXSiWiEJmFzPKmJNVHpperXBuRKfhQABxwmuwMPbXtkwNZCNjCcomRxjWUfhVdpNjsavSZhtCEbvnVInnIHWqJENUjSSQbyLQHcqkdsmYSNrdDPaeyQrQQxgbsPyoyGTguFMIflmGDJTbcpHtvFzVkbwRwwOtpGrZdOqybJrojvzQifUyHRNORoApKjBtMvCI",
"translation_module_original_language": "en",
},
"end_date": "2008-01-01",
@@ -226,9 +226,9 @@
"dtype": 1,
"emergency_response_contact_email": None,
"id": 2,
- "name": "xNooiEjDVMxASJEWIZQnWpRWMYfHCHTxeKhdJGmKIjkuHChRnT",
+ "name": "NPL: disaster-type-LyOxgRoEbNJuNoPeODStPAhicctFhgpIiyDxQVSIALVUjAPgFN - 03-2012 - event-1",
"parent_event": 1,
- "slug": "lffgczddigadkdjdrztubzqavnlecbwseideecsalxixpupaxy",
+ "slug": "uifsuvalmiyixhgrkqezsvvzhdejworurzzjxfyzaqihdxrvrq",
"start_date": None,
"translation_module_original_language": "en",
},
@@ -236,22 +236,22 @@
"modified_at": "2008-01-01T00:00:00.123456Z",
"modified_by": None,
"modified_by_detail": None,
- "name": "project-yoHzwwFYEMaGiCkoeGPrnjlkxMThQoAZvUhEREEnLkPAbpciKL",
- "operation_type": 0,
- "operation_type_display": "Programme",
+ "name": "project-inPiLIRZmitSTHiBXjPKkueJIUhlujUbWuAAtCVOVrjXmgilbW",
+ "operation_type": 1,
+ "operation_type_display": "Emergency Operation",
"primary_sector": 1,
"primary_sector_display": "sect-OhbVrpoiVgRVIfLBcbfnoGMbJmTPSIAoCLrZaWZkSBvrjnWvgf",
- "programme_type": 0,
- "programme_type_display": "Bilateral",
+ "programme_type": 2,
+ "programme_type_display": "Domestic",
"project_admin2": [],
"project_admin2_detail": [],
- "project_country": 2,
+ "project_country": 3,
"project_country_detail": {
- "id": 2,
- "iso": "Cp",
- "iso3": "xgR",
- "name": "country-oEbNJuNoPeODStPAhicctFhgpIiyDxQVSIALVUjAPgFNArcSxn",
- "society_name": "society-name-xIPwdzrmhDfQnPOMbdYvpiYKneWJnLnovXjYMarjiIqZlhQbia",
+ "id": 3,
+ "iso": "GX",
+ "iso3": "lSL",
+ "name": "country-sJHxSgckFiTVUAgqNmmhznDYmTvgWAcORLhXCDQLGiFaHVdJBL",
+ "society_name": "society-name-lUigyQMMuGyAMSWprzvsCZiiAMSVGtSJuTVJOnmnNTsRwRiTPl",
},
"project_districts": [],
"project_districts_detail": [],
@@ -264,20 +264,20 @@
"created_at": "2008-01-01T00:00:00.123456Z",
"id": 1,
"modified_at": "2008-01-01T00:00:00.123456Z",
- "name": "regional-project-fnCMEEkoAMjYLXlNQGqkURvDMLeoyyigbmHGRAjMglENMcYIGW",
+ "name": "regional-project-TPxlyFEikmocAWarAoVQmWnelCNFSuDpBzXcMVyUuzNVKMIHPT",
"translation_module_original_language": "en",
"translation_module_skip_auto_translation": False,
},
- "reporting_ns": 1,
+ "reporting_ns": 2,
"reporting_ns_contact_email": None,
"reporting_ns_contact_name": None,
"reporting_ns_contact_role": None,
"reporting_ns_detail": {
- "id": 1,
- "iso": "yr",
- "iso3": "OSJ",
- "name": "country-wMqZcUDIhyfJsONxKmTecQoXsfogyrDOxkxwnQrSRPeMOkIUpk",
- "society_name": "society-name-oRuXXdocZuzrenKTunPFzPDjqipVJIqVLBLzxoiGFfWdhjOkYR",
+ "id": 2,
+ "iso": "Xe",
+ "iso3": "bLe",
+ "name": "country-prPfpJMMUMsXSbQtnHMGmVzsPdYYpFyhpFOMeHaxuiyKAxIRlW",
+ "society_name": "society-name-aqncdYzGsOTGXABSzfOIINjrftfGnZjIuzLOWPRPetSBUpdpfB",
},
"secondary_sectors": [],
"secondary_sectors_display": [],
@@ -297,26 +297,26 @@
{
"actual_expenditure": 0,
"annual_splits": [],
- "budget_amount": 6090000,
+ "budget_amount": 8190000,
"description": "",
"document": None,
- "dtype": 6,
+ "dtype": 4,
"dtype_detail": {
- "id": 6,
- "name": "disaster-type-blCoqPewfsGGIPfYroghexcImvmRvqtVXRrmTMiWTVIqaXtswY",
- "summary": "zzLWPaEPGWjzooUVnEoHLYJWDUDvYfumBXSAnCCJbxiKitVaFZQwvoABRWzWXSItuLbKYcijvKOZMMKzynzeIymEgvKCOtfkgRJlcSMFblmeysnosQHeDdxHakuAzkhiIAEVeynintBTQEkMKtLmGTRDrmajCezMZpHvKFDDKcVfsPDwSTYtzNZlAplNUBDyQlSKgzScpkrOIsQeSUUnFAWJhxeWgGXXuACkqnGcDbeOSRVDyvVzmzcaqhTiuQVDFDefJQpTCiErkkbMglshIVzkeQWaRrjCwlnTcRInCSdOZHPQTQgyStCdMadXyXmpxpmfbAbavmRQeogZQkUkcAGguuJOmNnIzBhongwulazPuaynDoeQrPNxcenAtXMFgTIYKkqgMuOSyRXSivlOWSuQEevbMLCyGOVoGLTaobNWhtpVBWpNfdixFsmjynPcpUMCVviruPYWcHYAPsWboUvvpnIdQpZRSUoMyHulCOaeFemdOjni",
+ "id": 4,
+ "name": "disaster-type-qwqLfXGbhVQDlYlzcfATtuLUDWQCNZqvZlnlfVMqRgBIbazhak",
+ "summary": "PEDSzQVMUFtNNxSRSRzZtfiiamhbSmbnEPjPpBOYImftXDjEBbhkjVSCFEbCLpmsKzdvagOTBAFVLMUJscFzFGLUNRFoTdHbBKuJerPAEhFNPwCSBbksUmEwCoGoLRvMTQDisUTyARPVxYEZkNnsSVfQEilmkMFgYAFtpnJdbwqwRklGcZevBhNohJoFqvYwXcXJrjSGMQgTdCZDWhgYNNYgJcGgkOhnxkUsTCWGFUgjPxvihmCAXXapZEvsGkfrxTWAxOQpjWWHAYoiZBAADHYRxbCjXaTZHefvuzXkBdzWcQPjKdOTZQHsAzRSJtUVuwarHNjSzCPnINYNPCSwZYPzXmtfcIvyUUViHIsnfGJtHvWOkbbYILqpXtUBGhUdxqOGwhdWPhCtKVaDvpZVLKTOQIMowtsQYTKRiTyHVpguHLmXxDgjTBAffdBiEnCexRHzLJHXzqLFOBCSFUAkjGiFTDiTGHhSnDEcVkJxhMAhhxKscHjh",
"translation_module_original_language": "en",
},
"end_date": "2008-01-01",
- "event": 4,
+ "event": 2,
"event_detail": {
"countries_for_preview": [],
- "dtype": 4,
+ "dtype": 1,
"emergency_response_contact_email": None,
- "id": 4,
- "name": "ZoHPvALvPPYuFLQSHJCDtKiYtkYqoExsXdjwsDkNkTIsllTSQY",
- "parent_event": 3,
- "slug": "jkphcukicqxlnjtcquwjxcikithbzfxjdujavigvptseswkqjz",
+ "id": 2,
+ "name": "NPL: disaster-type-LyOxgRoEbNJuNoPeODStPAhicctFhgpIiyDxQVSIALVUjAPgFN - 03-2012 - event-1",
+ "parent_event": 1,
+ "slug": "uifsuvalmiyixhgrkqezsvvzhdejworurzzjxfyzaqihdxrvrq",
"start_date": None,
"translation_module_original_language": "en",
},
@@ -324,22 +324,22 @@
"modified_at": "2008-01-01T00:00:00.123456Z",
"modified_by": None,
"modified_by_detail": None,
- "name": "project-flLJYnpGfBUDtkUmpBlMptsKCOmrYEfxzykECBGNVBWjYEbWyB",
- "operation_type": 1,
- "operation_type_display": "Emergency Operation",
+ "name": "project-xtxtsFbYjjYLAdtsnlVFahJwecAEKtKCvYyEUMiWiGODWCQCjU",
+ "operation_type": 0,
+ "operation_type_display": "Programme",
"primary_sector": 1,
"primary_sector_display": "sect-OhbVrpoiVgRVIfLBcbfnoGMbJmTPSIAoCLrZaWZkSBvrjnWvgf",
- "programme_type": 0,
- "programme_type_display": "Bilateral",
+ "programme_type": 1,
+ "programme_type_display": "Multilateral",
"project_admin2": [],
"project_admin2_detail": [],
- "project_country": 4,
+ "project_country": 5,
"project_country_detail": {
- "id": 4,
- "iso": "rN",
- "iso3": "OJn",
- "name": "country-XkvKQjkjlXTdAttUXCsOlhimaNWqaDFFIZaMFpnLQEDACfMMap",
- "society_name": "society-name-dljdPwcjcQKMtvfdgAlkRsNQSSMKYJlDVLxcfXtuxyeWBJesEi",
+ "id": 5,
+ "iso": "ls",
+ "iso3": "egk",
+ "name": "country-ivpIhPEVWLSnWVWouwrGRBrdexwCFGHhETIRIsCNxZRSZemDff",
+ "society_name": "society-name-rhSjFjnHObsARIiEwACVPbsmebZoHPvALvPPYuFLQSHJCDtKiY",
},
"project_districts": [],
"project_districts_detail": [],
@@ -352,20 +352,20 @@
"created_at": "2008-01-01T00:00:00.123456Z",
"id": 2,
"modified_at": "2008-01-01T00:00:00.123456Z",
- "name": "regional-project-JMEeviTEmjmaaGUUxFzAzVxyFtPLeAchyKkmWBqXWUwGTFOSxS",
+ "name": "regional-project-TbKOYXTtJPhPJfmNIKWdKHmWEGbhQIlbrYnpTLCfZIMuzLcFbv",
"translation_module_original_language": "en",
"translation_module_skip_auto_translation": False,
},
- "reporting_ns": 3,
+ "reporting_ns": 4,
"reporting_ns_contact_email": None,
"reporting_ns_contact_name": None,
"reporting_ns_contact_role": None,
"reporting_ns_detail": {
- "id": 3,
- "iso": "yP",
- "iso3": "nSZ",
- "name": "country-MIaXRPBHAxcSHBoZEYXywLZVWSKgBiqEXofsMIAqmaTVYaKHhH",
- "society_name": "society-name-uAxgjBPLqqIBKxNrRzWnAJYJElxJJEqtKwXTzViQhVoCYSkgnG",
+ "id": 4,
+ "iso": "Df",
+ "iso3": "quS",
+ "name": "country-cpHIzVcJyHWOdmsCztXsDkBsNdSHjDPCfUGhlXLSIizAuCblDL",
+ "society_name": "society-name-PTYkTUhfhTCOxfHTyUYGNkyJycXkvKQjkjlXTdAttUXCsOlhim",
},
"secondary_sectors": [],
"secondary_sectors_display": [],
@@ -390,14 +390,14 @@
snapshots["TestProjectAPI::test_project_read 1"] = {
"actual_expenditure": 0,
"annual_splits": [],
- "budget_amount": 6440000,
+ "budget_amount": 6200000,
"description": "",
"document": None,
"dtype": 3,
"dtype_detail": {
"id": 3,
- "name": "disaster-type-MSVGtSJuTVJOnmnNTsRwRiTPlGISOuThWwJELKQTARVIsBZaHg",
- "summary": "byjdQdmrWYksRqjdSYsnWIcwCgNRVJoVPJypGYYZSsSQdyyAYRuJdaVqmNXCoOTTPxWLIVMmXUmsClRellVGhycBrJqikLqavDTjcjuMdXONQtFYKJweYTuHolHeYGkAIIzfwonQvvxsnWNHEJWPahQwCpPNNpcRuyYhyqIUsbHXxGZGCFcsPmuGfgkXIIaOenQOXnRBgnISVXBPeVRjbDTvcfedlYqJeKoqAyCOzBubyRhIaPUNeWVLcSewGgsYRtMfsWCyzQbEkIoiVzYZIsOjtRYUPxaJJjhcaKMzIJftnVVUwnAPGjkloNqmhlQZKdWJDPJesQeqgmULFvwiQPpgsNemuFCvNQtSLjKKxZuBkaupYoTVPBrxiRUvEDCwXtFJglPMfriImqUOeUebGObLLzXLncJqIIEPXjxzoXLUsiDGGfzxGaQpZNRkWGiCklKKQjVUEwcoWFoeqxocQnHYxyEDccPugTHOrVqLIKlyPyxLPeHq",
+ "name": "disaster-type-SESMjxXfpkFfRNvWOddwPjSIYgiFouJYPWwZCUmbSywUiqcFTC",
+ "summary": "JsISFmKlIwuUDrMJkeHjCsqIxDaXOGyUlbNxXNpuUeQIymHRFXJjNsuAPuhgHQecilcmgFmgcKPyQFHNSLqdxoMTeanPFfDZOdxJVAxYTdNrHcUetenHggUoIymmHQpKOlJVJAVgXOKwRDSQBgkYlJzGvQkIMCwuJuxAWOBUuMpKInyXJVqxCCzaUcsMbHitatonubXSrJGJKKjgcDwjiqxLpoqZtfKzKnUeUuYElFSSKgMPtcUZKyfXdXvwBAhXoVPMaOXOydtHcuIKjuGSojdRUzCWMKGfoBsYzjivfEKVdJzqfzGBXSiWiEJmFzPKmJNVHpperXBuRKfhQABxwmuwMPbXtkwNZCNjCcomRxjWUfhVdpNjsavSZhtCEbvnVInnIHWqJENUjSSQbyLQHcqkdsmYSNrdDPaeyQrQQxgbsPyoyGTguFMIflmGDJTbcpHtvFzVkbwRwwOtpGrZdOqybJrojvzQifUyHRNORoApKjBtMvCI",
"translation_module_original_language": "en",
},
"end_date": "2008-01-01",
@@ -407,9 +407,9 @@
"dtype": 1,
"emergency_response_contact_email": None,
"id": 2,
- "name": "xNooiEjDVMxASJEWIZQnWpRWMYfHCHTxeKhdJGmKIjkuHChRnT",
+ "name": "NPL: disaster-type-LyOxgRoEbNJuNoPeODStPAhicctFhgpIiyDxQVSIALVUjAPgFN - 03-2012 - event-1",
"parent_event": 1,
- "slug": "lffgczddigadkdjdrztubzqavnlecbwseideecsalxixpupaxy",
+ "slug": "uifsuvalmiyixhgrkqezsvvzhdejworurzzjxfyzaqihdxrvrq",
"start_date": None,
"translation_module_original_language": "en",
},
@@ -417,22 +417,22 @@
"modified_at": "2008-01-01T00:00:00.123456Z",
"modified_by": None,
"modified_by_detail": None,
- "name": "project-yoHzwwFYEMaGiCkoeGPrnjlkxMThQoAZvUhEREEnLkPAbpciKL",
- "operation_type": 0,
- "operation_type_display": "Programme",
+ "name": "project-inPiLIRZmitSTHiBXjPKkueJIUhlujUbWuAAtCVOVrjXmgilbW",
+ "operation_type": 1,
+ "operation_type_display": "Emergency Operation",
"primary_sector": 1,
"primary_sector_display": "sect-OhbVrpoiVgRVIfLBcbfnoGMbJmTPSIAoCLrZaWZkSBvrjnWvgf",
- "programme_type": 0,
- "programme_type_display": "Bilateral",
+ "programme_type": 2,
+ "programme_type_display": "Domestic",
"project_admin2": [],
"project_admin2_detail": [],
- "project_country": 2,
+ "project_country": 3,
"project_country_detail": {
- "id": 2,
- "iso": "Cp",
- "iso3": "xgR",
- "name": "country-oEbNJuNoPeODStPAhicctFhgpIiyDxQVSIALVUjAPgFNArcSxn",
- "society_name": "society-name-xIPwdzrmhDfQnPOMbdYvpiYKneWJnLnovXjYMarjiIqZlhQbia",
+ "id": 3,
+ "iso": "GX",
+ "iso3": "lSL",
+ "name": "country-sJHxSgckFiTVUAgqNmmhznDYmTvgWAcORLhXCDQLGiFaHVdJBL",
+ "society_name": "society-name-lUigyQMMuGyAMSWprzvsCZiiAMSVGtSJuTVJOnmnNTsRwRiTPl",
},
"project_districts": [],
"project_districts_detail": [],
@@ -445,20 +445,20 @@
"created_at": "2008-01-01T00:00:00.123456Z",
"id": 1,
"modified_at": "2008-01-01T00:00:00.123456Z",
- "name": "regional-project-fnCMEEkoAMjYLXlNQGqkURvDMLeoyyigbmHGRAjMglENMcYIGW",
+ "name": "regional-project-TPxlyFEikmocAWarAoVQmWnelCNFSuDpBzXcMVyUuzNVKMIHPT",
"translation_module_original_language": "en",
"translation_module_skip_auto_translation": False,
},
- "reporting_ns": 1,
+ "reporting_ns": 2,
"reporting_ns_contact_email": None,
"reporting_ns_contact_name": None,
"reporting_ns_contact_role": None,
"reporting_ns_detail": {
- "id": 1,
- "iso": "yr",
- "iso3": "OSJ",
- "name": "country-wMqZcUDIhyfJsONxKmTecQoXsfogyrDOxkxwnQrSRPeMOkIUpk",
- "society_name": "society-name-oRuXXdocZuzrenKTunPFzPDjqipVJIqVLBLzxoiGFfWdhjOkYR",
+ "id": 2,
+ "iso": "Xe",
+ "iso3": "bLe",
+ "name": "country-prPfpJMMUMsXSbQtnHMGmVzsPdYYpFyhpFOMeHaxuiyKAxIRlW",
+ "society_name": "society-name-aqncdYzGsOTGXABSzfOIINjrftfGnZjIuzLOWPRPetSBUpdpfB",
},
"secondary_sectors": [],
"secondary_sectors_display": [],
@@ -479,14 +479,14 @@
snapshots["TestProjectAPI::test_project_update 1"] = {
"actual_expenditure": 0,
"annual_splits": [],
- "budget_amount": 6440000,
+ "budget_amount": 6200000,
"description": "",
"document": None,
"dtype": 3,
"dtype_detail": {
"id": 3,
- "name": "disaster-type-MSVGtSJuTVJOnmnNTsRwRiTPlGISOuThWwJELKQTARVIsBZaHg",
- "summary": "byjdQdmrWYksRqjdSYsnWIcwCgNRVJoVPJypGYYZSsSQdyyAYRuJdaVqmNXCoOTTPxWLIVMmXUmsClRellVGhycBrJqikLqavDTjcjuMdXONQtFYKJweYTuHolHeYGkAIIzfwonQvvxsnWNHEJWPahQwCpPNNpcRuyYhyqIUsbHXxGZGCFcsPmuGfgkXIIaOenQOXnRBgnISVXBPeVRjbDTvcfedlYqJeKoqAyCOzBubyRhIaPUNeWVLcSewGgsYRtMfsWCyzQbEkIoiVzYZIsOjtRYUPxaJJjhcaKMzIJftnVVUwnAPGjkloNqmhlQZKdWJDPJesQeqgmULFvwiQPpgsNemuFCvNQtSLjKKxZuBkaupYoTVPBrxiRUvEDCwXtFJglPMfriImqUOeUebGObLLzXLncJqIIEPXjxzoXLUsiDGGfzxGaQpZNRkWGiCklKKQjVUEwcoWFoeqxocQnHYxyEDccPugTHOrVqLIKlyPyxLPeHq",
+ "name": "disaster-type-SESMjxXfpkFfRNvWOddwPjSIYgiFouJYPWwZCUmbSywUiqcFTC",
+ "summary": "JsISFmKlIwuUDrMJkeHjCsqIxDaXOGyUlbNxXNpuUeQIymHRFXJjNsuAPuhgHQecilcmgFmgcKPyQFHNSLqdxoMTeanPFfDZOdxJVAxYTdNrHcUetenHggUoIymmHQpKOlJVJAVgXOKwRDSQBgkYlJzGvQkIMCwuJuxAWOBUuMpKInyXJVqxCCzaUcsMbHitatonubXSrJGJKKjgcDwjiqxLpoqZtfKzKnUeUuYElFSSKgMPtcUZKyfXdXvwBAhXoVPMaOXOydtHcuIKjuGSojdRUzCWMKGfoBsYzjivfEKVdJzqfzGBXSiWiEJmFzPKmJNVHpperXBuRKfhQABxwmuwMPbXtkwNZCNjCcomRxjWUfhVdpNjsavSZhtCEbvnVInnIHWqJENUjSSQbyLQHcqkdsmYSNrdDPaeyQrQQxgbsPyoyGTguFMIflmGDJTbcpHtvFzVkbwRwwOtpGrZdOqybJrojvzQifUyHRNORoApKjBtMvCI",
"translation_module_original_language": "en",
},
"end_date": "2008-01-01",
@@ -496,9 +496,9 @@
"dtype": 1,
"emergency_response_contact_email": None,
"id": 2,
- "name": "xNooiEjDVMxASJEWIZQnWpRWMYfHCHTxeKhdJGmKIjkuHChRnT",
+ "name": "NPL: disaster-type-LyOxgRoEbNJuNoPeODStPAhicctFhgpIiyDxQVSIALVUjAPgFN - 03-2012 - event-1",
"parent_event": 1,
- "slug": "lffgczddigadkdjdrztubzqavnlecbwseideecsalxixpupaxy",
+ "slug": "uifsuvalmiyixhgrkqezsvvzhdejworurzzjxfyzaqihdxrvrq",
"start_date": None,
"translation_module_original_language": "en",
},
@@ -507,24 +507,24 @@
"modified_by": 3,
"modified_by_detail": {"email": "jon@dave.com", "first_name": "Jon", "id": 3, "last_name": "Mon", "username": "jon@dave.com"},
"name": "Mock Project for Update API Test",
- "operation_type": 0,
- "operation_type_display": "Programme",
+ "operation_type": 1,
+ "operation_type_display": "Emergency Operation",
"primary_sector": 1,
"primary_sector_display": "sect-OhbVrpoiVgRVIfLBcbfnoGMbJmTPSIAoCLrZaWZkSBvrjnWvgf",
- "programme_type": 0,
- "programme_type_display": "Bilateral",
+ "programme_type": 2,
+ "programme_type_display": "Domestic",
"project_admin2": [],
"project_admin2_detail": [],
- "project_country": 3,
+ "project_country": 4,
"project_country_detail": {
- "id": 3,
- "iso": "ay",
- "iso3": "PnS",
- "name": "country-iMIaXRPBHAxcSHBoZEYXywLZVWSKgBiqEXofsMIAqmaTVYaKHh",
- "society_name": "society-name-ZuAxgjBPLqqIBKxNrRzWnAJYJElxJJEqtKwXTzViQhVoCYSkgn",
+ "id": 4,
+ "iso": "LT",
+ "iso3": "mDf",
+ "name": "country-CDcpHIzVcJyHWOdmsCztXsDkBsNdSHjDPCfUGhlXLSIizAuCbl",
+ "society_name": "society-name-quSPTYkTUhfhTCOxfHTyUYGNkyJycXkvKQjkjlXTdAttUXCsOl",
},
"project_districts": [1],
- "project_districts_detail": [{"id": 1, "name": "district-kyJycXkvKQjkjlXTdAttUXCsOlhimaNWqaDFFIZaMFpnLQEDAC"}],
+ "project_districts_detail": [{"id": 1, "name": "district-JTXnivpIhPEVWLSnWVWouwrGRBrdexwCFGHhETIRIsCNxZRSZe"}],
"reached_female": 0,
"reached_male": 0,
"reached_other": 0,
@@ -534,20 +534,20 @@
"created_at": "2008-01-01T00:00:00.123456Z",
"id": 1,
"modified_at": "2008-01-01T00:00:00.123456Z",
- "name": "regional-project-fnCMEEkoAMjYLXlNQGqkURvDMLeoyyigbmHGRAjMglENMcYIGW",
+ "name": "regional-project-TPxlyFEikmocAWarAoVQmWnelCNFSuDpBzXcMVyUuzNVKMIHPT",
"translation_module_original_language": "en",
"translation_module_skip_auto_translation": False,
},
- "reporting_ns": 3,
+ "reporting_ns": 4,
"reporting_ns_contact_email": None,
"reporting_ns_contact_name": None,
"reporting_ns_contact_role": None,
"reporting_ns_detail": {
- "id": 3,
- "iso": "ay",
- "iso3": "PnS",
- "name": "country-iMIaXRPBHAxcSHBoZEYXywLZVWSKgBiqEXofsMIAqmaTVYaKHh",
- "society_name": "society-name-ZuAxgjBPLqqIBKxNrRzWnAJYJElxJJEqtKwXTzViQhVoCYSkgn",
+ "id": 4,
+ "iso": "LT",
+ "iso3": "mDf",
+ "name": "country-CDcpHIzVcJyHWOdmsCztXsDkBsNdSHjDPCfUGhlXLSIizAuCbl",
+ "society_name": "society-name-quSPTYkTUhfhTCOxfHTyUYGNkyJycXkvKQjkjlXTdAttUXCsOl",
},
"secondary_sectors": [],
"secondary_sectors_display": [],
diff --git a/deployments/tests.py b/deployments/tests.py
index 853ea418e..be8aef3b4 100644
--- a/deployments/tests.py
+++ b/deployments/tests.py
@@ -44,7 +44,9 @@ def test_project_list_zero(self):
def test_project_list_one(self):
# create instance
sct = SectorFactory()
- ProjectFactory.create(visibility=VisibilityCharChoices.PUBLIC, primary_sector=sct)
+ _country = country.CountryFactory(name="country-1", society_name="society-name-1", iso3="NPL")
+ event = EventFactory(title="event-1", countries=[_country.id])
+ ProjectFactory.create(visibility=VisibilityCharChoices.PUBLIC, primary_sector=sct, event=event)
# submit list request
response = self.client.get("/api/v2/project/")
@@ -56,7 +58,9 @@ def test_project_list_one(self):
def test_project_list_two(self):
# create instances
sct = SectorFactory()
- ProjectFactory.create_batch(2, visibility=VisibilityCharChoices.PUBLIC, primary_sector=sct)
+ _country = country.CountryFactory(name="country-1", society_name="society-name-1", iso3="NPL")
+ event = EventFactory(title="event-1", countries=[_country.id])
+ ProjectFactory.create_batch(2, event=event, visibility=VisibilityCharChoices.PUBLIC, primary_sector=sct)
# submit list request
response = self.client.get("/api/v2/project/")
@@ -109,7 +113,9 @@ def test_project_create(self):
def test_project_read(self):
# create instance
sct = SectorFactory()
- new_project = ProjectFactory.create(visibility=VisibilityCharChoices.PUBLIC, primary_sector=sct)
+ _country = country.CountryFactory(name="country-1", society_name="society-name-1", iso3="NPL")
+ event = EventFactory(title="event-1", countries=[_country.id])
+ new_project = ProjectFactory.create(event=event, visibility=VisibilityCharChoices.PUBLIC, primary_sector=sct)
# submit read request
response = self.client.get(f"/api/v2/project/{new_project.pk}/")
@@ -121,7 +127,9 @@ def test_project_read(self):
def test_project_update(self):
# create instance
sct = SectorFactory()
- new_project = ProjectFactory.create(visibility=VisibilityCharChoices.PUBLIC, primary_sector=sct)
+ _country = country.CountryFactory(name="country-1", society_name="society-name-1", iso3="NPL")
+ event = EventFactory(title="event-1", countries=[_country.id])
+ new_project = ProjectFactory.create(event=event, visibility=VisibilityCharChoices.PUBLIC, primary_sector=sct)
# authenticate
self.authenticate()
@@ -191,7 +199,7 @@ def test_personnel_csv_api(self):
self.assertMatchSnapshot(resp.content.decode("utf-8"))
def test_project_csv_api(self):
- _country = country.CountryFactory(name="country-1", society_name="society-name-1")
+ _country = country.CountryFactory(name="country-1", society_name="society-name-1", iso3="NPL")
sct = SectorFactory(title="sect-1", order=1)
sct_1 = SectorTagFactory(title="sec-tag-1", order=2)
sct_2 = SectorTagFactory(title="sec-tag-2", order=3)
@@ -204,7 +212,7 @@ def test_project_csv_api(self):
slug="event-slug",
districts=[district1.id, district2.id],
dtype=dtype,
- name="event-1",
+ title="event-1",
)
ProjectFactory.create_batch(
10,