diff --git a/api/migrations/0001_squashed_0213_merge_20240807_1001.py b/api/migrations/0001_squashed_0213_merge_20240807_1001.py
new file mode 100644
index 000000000..26c359070
--- /dev/null
+++ b/api/migrations/0001_squashed_0213_merge_20240807_1001.py
@@ -0,0 +1,6740 @@
+# Generated by Django 4.2.15 on 2024-09-13 14:31
+
+import re
+import uuid
+
+import django.contrib.gis.db.models.fields
+import django.contrib.postgres.fields
+import django.contrib.postgres.operations
+import django.core.validators
+import django.db.migrations.operations.special
+import django.db.models.deletion
+import django.utils.timezone
+import tinymce.models
+from django.conf import settings
+from django.db import migrations, models
+
+import api.management.commands.triggers_to_db
+import api.models
+import api.utils
+
+# Functions from the following migrations need manual copying.
+# Move them and any dependencies into this file, then update the
+# RunPython operations to refer to the local versions:
+# api.migrations.0077_auto_20200721_1051 - NOT REQUIRED
+# api.migrations.0084_region_label - NOT REQUIRED
+# api.migrations.0101_uppercase_iso - NOT REQUIRED
+# api.migrations.0188_auto_20231130_0900 - NOT REQUIRED
+# api.migrations.0211_alter_countrydirectory_unique_together_and_more - NOT REQUIRED
+# api.migrations.0212_alter_countrycapacitystrengthening_unique_together - NOT REQUIRED
+# api.migrations.0212_profile_limit_access_to_guest - NOT REQUIRED
+
+
+class Migration(migrations.Migration):
+
+ replaces = [
+ ("api", "0001_initial"),
+ ("api", "0002_auto_20180410_1445"),
+ ("api", "0003_auto_20180607_1822"),
+ ("api", "0004_auto_20180610_1803"),
+ ("api", "0005_auto_20180614_2206"),
+ ("api", "0006_fieldreport_report_date"),
+ ("api", "0007_event_updated_at"),
+ ("api", "0008_auto_20180704_1700"),
+ ("api", "0009_auto_20180712_1922"),
+ ("api", "0010_auto_20181008_0950"),
+ ("api", "0011_auto_20181015_0934"),
+ ("api", "0012_auto_20181016_0730"),
+ ("api", "0013_auto_20181120_1038"),
+ ("api", "0014_snippet_position"),
+ ("api", "0015_auto_20190409_1540"),
+ ("api", "0016_auto_20190424_1224"),
+ ("api", "0017_auto_20190424_1508"),
+ ("api", "0018_country_logo"),
+ ("api", "0019_auto_20190626_1420"),
+ ("api", "0020_auto_20190703_0614"),
+ ("api", "0021_auto_20190718_1414"),
+ ("api", "0022_appeal_real_data_update"),
+ ("api", "0023_auto_20190724_0841"),
+ ("api", "0024_eventcontact_phone"),
+ ("api", "0025_fieldreportcontact_phone"),
+ ("api", "0026_auto_20191120_1026"),
+ ("api", "0027_auto_20191125_0939"),
+ ("api", "0027_auto_20191120_1223"),
+ ("api", "0028_merge_20191125_0949"),
+ ("api", "0029_auto_20191125_0949"),
+ ("api", "0030_fieldreport_other_sources"),
+ ("api", "0028_event_is_featured_region"),
+ ("api", "0031_merge_20191127_0832"),
+ ("api", "0032_auto_20191127_0847"),
+ ("api", "0033_auto_20191127_0850"),
+ ("api", "0034_auto_20191128_0846"),
+ ("api", "0035_fieldreport_ns_request_assistance"),
+ ("api", "0036_auto_20191215_0615"),
+ ("api", "0036_emergencyoperationsdataset"),
+ ("api", "0037_auto_20200109_0902"),
+ ("api", "0038_auto_20200110_1333"),
+ ("api", "0039_auto_20200110_1546"),
+ ("api", "0040_auto_20200121_1609"),
+ ("api", "0041_cronjob"),
+ ("api", "0042_auto_20200128_1045"),
+ ("api", "0043_event_slug"),
+ ("api", "0044_auto_20200318_0643"),
+ ("api", "0045_auto_20200325_0905"),
+ ("api", "0045_auto_20200320_1121"),
+ ("api", "0046_merge_20200325_1016"),
+ ("api", "0043_authlog"),
+ ("api", "0044_reversiondifferencelog"),
+ ("api", "0045_auto_20200212_1354"),
+ ("api", "0047_merge_20200327_1005"),
+ ("api", "0045_auto_20200326_0912"),
+ ("api", "0048_merge_20200401_1310"),
+ ("api", "0049_auto_20200403_0857"),
+ ("api", "0050_auto_20200406_0614"),
+ ("api", "0051_fieldreport_sit_fields_date"),
+ ("api", "0052_auto_20200406_0623"),
+ ("api", "0046_auto_20200406_0953"),
+ ("api", "0049_merge_20200406_1026"),
+ ("api", "0053_merge_20200406_1343"),
+ ("api", "0047_auto_20200331_1153"),
+ ("api", "0048_auto_20200401_1249"),
+ ("api", "0049_merge_20200403_1508"),
+ ("api", "0054_merge_20200407_1212"),
+ ("api", "0054_auto_20200407_0939"),
+ ("api", "0055_merge_20200407_1236"),
+ ("api", "0056_auto_20200413_1010"),
+ ("api", "0057_auto_20200414_1021"),
+ ("api", "0058_auto_20200415_1606"),
+ ("api", "0059_auto_20200430_0852"),
+ ("api", "0059_auto_20200430_0801"),
+ ("api", "0060_merge_20200501_1230"),
+ ("api", "0061_action_is_disabled"),
+ ("api", "0062_auto_20200501_1335"),
+ ("api", "0063_auto_20200501_1348"),
+ ("api", "0064_auto_20200504_0917"),
+ ("api", "0065_fieldreport_epi_figures_source"),
+ ("api", "0064_auto_20200504_1438"),
+ ("api", "0066_merge_20200508_1241"),
+ ("api", "0067_auto_20200528_0840"),
+ ("api", "0068_notificationguid"),
+ ("api", "0069_delete_notificationguid"),
+ ("api", "0070_auto_20200618_0904"),
+ ("api", "0071_auto_20200623_0704"),
+ ("api", "0072_auto_20200623_0734"),
+ ("api", "0073_auto_20200624_1538"),
+ ("api", "0074_auto_20200701_0939"),
+ ("api", "0075_auto_20200707_1231"),
+ ("api", "0076_auto_20200721_0950"),
+ ("api", "0077_auto_20200721_1051"),
+ ("api", "0078_auto_20200721_1108"),
+ ("api", "0079_auto_20200728_0920"),
+ ("api", "0080_region_bbox"),
+ ("api", "0075_profile_last_frontend_login"),
+ ("api", "0076_auto_20200728_1500"),
+ ("api", "0081_merge_20200730_1237"),
+ ("api", "0082_auto_20200806_0635"),
+ ("api", "0083_auto_20200814_0503"),
+ ("api", "0084_region_label"),
+ ("api", "0085_auto_20200903_0843"),
+ ("api", "0086_auto_20200916_0942"),
+ ("api", "0087_auto_20200918_0922"),
+ ("api", "0088_auto_20201119_0809"),
+ ("api", "0089_auto_20201119_0818"),
+ ("api", "0090_auto_20201120_1045"),
+ ("api", "0091_auto_20201120_1118"),
+ ("api", "0092_auto_20201123_1025"),
+ ("api", "0093_auto_20201123_1026"),
+ ("api", "0088_auto_20201105_0943"),
+ ("api", "0094_merge_20201123_1340"),
+ ("api", "0095_auto_20201124_0813"),
+ ("api", "0096_auto_20201124_0855"),
+ ("api", "0097_auto_20201124_0856"),
+ ("api", "0098_auto_20201125_1156"),
+ ("api", "0099_auto_20201127_1048"),
+ ("api", "0100_auto_20201130_0954"),
+ ("api", "0101_uppercase_iso"),
+ ("api", "0102_auto_20201208_1314"),
+ ("api", "0088_auto_20201118_1144"),
+ ("api", "0101_merge_20201210_0822"),
+ ("api", "0103_merge_20201210_0900"),
+ ("api", "0104_auto_20201210_0910"),
+ ("api", "0105_auto_20201211_0758"),
+ ("api", "0106_auto_20210126_0820"),
+ ("api", "0107_action_tooltip_text"),
+ ("api", "0108_fieldreport_epi_notes_since_last_fr"),
+ ("api", "0109_auto_20210201_0949"),
+ ("api", "0110_auto_20210202_0950"),
+ ("api", "0111_externalpartner_externalpartnercategory_fieldreportexternalpartner_fieldreportexternalpartnercategor"),
+ ("api", "0112_auto_20210202_1825"),
+ ("api", "0113_auto_20210204_1021"),
+ ("api", "0114_auto_20210204_1203"),
+ ("api", "0106_auto_20201214_0858"),
+ ("api", "0115_merge_20210204_1319"),
+ ("api", "0116_auto_20210205_1443"),
+ ("api", "0116_auto_20210205_0905"),
+ ("api", "0117_merge_20210205_1458"),
+ ("api", "0118_country_in_search"),
+ ("api", "0119_auto_20210208_1003"),
+ ("api", "0120_maincontact"),
+ ("api", "0121_geccode"),
+ ("api", "0122_auto_20210308_0705"),
+ ("api", "0123_auto_20210318_1520"),
+ ("api", "0106_auto_20210219_0908"),
+ ("api", "0122_merge_20210301_1001"),
+ ("api", "0123_auto_20210301_1014"),
+ ("api", "0124_merge_20210414_0714"),
+ ("api", "0125_erpguid"),
+ ("api", "0126_auto_20210418_1357"),
+ ("api", "0127_appealfilter"),
+ ("api", "0128_appealhistory"),
+ ("api", "0129_appealhistory_fill"),
+ ("api", "0130_auto_20210615_0920"),
+ ("api", "0131_appealhistory_fill_2"),
+ ("api", "0132_auto_20210701_0635"),
+ ("api", "0133_auto_20210922_1327"),
+ ("api", "0134_generaldocument"),
+ ("api", "0135_usercountry"),
+ ("api", "0136_event_visibility"),
+ ("api", "0137_auto_20220105_1533"),
+ ("api", "0138_auto_20220104_1027"),
+ ("api", "0139_userregion"),
+ ("api", "0140_auto_20220126_1112"),
+ ("api", "0133_auto_20210729_1609"),
+ ("api", "0134_merge_20211020_0622"),
+ ("api", "0137_merge_20220104_0845"),
+ ("api", "0141_merge_20220202_0546"),
+ ("api", "0142_auto_20220202_0551"),
+ ("api", "0137_auto_20211227_1441"),
+ ("api", "0138_auto_20220105_0543"),
+ ("api", "0143_merge_20220214_0557"),
+ ("api", "0143_auto_20220218_0817"),
+ ("api", "0144_merge_20220218_0941"),
+ ("api", "0145_auto_20220218_1338"),
+ ("api", "0146_auto_20220228_0952"),
+ ("api", "0147_auto_20220304_1057"),
+ ("api", "0148_auto_20220314_1059"),
+ ("api", "0149_auto_20220318_0413"),
+ ("api", "0150_event_emergency_response_contact_email"),
+ ("api", "0150_admin2_admin2geoms"),
+ ("api", "0151_merge_20220325_1027"),
+ ("api", "0152_countryoffieldreporttoreview"),
+ ("api", "0153_auto_20220513_0633"),
+ ("api", "0153_auto_20220510_0730"),
+ ("api", "0154_merge_20220513_0934"),
+ ("api", "0155_auto_20220523_0824"),
+ ("api", "0155_auto_20220621_0757"),
+ ("api", "0156_appealfilter_comment"),
+ ("api", "0157_event_image_and_summary_translations"),
+ ("api", "0158_alter_admin2geoms_geom"),
+ ("api", "0159_auto_20221028_0940"),
+ ("api", "0158_fieldreport_recent_affected"),
+ ("api", "0159_auto_20221022_1542"),
+ ("api", "0160_merge_0159_auto_20221022_1542_0159_auto_20221028_0940"),
+ ("api", "0161_alter_event_options"),
+ ("api", "0162_admin2_created_at"),
+ ("api", "0163_admin2_is_deprecated"),
+ ("api", "0164_appealdocumenttype"),
+ ("api", "0165_auto_20230424_1725"),
+ ("api", "0166_auto_20230424_1742"),
+ ("api", "0167_alter_appealdocument_iso3"),
+ ("api", "0168_alter_country_iso"),
+ ("api", "0169_auto_20230425_1120"),
+ ("api", "0163_auto_20230410_0720"),
+ ("api", "0170_merge_0163_auto_20230410_0720_0169_auto_20230425_1120"),
+ ("api", "0164_merge_20230419_0524"),
+ ("api", "0171_merge_20230614_0818"),
+ ("api", "0172_alter_fieldreport_status"),
+ ("api", "0173_export"),
+ ("api", "0174_alter_export_pdf_file"),
+ ("api", "0175_export_selector"),
+ ("api", "0176_auto_20230906_0446"),
+ ("api", "0177_alter_export_selector"),
+ ("api", "0178_auto_20230911_0923"),
+ ("api", "0179_alter_export_export_type"),
+ ("api", "0180_auto_20230913_0433"),
+ ("api", "0181_auto_20230914_1026"),
+ ("api", "0182_alter_export_export_type"),
+ ("api", "0183_auto_20230928_0635"),
+ ("api", "0184_auto_20231004_0756"),
+ ("api", "0185_alter_fieldreport_status"),
+ ("api", "0186_auto_20231103_0904"),
+ ("api", "0187_gdacsevent_disaster_type"),
+ ("api", "0188_auto_20231130_0900"),
+ ("api", "0189_auto_20231212_0434"),
+ ("api", "0190_countrydirectory"),
+ ("api", "0191_countrykeydocument"),
+ ("api", "0192_nsdinitiatives"),
+ ("api", "0193_countrycapacitystrengthening"),
+ ("api", "0194_countryorganizationalcapacity"),
+ ("api", "0187_auto_20231218_0508"),
+ ("api", "0195_merge_20231219_0511"),
+ ("api", "0196_alter_gdacsevent_severity"),
+ ("api", "0197_country_founded_date"),
+ ("api", "0198_countrysupportingpartner"),
+ ("api", "0199_countrysupportingpartner_supporting_type"),
+ ("api", "0200_countryicrcpresence"),
+ ("api", "0201_country_disaster_law_url"),
+ ("api", "0202_alter_countryorganizationalcapacity_country"),
+ ("api", "0203_alter_countryicrcpresence_country"),
+ ("api", "0188_auto_20240109_0508"),
+ ("api", "0204_merge_20240129_0639"),
+ ("api", "0188_alter_export_export_type"),
+ ("api", "0189_merge_20240117_0551"),
+ ("api", "0190_remove_export_selector"),
+ ("api", "0189_auto_20240219_0904"),
+ ("api", "0190_auto_20240220_0510"),
+ ("api", "0205_merge_20240227_0819"),
+ ("api", "0206_alter_export_export_type"),
+ ("api", "0207_auto_20240311_1044"),
+ ("api", "0208_auto_20240404_0518"),
+ ("api", "0209_auto_20240423_0604"),
+ ("api", "0210_profile_accepted_montandon_license_terms"),
+ ("api", "0211_alter_countrydirectory_unique_together_and_more"),
+ ("api", "0212_profile_limit_access_to_guest"),
+ ("api", "0212_alter_countrycapacitystrengthening_unique_together"),
+ ("api", "0213_merge_20240807_1001"),
+ ]
+
+ initial = True
+
+ dependencies = [
+ ("auth", "0008_alter_user_username_max_length"),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name="Action",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ (
+ "organizations",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(
+ choices=[("NTLS", "National Society"), ("PNS", "Foreign Society"), ("FDRN", "Federation")],
+ max_length=4,
+ ),
+ blank=True,
+ default=list,
+ size=None,
+ verbose_name="organizations",
+ ),
+ ),
+ (
+ "field_report_types",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(
+ choices=[("EVT", "Event"), ("EW", "Early Warning"), ("EPI", "Epidemic"), ("COVID", "COVID-19")],
+ max_length=16,
+ ),
+ default=list,
+ size=None,
+ verbose_name="field report types",
+ ),
+ ),
+ (
+ "category",
+ models.CharField(
+ choices=[
+ ("General", "General"),
+ ("Health", "Health"),
+ ("NS Institutional Strengthening", "NS Institutional Strengthening"),
+ ("Socioeconomic Interventions", "Socioeconomic Interventions"),
+ ],
+ default="General",
+ max_length=255,
+ verbose_name="category",
+ ),
+ ),
+ ("is_disabled", models.BooleanField(default=False, help_text="Disable in form", verbose_name="is disabled?")),
+ ],
+ options={
+ "verbose_name": "action",
+ "verbose_name_plural": "actions",
+ },
+ ),
+ migrations.CreateModel(
+ name="DisasterType",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ ("summary", models.TextField(verbose_name="summary")),
+ ],
+ options={
+ "ordering": ("name",),
+ "verbose_name": "disaster type",
+ "verbose_name_plural": "disaster types",
+ },
+ ),
+ migrations.CreateModel(
+ name="Region",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "name",
+ models.IntegerField(
+ choices=[
+ (0, "Africa"),
+ (1, "Americas"),
+ (2, "Asia Pacific"),
+ (3, "Europe"),
+ (4, "Middle East & North Africa"),
+ ],
+ default=0,
+ verbose_name="name",
+ ),
+ ),
+ ],
+ options={
+ "ordering": ("name",),
+ "verbose_name": "region",
+ "verbose_name_plural": "regions",
+ },
+ ),
+ migrations.CreateModel(
+ name="SourceType",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=40, verbose_name="name")),
+ ],
+ options={
+ "verbose_name": "source type",
+ "verbose_name_plural": "source types",
+ },
+ ),
+ migrations.CreateModel(
+ name="Country",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ ("iso", models.CharField(max_length=2, null=True, verbose_name="ISO")),
+ ("society_name", models.TextField(blank=True, verbose_name="society name")),
+ ("society_url", models.URLField(blank=True, verbose_name="URL - Society")),
+ (
+ "region",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.region",
+ verbose_name="region",
+ ),
+ ),
+ (
+ "inform_score",
+ models.DecimalField(blank=True, decimal_places=2, max_digits=3, null=True, verbose_name="inform score"),
+ ),
+ ("key_priorities", models.TextField(blank=True, null=True, verbose_name="key priorities")),
+ ("overview", models.TextField(blank=True, null=True, verbose_name="overview")),
+ (
+ "logo",
+ models.FileField(
+ blank=True,
+ null=True,
+ upload_to=api.models.logo_document_path,
+ validators=[django.core.validators.FileExtensionValidator(allowed_extensions=["png", "jpg", "gif"])],
+ verbose_name="logo",
+ ),
+ ),
+ (
+ "record_type",
+ models.IntegerField(
+ choices=[
+ (1, "Country"),
+ (2, "Cluster"),
+ (3, "Region"),
+ (4, "Country Office"),
+ (5, "Representative Office"),
+ ],
+ default=1,
+ help_text="Type of entity",
+ verbose_name="type",
+ ),
+ ),
+ ("iso3", models.CharField(max_length=3, null=True, verbose_name="ISO3")),
+ (
+ "wb_population",
+ models.PositiveIntegerField(
+ blank=True, help_text="population data from WB API", null=True, verbose_name="WB population"
+ ),
+ ),
+ (
+ "wb_year",
+ models.CharField(
+ blank=True, help_text="population data year from WB API", max_length=4, null=True, verbose_name="WB Year"
+ ),
+ ),
+ ("url_ifrc", models.URLField(blank=True, verbose_name="URL - IFRC")),
+ ],
+ options={
+ "verbose_name_plural": "countries",
+ "ordering": ("name",),
+ "verbose_name": "country",
+ },
+ ),
+ migrations.CreateModel(
+ name="AdminContact",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("ctype", models.CharField(blank=True, max_length=100, verbose_name="type")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ ("title", models.CharField(max_length=300, verbose_name="title")),
+ ("email", models.CharField(max_length=300, verbose_name="email")),
+ ],
+ options={
+ "verbose_name": "admin contact",
+ "verbose_name_plural": "admin contacts",
+ },
+ ),
+ migrations.CreateModel(
+ name="AdminKeyFigure",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("figure", models.CharField(max_length=100, verbose_name="figure")),
+ ("deck", models.CharField(max_length=50, verbose_name="deck")),
+ ("source", models.CharField(max_length=256, verbose_name="source")),
+ (
+ "visibility",
+ models.IntegerField(
+ choices=[(1, "RCRC Movement"), (2, "IFRC Secretariat"), (3, "Public"), (4, "IFRC and NS")],
+ default=3,
+ verbose_name="visibility",
+ ),
+ ),
+ ],
+ options={
+ "ordering": ("source",),
+ "verbose_name": "admin key figure",
+ "verbose_name_plural": "admin key figures",
+ },
+ ),
+ migrations.CreateModel(
+ name="AdminLink",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=100, verbose_name="title")),
+ ("url", models.URLField(max_length=300, verbose_name="url")),
+ ],
+ options={
+ "verbose_name": "admin link",
+ "verbose_name_plural": "admin links",
+ },
+ ),
+ migrations.CreateModel(
+ name="RegionContact",
+ fields=[
+ (
+ "admincontact_ptr",
+ models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True,
+ primary_key=True,
+ serialize=False,
+ to="api.admincontact",
+ ),
+ ),
+ (
+ "region",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="contacts",
+ to="api.region",
+ verbose_name="region",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "region contact",
+ "verbose_name_plural": "region contacts",
+ },
+ bases=("api.admincontact",),
+ ),
+ migrations.CreateModel(
+ name="RegionKeyFigure",
+ fields=[
+ (
+ "adminkeyfigure_ptr",
+ models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True,
+ primary_key=True,
+ serialize=False,
+ to="api.adminkeyfigure",
+ ),
+ ),
+ (
+ "region",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="key_figures",
+ to="api.region",
+ verbose_name="region",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "region key figure",
+ "verbose_name_plural": "region key figures",
+ },
+ bases=("api.adminkeyfigure",),
+ ),
+ migrations.CreateModel(
+ name="RegionLink",
+ fields=[
+ (
+ "adminlink_ptr",
+ models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True,
+ primary_key=True,
+ serialize=False,
+ to="api.adminlink",
+ ),
+ ),
+ (
+ "region",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, related_name="links", to="api.region", verbose_name="region"
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "region link",
+ "verbose_name_plural": "region links",
+ },
+ bases=("api.adminlink",),
+ ),
+ migrations.CreateModel(
+ name="District",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ ("code", models.CharField(max_length=10, verbose_name="code")),
+ ("country_iso", models.CharField(max_length=3, null=True, verbose_name="country ISO3")),
+ ("country_name", models.CharField(max_length=100, verbose_name="country name")),
+ (
+ "country",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.country", verbose_name="country"
+ ),
+ ),
+ (
+ "is_enclave",
+ models.BooleanField(
+ default=False, help_text="Is it an enclave away from parent country?", verbose_name="is enclave?"
+ ),
+ ),
+ (
+ "wb_population",
+ models.PositiveIntegerField(
+ blank=True, help_text="population data from WB API", null=True, verbose_name="WB population"
+ ),
+ ),
+ (
+ "wb_year",
+ models.CharField(
+ blank=True, help_text="population data year from WB API", max_length=4, null=True, verbose_name="WB year"
+ ),
+ ),
+ ],
+ options={
+ "ordering": ("code",),
+ "verbose_name": "district",
+ "verbose_name_plural": "districts",
+ },
+ ),
+ migrations.CreateModel(
+ name="Event",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ ("summary", tinymce.models.HTMLField(blank=True, default="", verbose_name="summary")),
+ ("num_affected", models.IntegerField(blank=True, null=True, verbose_name="number of affected")),
+ (
+ "ifrc_severity_level",
+ models.IntegerField(
+ choices=[(0, "Yellow"), (1, "Orange"), (2, "Red")], default=0, verbose_name="IFRC Severity level"
+ ),
+ ),
+ ("glide", models.CharField(blank=True, max_length=18, verbose_name="glide")),
+ ("disaster_start_date", models.DateTimeField(verbose_name="disaster start date")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("auto_generated", models.BooleanField(default=False, editable=False, verbose_name="auto generated")),
+ ("countries", models.ManyToManyField(to="api.country", verbose_name="countries")),
+ (
+ "dtype",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.disastertype",
+ verbose_name="disaster type",
+ ),
+ ),
+ ("regions", models.ManyToManyField(to="api.region", verbose_name="regions")),
+ (
+ "auto_generated_source",
+ models.CharField(blank=True, editable=False, max_length=50, null=True, verbose_name="auto generated source"),
+ ),
+ ("is_featured", models.BooleanField(default=False, verbose_name="is featured on home page")),
+ ("districts", models.ManyToManyField(blank=True, to="api.district", verbose_name="districts")),
+ ("updated_at", models.DateTimeField(auto_now=True, verbose_name="updated at")),
+ ("hide_attached_field_reports", models.BooleanField(default=False, verbose_name="hide attached field reports?")),
+ ("num_dead", models.IntegerField(blank=True, null=True, verbose_name="number of dead")),
+ ("num_displaced", models.IntegerField(blank=True, null=True, verbose_name="name")),
+ ("num_injured", models.IntegerField(blank=True, null=True, verbose_name="number of injured")),
+ ("num_missing", models.IntegerField(blank=True, null=True, verbose_name="number of missing")),
+ ("previous_update", models.DateTimeField(blank=True, null=True, verbose_name="previous update")),
+ ("is_featured_region", models.BooleanField(default=False, verbose_name="is featured on region page")),
+ (
+ "slug",
+ models.CharField(
+ blank=True,
+ default=None,
+ editable=False,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergencies/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ (
+ "tab_one_title",
+ models.CharField(blank=True, default="Additional Information", max_length=50, verbose_name="tab one title"),
+ ),
+ ("tab_three_title", models.CharField(blank=True, max_length=50, null=True, verbose_name="tab three title")),
+ ("tab_two_title", models.CharField(blank=True, max_length=50, null=True, verbose_name="tab two title")),
+ (
+ "parent_event",
+ models.ForeignKey(
+ blank=True,
+ help_text="If needed, you have to change the connected Appeals', Field Reports', etc to point to the parent Emergency manually.",
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.event",
+ verbose_name="Parent Emergency",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "emergency",
+ "verbose_name_plural": "emergencies",
+ "ordering": ("-disaster_start_date",),
+ },
+ ),
+ migrations.CreateModel(
+ name="SituationReportType",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("type", models.CharField(max_length=50, verbose_name="type")),
+ (
+ "is_primary",
+ models.BooleanField(
+ default=False,
+ editable=False,
+ help_text="Ensure this type gets precedence over others that are empty",
+ verbose_name="is primary?",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "situation report type",
+ "verbose_name_plural": "situation report types",
+ },
+ ),
+ migrations.CreateModel(
+ name="FieldReport",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("rid", models.CharField(blank=True, editable=False, max_length=100, null=True, verbose_name="r id")),
+ ("summary", models.TextField(blank=True, verbose_name="summary")),
+ ("description", tinymce.models.HTMLField(blank=True, default="", verbose_name="description")),
+ ("status", models.IntegerField(default=0, verbose_name="status")),
+ ("request_assistance", models.BooleanField(default=False, verbose_name="request assistance")),
+ ("num_injured", models.IntegerField(blank=True, null=True, verbose_name="number of injured")),
+ ("num_dead", models.IntegerField(blank=True, null=True, verbose_name="number of dead")),
+ ("num_missing", models.IntegerField(blank=True, null=True, verbose_name="number of missing")),
+ ("num_affected", models.IntegerField(blank=True, null=True, verbose_name="number of affected")),
+ ("num_displaced", models.IntegerField(blank=True, null=True, verbose_name="number of displaced")),
+ ("num_assisted", models.IntegerField(blank=True, null=True, verbose_name="number of assisted")),
+ ("num_localstaff", models.IntegerField(blank=True, null=True, verbose_name="number of localstaff")),
+ ("num_volunteers", models.IntegerField(blank=True, null=True, verbose_name="number of volunteers")),
+ (
+ "num_expats_delegates",
+ models.IntegerField(blank=True, null=True, verbose_name="number of expatriate delegates"),
+ ),
+ ("gov_num_injured", models.IntegerField(blank=True, null=True, verbose_name="number of injured (goverment)")),
+ ("gov_num_dead", models.IntegerField(blank=True, null=True, verbose_name="number of dead (goverment)")),
+ ("gov_num_missing", models.IntegerField(blank=True, null=True, verbose_name="number of missing (goverment)")),
+ ("gov_num_affected", models.IntegerField(blank=True, null=True, verbose_name="number of affected (goverment)")),
+ ("gov_num_displaced", models.IntegerField(blank=True, null=True, verbose_name="number of displaced (goverment)")),
+ ("gov_num_assisted", models.IntegerField(blank=True, null=True, verbose_name="number of assisted (goverment)")),
+ ("actions_others", models.TextField(blank=True, null=True, verbose_name="actions taken (others)")),
+ (
+ "visibility",
+ models.IntegerField(
+ choices=[(1, "RCRC Movement"), (2, "IFRC Secretariat"), (3, "Public"), (4, "IFRC and NS")],
+ default=1,
+ verbose_name="visibility",
+ ),
+ ),
+ (
+ "bulletin",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="bulletin",
+ ),
+ ),
+ (
+ "dref",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")], default=0, verbose_name="DREF"
+ ),
+ ),
+ ("dref_amount", models.IntegerField(blank=True, null=True, verbose_name="DREF amount")),
+ (
+ "appeal",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")], default=0, verbose_name="appeal"
+ ),
+ ),
+ ("appeal_amount", models.IntegerField(blank=True, null=True, verbose_name="appeal amount")),
+ (
+ "rdrt",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")], default=0, verbose_name="RDRT"
+ ),
+ ),
+ ("num_rdrt", models.IntegerField(blank=True, null=True, verbose_name="number of RDRT")),
+ (
+ "fact",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")], default=0, verbose_name="fact"
+ ),
+ ),
+ ("num_fact", models.IntegerField(blank=True, null=True, verbose_name="number of fact")),
+ (
+ "ifrc_staff",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="IFRC staff",
+ ),
+ ),
+ ("num_ifrc_staff", models.IntegerField(blank=True, null=True, verbose_name="number of IFRC staff")),
+ (
+ "eru_base_camp",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU base camp",
+ ),
+ ),
+ ("eru_base_camp_units", models.IntegerField(blank=True, null=True, verbose_name="ERU base camp units")),
+ (
+ "eru_basic_health_care",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU basic health care",
+ ),
+ ),
+ (
+ "eru_basic_health_care_units",
+ models.IntegerField(blank=True, null=True, verbose_name="ERU basic health units"),
+ ),
+ (
+ "eru_it_telecom",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU IT telecom",
+ ),
+ ),
+ ("eru_it_telecom_units", models.IntegerField(blank=True, null=True, verbose_name="ERU IT telecom units")),
+ (
+ "eru_logistics",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU logistics",
+ ),
+ ),
+ ("eru_logistics_units", models.IntegerField(blank=True, null=True, verbose_name="ERU logistics units")),
+ (
+ "eru_deployment_hospital",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU deployment hospital",
+ ),
+ ),
+ (
+ "eru_deployment_hospital_units",
+ models.IntegerField(blank=True, null=True, verbose_name="ERU deployment hospital units"),
+ ),
+ (
+ "eru_referral_hospital",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU referral hospital",
+ ),
+ ),
+ (
+ "eru_referral_hospital_units",
+ models.IntegerField(blank=True, null=True, verbose_name="ERU referral hospital units"),
+ ),
+ (
+ "eru_relief",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU relief",
+ ),
+ ),
+ ("eru_relief_units", models.IntegerField(blank=True, null=True, verbose_name="ERU relief units")),
+ (
+ "eru_water_sanitation_15",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU water sanitaion M15",
+ ),
+ ),
+ (
+ "eru_water_sanitation_15_units",
+ models.IntegerField(blank=True, null=True, verbose_name="ERU water sanitaion M15 units"),
+ ),
+ (
+ "eru_water_sanitation_40",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU water sanitaion M40",
+ ),
+ ),
+ (
+ "eru_water_sanitation_40_units",
+ models.IntegerField(blank=True, null=True, verbose_name="ERU water sanitaion M40 units"),
+ ),
+ (
+ "eru_water_sanitation_20",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU water sanitaion MSM20",
+ ),
+ ),
+ (
+ "eru_water_sanitation_20_units",
+ models.IntegerField(blank=True, null=True, verbose_name="ERU water sanitaion MSM20 units"),
+ ),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("updated_at", models.DateTimeField(auto_now=True, verbose_name="updated at")),
+ ("countries", models.ManyToManyField(to="api.country", verbose_name="countries")),
+ (
+ "dtype",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT, to="api.disastertype", verbose_name="disaster type"
+ ),
+ ),
+ (
+ "event",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="field_reports",
+ to="api.event",
+ verbose_name="event",
+ ),
+ ),
+ ("regions", models.ManyToManyField(blank=True, to="api.region", verbose_name="regions")),
+ (
+ "user",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="user",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="user",
+ ),
+ ),
+ ("districts", models.ManyToManyField(blank=True, to="api.district", verbose_name="districts")),
+ ("report_date", models.DateTimeField(editable=False, null=True, verbose_name="report date")),
+ ("previous_update", models.DateTimeField(blank=True, null=True, verbose_name="previous updated at")),
+ ("other_num_affected", models.IntegerField(blank=True, null=True, verbose_name="number of affected (other)")),
+ ("other_num_assisted", models.IntegerField(blank=True, null=True, verbose_name="number of assisted (other)")),
+ ("other_num_dead", models.IntegerField(blank=True, null=True, verbose_name="number of dead (other)")),
+ ("other_num_displaced", models.IntegerField(blank=True, null=True, verbose_name="number of displace (other)")),
+ ("other_num_injured", models.IntegerField(blank=True, null=True, verbose_name="number of injured (other)")),
+ ("other_num_missing", models.IntegerField(blank=True, null=True, verbose_name="number of missing (other)")),
+ ("start_date", models.DateTimeField(blank=True, null=True, verbose_name="start date")),
+ (
+ "affected_pop_centres",
+ models.CharField(blank=True, max_length=512, null=True, verbose_name="affected population centres"),
+ ),
+ (
+ "gov_affected_pop_centres",
+ models.CharField(
+ blank=True, max_length=512, null=True, verbose_name="affected population centres (goverment)"
+ ),
+ ),
+ (
+ "gov_num_highest_risk",
+ models.IntegerField(blank=True, null=True, verbose_name="people at highest risk (goverment)"),
+ ),
+ ("num_highest_risk", models.IntegerField(blank=True, null=True, verbose_name="number of highest risk")),
+ (
+ "num_potentially_affected",
+ models.IntegerField(blank=True, null=True, verbose_name="number of potentially affected"),
+ ),
+ (
+ "other_affected_pop_centres",
+ models.CharField(
+ blank=True, max_length=512, null=True, verbose_name="number of affected population centres (other)"
+ ),
+ ),
+ (
+ "other_num_highest_risk",
+ models.IntegerField(blank=True, null=True, verbose_name="number of highest risk (other)"),
+ ),
+ (
+ "forecast_based_action",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="forecast based action",
+ ),
+ ),
+ (
+ "forecast_based_action_amount",
+ models.IntegerField(blank=True, null=True, verbose_name="forecast based action amount"),
+ ),
+ (
+ "imminent_dref",
+ models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="imminent dref",
+ ),
+ ),
+ ("imminent_dref_amount", models.IntegerField(blank=True, null=True, verbose_name="imminent dref amount")),
+ ("other_sources", models.TextField(blank=True, default="", verbose_name="sources (other)")),
+ (
+ "gov_num_potentially_affected",
+ models.IntegerField(blank=True, null=True, verbose_name="potentially affected (goverment)"),
+ ),
+ (
+ "other_num_potentially_affected",
+ models.IntegerField(blank=True, null=True, verbose_name="number of potentially affected (other)"),
+ ),
+ ("ns_request_assistance", models.BooleanField(default=False, verbose_name="NS request assistance")),
+ ("cases", models.IntegerField(blank=True, null=True, verbose_name="number of cases")),
+ ("confirmed_cases", models.IntegerField(blank=True, null=True, verbose_name="number of confirmed cases")),
+ ("health_min_num_assisted", models.IntegerField(blank=True, null=True, verbose_name="number of assisted (who)")),
+ ("probable_cases", models.IntegerField(blank=True, null=True, verbose_name="number of probable cases")),
+ ("suspected_cases", models.IntegerField(blank=True, null=True, verbose_name="number of suspected cases")),
+ ("who_num_assisted", models.IntegerField(blank=True, null=True, verbose_name="number of assisted (who)")),
+ ("health_min_cases", models.IntegerField(blank=True, null=True, verbose_name="number of cases (MOH)")),
+ (
+ "health_min_confirmed_cases",
+ models.IntegerField(blank=True, null=True, verbose_name="number of confirmed cases (MOH)"),
+ ),
+ ("health_min_num_dead", models.IntegerField(blank=True, null=True, verbose_name="number of dead (MOH)")),
+ (
+ "health_min_probable_cases",
+ models.IntegerField(blank=True, null=True, verbose_name="number of probabale cases (MOH)"),
+ ),
+ (
+ "health_min_suspected_cases",
+ models.IntegerField(blank=True, null=True, verbose_name="number of suspected cases (MOH)"),
+ ),
+ ("other_cases", models.IntegerField(blank=True, null=True, verbose_name="number of cases (other)")),
+ (
+ "other_confirmed_cases",
+ models.IntegerField(blank=True, null=True, verbose_name="number of confirmed cases (other)"),
+ ),
+ (
+ "other_probable_cases",
+ models.IntegerField(blank=True, null=True, verbose_name="number of probable cases (other)"),
+ ),
+ (
+ "other_suspected_cases",
+ models.IntegerField(blank=True, null=True, verbose_name="number of suspected cases (other)"),
+ ),
+ ("who_cases", models.IntegerField(blank=True, null=True, verbose_name="number of cases (WHO)")),
+ (
+ "who_confirmed_cases",
+ models.IntegerField(blank=True, null=True, verbose_name="number of confirmed cases (WHO)"),
+ ),
+ ("who_num_dead", models.IntegerField(blank=True, null=True, verbose_name="number of number of dead (WHO)")),
+ ("who_probable_cases", models.IntegerField(blank=True, null=True, verbose_name="number of probable cases (WHO)")),
+ (
+ "who_suspected_cases",
+ models.IntegerField(blank=True, null=True, verbose_name="number of suspected cases (WHO)"),
+ ),
+ ("sit_fields_date", models.DateTimeField(blank=True, null=True, verbose_name="situation fields date")),
+ (
+ "is_covid_report",
+ models.BooleanField(
+ default=False,
+ help_text="Is this a Field Report specific to the COVID-19 emergency?",
+ verbose_name="is covid report?",
+ ),
+ ),
+ ("epi_cases", models.IntegerField(blank=True, null=True, verbose_name="number of cases (epidemic)")),
+ (
+ "epi_confirmed_cases",
+ models.IntegerField(blank=True, null=True, verbose_name="number of confirmed cases (epidemic)"),
+ ),
+ ("epi_num_dead", models.IntegerField(blank=True, null=True, verbose_name="number of dead (epidemic)")),
+ (
+ "epi_probable_cases",
+ models.IntegerField(blank=True, null=True, verbose_name="number of probable cases (epidemic)"),
+ ),
+ (
+ "epi_suspected_cases",
+ models.IntegerField(blank=True, null=True, verbose_name="number of suspected cases (epidemic)"),
+ ),
+ (
+ "epi_figures_source",
+ models.IntegerField(
+ blank=True,
+ choices=[(0, "Ministry of health"), (1, "WHO"), (2, "OTHER")],
+ default=0,
+ null=True,
+ verbose_name="figures source (epidemic)",
+ ),
+ ),
+ ],
+ options={
+ "ordering": ("-created_at", "-updated_at"),
+ "verbose_name": "field report",
+ "verbose_name_plural": "field reports",
+ },
+ ),
+ migrations.CreateModel(
+ name="EmergencyOperationsDataset",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "is_validated",
+ models.BooleanField(
+ default=False, help_text="Did anyone check the editable data?", verbose_name="is validated?"
+ ),
+ ),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created_at")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified_at")),
+ ("raw_file_name", models.TextField(blank=True, null=True)),
+ ("raw_file_url", models.TextField(blank=True, null=True)),
+ ("raw_appeal_launch_date", models.TextField(blank=True, null=True, verbose_name="appeal launch date (raw)")),
+ ("raw_appeal_number", models.TextField(blank=True, null=True, verbose_name="appeal number (raw)")),
+ ("raw_category_allocated", models.TextField(blank=True, null=True, verbose_name="category allocated (raw)")),
+ ("raw_date_of_issue", models.TextField(blank=True, null=True, verbose_name="date of issue (raw)")),
+ ("raw_dref_allocated", models.TextField(blank=True, null=True)),
+ ("raw_expected_end_date", models.TextField(blank=True, null=True, verbose_name="expected end date (raw)")),
+ ("raw_expected_time_frame", models.TextField(blank=True, null=True, verbose_name="expected time frame (raw)")),
+ ("raw_glide_number", models.TextField(blank=True, null=True, verbose_name="glide number (raw)")),
+ (
+ "raw_num_of_people_affected",
+ models.TextField(blank=True, null=True, verbose_name="number of people affected (raw)"),
+ ),
+ (
+ "raw_num_of_people_to_be_assisted",
+ models.TextField(blank=True, null=True, verbose_name="number of people to be assisted (raw)"),
+ ),
+ (
+ "raw_disaster_risk_reduction_female",
+ models.TextField(blank=True, null=True, verbose_name="number of disaster risk reduction female (raw)"),
+ ),
+ (
+ "raw_disaster_risk_reduction_male",
+ models.TextField(blank=True, null=True, verbose_name="number of disaster risk reduction male (raw)"),
+ ),
+ (
+ "raw_disaster_risk_reduction_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of disaster risk reduction people reached (raw)"
+ ),
+ ),
+ (
+ "raw_disaster_risk_reduction_people_targeted",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of disaster risk reduction people targeted (raw)"
+ ),
+ ),
+ (
+ "raw_disaster_risk_reduction_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of disaster risk reduction requirements (raw)"),
+ ),
+ ("raw_health_female", models.TextField(blank=True, null=True, verbose_name="health female (raw)")),
+ ("raw_health_male", models.TextField(blank=True, null=True, verbose_name="health male (raw)")),
+ (
+ "raw_health_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="health people reached (raw)"),
+ ),
+ (
+ "raw_health_people_targeted",
+ models.TextField(blank=True, null=True, verbose_name="health people targeted (raw)"),
+ ),
+ ("raw_health_requirements", models.TextField(blank=True, null=True, verbose_name="health requirements (raw)")),
+ (
+ "raw_livelihoods_and_basic_needs_female",
+ models.TextField(blank=True, null=True, verbose_name="number of livelihhods and basic needs female (raw)"),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_male",
+ models.TextField(blank=True, null=True, verbose_name="number of livelihhods and basic needs male (raw)"),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of livelihhods and basic needs people reached (raw)"
+ ),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_people_targeted",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of livelihhods and basic needs people targeted (raw)"
+ ),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_requirements",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of livelihhods and basic needs requirements (raw)"
+ ),
+ ),
+ (
+ "raw_migration_female",
+ models.TextField(blank=True, null=True, verbose_name="number of migration female (raw)"),
+ ),
+ ("raw_migration_male", models.TextField(blank=True, null=True, verbose_name="number of migration male (raw)")),
+ (
+ "raw_migration_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="number of migration people reached (raw)"),
+ ),
+ (
+ "raw_migration_people_targeted",
+ models.TextField(blank=True, null=True, verbose_name="number of migration people targeted (raw)"),
+ ),
+ (
+ "raw_migration_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of migration requirements (raw)"),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_female",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion female (raw)"
+ ),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_male",
+ models.TextField(blank=True, null=True, verbose_name="number of protection gender and inclusion male (raw)"),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion people reached (raw)"
+ ),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_people_targeted",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion people targeted (raw)"
+ ),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_requirements",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion requirements (raw)"
+ ),
+ ),
+ ("raw_shelter_female", models.TextField(blank=True, null=True, verbose_name="number of shelter female (raw)")),
+ ("raw_shelter_male", models.TextField(blank=True, null=True, verbose_name="number of shelter male (raw)")),
+ (
+ "raw_shelter_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="number of shelter people reached (raw)"),
+ ),
+ (
+ "raw_shelter_people_targeted",
+ models.TextField(blank=True, null=True, verbose_name="number of shelter people targeted (raw)"),
+ ),
+ (
+ "raw_shelter_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of shelter requirements (raw)"),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_female",
+ models.TextField(blank=True, null=True, verbose_name="number of water sanitation and hygiene female (raw)"),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_male",
+ models.TextField(blank=True, null=True, verbose_name="number of water sanitation and hygiene male (raw)"),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of water sanitation and hygiene people reached (raw)"
+ ),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_people_targeted",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of water sanitation and hygiene people targeted (raw)"
+ ),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_requirements",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of water sanitation and hygiene requirements (raw)"
+ ),
+ ),
+ ("raw_education_female", models.TextField(blank=True, null=True, verbose_name="number of eduction female (raw)")),
+ ("raw_education_male", models.TextField(blank=True, null=True, verbose_name="number of eduction male (raw)")),
+ (
+ "raw_education_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="number of eduction people reached (raw)"),
+ ),
+ (
+ "raw_education_people_targeted",
+ models.TextField(blank=True, null=True, verbose_name="number of eduction people targeted (raw)"),
+ ),
+ (
+ "raw_education_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of eduction requirements (raw)"),
+ ),
+ ("file_name", models.CharField(blank=True, max_length=200, null=True)),
+ ("appeal_launch_date", models.DateField(blank=True, null=True, verbose_name="appeal launch date")),
+ ("appeal_number", models.CharField(blank=True, max_length=20, null=True, verbose_name="appeal number")),
+ (
+ "category_allocated",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="category allocated"),
+ ),
+ ("date_of_issue", models.DateField(blank=True, null=True, verbose_name="date of issue")),
+ ("dref_allocated", models.IntegerField(blank=True, null=True, verbose_name="DREF allocated")),
+ ("expected_end_date", models.DateField(blank=True, null=True, verbose_name="expected end date")),
+ ("expected_time_frame", models.IntegerField(blank=True, null=True, verbose_name="expected time frame")),
+ ("glide_number", models.CharField(blank=True, max_length=18, null=True, verbose_name="glide number")),
+ ("num_of_people_affected", models.IntegerField(blank=True, null=True, verbose_name="number of people affected")),
+ (
+ "num_of_people_to_be_assisted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of people to be assisted"),
+ ),
+ (
+ "disaster_risk_reduction_female",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction female"),
+ ),
+ (
+ "disaster_risk_reduction_male",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction male"),
+ ),
+ (
+ "disaster_risk_reduction_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction people reached"),
+ ),
+ (
+ "disaster_risk_reduction_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction people targeted"),
+ ),
+ (
+ "disaster_risk_reduction_requirements",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of disaster risk reduction people requirements"
+ ),
+ ),
+ ("health_female", models.IntegerField(blank=True, null=True, verbose_name="number of health female")),
+ ("health_male", models.IntegerField(blank=True, null=True, verbose_name="number of health male")),
+ (
+ "health_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of health people reached"),
+ ),
+ (
+ "health_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of health people targeted"),
+ ),
+ ("health_requirements", models.IntegerField(blank=True, null=True, verbose_name="number of health requirements")),
+ (
+ "livelihoods_and_basic_needs_female",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic needs female"),
+ ),
+ (
+ "livelihoods_and_basic_needs_male",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic needs male"),
+ ),
+ (
+ "livelihoods_and_basic_needs_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic people reached"),
+ ),
+ (
+ "livelihoods_and_basic_needs_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic people targeted"),
+ ),
+ (
+ "livelihoods_and_basic_needs_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic needs requirements"),
+ ),
+ ("migration_female", models.IntegerField(blank=True, null=True, verbose_name="number of migration female")),
+ ("migration_male", models.IntegerField(blank=True, null=True, verbose_name="number of migration male")),
+ (
+ "migration_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of migration people reached"),
+ ),
+ (
+ "migration_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of migration people targeted"),
+ ),
+ (
+ "migration_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of migration requirements"),
+ ),
+ (
+ "protection_gender_and_inclusion_female",
+ models.IntegerField(blank=True, null=True, verbose_name="number of protection gender and inclusion female"),
+ ),
+ (
+ "protection_gender_and_inclusion_male",
+ models.IntegerField(blank=True, null=True, verbose_name="number of protection gender and inclusion male"),
+ ),
+ (
+ "protection_gender_and_inclusion_people_reached",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion people reached"
+ ),
+ ),
+ (
+ "protection_gender_and_inclusion_people_targeted",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion people targeted"
+ ),
+ ),
+ (
+ "protection_gender_and_inclusion_requirements",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion requirements"
+ ),
+ ),
+ ("shelter_female", models.IntegerField(blank=True, null=True, verbose_name="number of shelter female")),
+ ("shelter_male", models.IntegerField(blank=True, null=True, verbose_name="number of shelter male")),
+ (
+ "shelter_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of shelter people reached"),
+ ),
+ (
+ "shelter_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of shelter people targeted"),
+ ),
+ (
+ "shelter_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of shelter people requirements"),
+ ),
+ (
+ "water_sanitation_and_hygiene_female",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene female"),
+ ),
+ (
+ "water_sanitation_and_hygiene_male",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene male"),
+ ),
+ (
+ "water_sanitation_and_hygiene_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene people reached"),
+ ),
+ (
+ "water_sanitation_and_hygiene_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene people targeted"),
+ ),
+ (
+ "water_sanitation_and_hygiene_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene requirements"),
+ ),
+ ("education_female", models.IntegerField(blank=True, null=True, verbose_name="number of eduction female")),
+ ("education_male", models.IntegerField(blank=True, null=True, verbose_name="number of eduction male")),
+ (
+ "education_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of eduction people reached"),
+ ),
+ (
+ "education_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of eduction people targeted"),
+ ),
+ (
+ "education_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of eduction requirements"),
+ ),
+ ],
+ options={
+ "verbose_name": "emergency operations dataset",
+ "verbose_name_plural": "emergency operations datasets",
+ },
+ ),
+ migrations.CreateModel(
+ name="EmergencyOperationsEA",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "is_validated",
+ models.BooleanField(
+ default=False, help_text="Did anyone check the editable data?", verbose_name="is validated?"
+ ),
+ ),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created_at")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified_at")),
+ ("raw_file_name", models.TextField(blank=True, null=True)),
+ ("raw_file_url", models.TextField(blank=True, null=True)),
+ ("raw_appeal_ends", models.TextField(blank=True, null=True, verbose_name="appeal ends (raw)")),
+ ("raw_appeal_launch_date", models.TextField(blank=True, null=True, verbose_name="appeal launch date (raw)")),
+ ("raw_appeal_number", models.TextField(blank=True, null=True, verbose_name="appeal number (raw)")),
+ (
+ "raw_current_operation_budget",
+ models.TextField(blank=True, null=True, verbose_name="current operation budget (raw)"),
+ ),
+ ("raw_dref_allocated", models.TextField(blank=True, null=True)),
+ ("raw_glide_number", models.TextField(blank=True, null=True, verbose_name="glide number (raw)")),
+ (
+ "raw_num_of_people_to_be_assisted",
+ models.TextField(blank=True, null=True, verbose_name="number of people to be assisted (raw)"),
+ ),
+ (
+ "raw_disaster_risk_reduction_female",
+ models.TextField(blank=True, null=True, verbose_name="number of disaster risk reduction female (raw)"),
+ ),
+ (
+ "raw_disaster_risk_reduction_male",
+ models.TextField(blank=True, null=True, verbose_name="number of disaster risk reduction male (raw)"),
+ ),
+ (
+ "raw_disaster_risk_reduction_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of disaster risk reduction people reached (raw)"
+ ),
+ ),
+ (
+ "raw_disaster_risk_reduction_people_targeted",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of disaster risk reduction people targeted (raw)"
+ ),
+ ),
+ (
+ "raw_disaster_risk_reduction_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of disaster risk reduction requirements (raw)"),
+ ),
+ ("raw_health_female", models.TextField(blank=True, null=True, verbose_name="health female (raw)")),
+ ("raw_health_male", models.TextField(blank=True, null=True, verbose_name="health male (raw)")),
+ (
+ "raw_health_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="health people reached (raw)"),
+ ),
+ (
+ "raw_health_people_targeted",
+ models.TextField(blank=True, null=True, verbose_name="health people targeted (raw)"),
+ ),
+ ("raw_health_requirements", models.TextField(blank=True, null=True, verbose_name="health requirements (raw)")),
+ (
+ "raw_livelihoods_and_basic_needs_female",
+ models.TextField(blank=True, null=True, verbose_name="number of livelihhods and basic needs female (raw)"),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_male",
+ models.TextField(blank=True, null=True, verbose_name="number of livelihhods and basic needs male (raw)"),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of livelihhods and basic needs people reached (raw)"
+ ),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_people_targeted",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of livelihhods and basic needs people targeted (raw)"
+ ),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_requirements",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of livelihhods and basic needs requirements (raw)"
+ ),
+ ),
+ (
+ "raw_migration_female",
+ models.TextField(blank=True, null=True, verbose_name="number of migration female (raw)"),
+ ),
+ ("raw_migration_male", models.TextField(blank=True, null=True, verbose_name="number of migration male (raw)")),
+ (
+ "raw_migration_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="number of migration people reached (raw)"),
+ ),
+ (
+ "raw_migration_people_targeted",
+ models.TextField(blank=True, null=True, verbose_name="number of migration people targeted (raw)"),
+ ),
+ (
+ "raw_migration_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of migration requirements (raw)"),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_female",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion female (raw)"
+ ),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_male",
+ models.TextField(blank=True, null=True, verbose_name="number of protection gender and inclusion male (raw)"),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion people reached (raw)"
+ ),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_people_targeted",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion people targeted (raw)"
+ ),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_requirements",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion requirements (raw)"
+ ),
+ ),
+ ("raw_shelter_female", models.TextField(blank=True, null=True, verbose_name="number of shelter female (raw)")),
+ ("raw_shelter_male", models.TextField(blank=True, null=True, verbose_name="number of shelter male (raw)")),
+ (
+ "raw_shelter_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="number of shelter people reached (raw)"),
+ ),
+ (
+ "raw_shelter_people_targeted",
+ models.TextField(blank=True, null=True, verbose_name="number of shelter people targeted (raw)"),
+ ),
+ (
+ "raw_shelter_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of shelter requirements (raw)"),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_female",
+ models.TextField(blank=True, null=True, verbose_name="number of water sanitation and hygiene female (raw)"),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_male",
+ models.TextField(blank=True, null=True, verbose_name="number of water sanitation and hygiene male (raw)"),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of water sanitation and hygiene people reached (raw)"
+ ),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_people_targeted",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of water sanitation and hygiene people targeted (raw)"
+ ),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_requirements",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of water sanitation and hygiene requirements (raw)"
+ ),
+ ),
+ ("file_name", models.CharField(blank=True, max_length=200, null=True)),
+ ("appeal_ends", models.DateField(blank=True, null=True, verbose_name="appeal ends")),
+ ("appeal_launch_date", models.DateField(blank=True, null=True, verbose_name="appeal launch date")),
+ ("appeal_number", models.CharField(blank=True, max_length=20, null=True, verbose_name="appeal number")),
+ ("current_operation_budget", models.IntegerField(blank=True, null=True, verbose_name="current operation budget")),
+ ("dref_allocated", models.IntegerField(blank=True, null=True, verbose_name="DREF allocated")),
+ ("glide_number", models.CharField(blank=True, max_length=18, null=True, verbose_name="glide number")),
+ (
+ "num_of_people_to_be_assisted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of people to be assisted"),
+ ),
+ (
+ "disaster_risk_reduction_female",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction female"),
+ ),
+ (
+ "disaster_risk_reduction_male",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction male"),
+ ),
+ (
+ "disaster_risk_reduction_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction people reached"),
+ ),
+ (
+ "disaster_risk_reduction_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction people targeted"),
+ ),
+ (
+ "disaster_risk_reduction_requirements",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of disaster risk reduction people requirements"
+ ),
+ ),
+ ("health_female", models.IntegerField(blank=True, null=True, verbose_name="number of health female")),
+ ("health_male", models.IntegerField(blank=True, null=True, verbose_name="number of health male")),
+ (
+ "health_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of health people reached"),
+ ),
+ (
+ "health_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of health people targeted"),
+ ),
+ ("health_requirements", models.IntegerField(blank=True, null=True, verbose_name="number of health requirements")),
+ (
+ "livelihoods_and_basic_needs_female",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic needs female"),
+ ),
+ (
+ "livelihoods_and_basic_needs_male",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic needs male"),
+ ),
+ (
+ "livelihoods_and_basic_needs_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic people reached"),
+ ),
+ (
+ "livelihoods_and_basic_needs_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic people targeted"),
+ ),
+ (
+ "livelihoods_and_basic_needs_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic needs requirements"),
+ ),
+ ("migration_female", models.IntegerField(blank=True, null=True, verbose_name="number of migration female")),
+ ("migration_male", models.IntegerField(blank=True, null=True, verbose_name="number of migration male")),
+ (
+ "migration_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of migration people reached"),
+ ),
+ (
+ "migration_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of migration people targeted"),
+ ),
+ (
+ "migration_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of migration requirements"),
+ ),
+ (
+ "protection_gender_and_inclusion_female",
+ models.IntegerField(blank=True, null=True, verbose_name="number of protection gender and inclusion female"),
+ ),
+ (
+ "protection_gender_and_inclusion_male",
+ models.IntegerField(blank=True, null=True, verbose_name="number of protection gender and inclusion male"),
+ ),
+ (
+ "protection_gender_and_inclusion_people_reached",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion people reached"
+ ),
+ ),
+ (
+ "protection_gender_and_inclusion_people_targeted",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion people targeted"
+ ),
+ ),
+ (
+ "protection_gender_and_inclusion_requirements",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion requirements"
+ ),
+ ),
+ ("shelter_female", models.IntegerField(blank=True, null=True, verbose_name="number of shelter female")),
+ ("shelter_male", models.IntegerField(blank=True, null=True, verbose_name="number of shelter male")),
+ (
+ "shelter_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of shelter people reached"),
+ ),
+ (
+ "shelter_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of shelter people targeted"),
+ ),
+ (
+ "shelter_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of shelter people requirements"),
+ ),
+ (
+ "water_sanitation_and_hygiene_female",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene female"),
+ ),
+ (
+ "water_sanitation_and_hygiene_male",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene male"),
+ ),
+ (
+ "water_sanitation_and_hygiene_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene people reached"),
+ ),
+ (
+ "water_sanitation_and_hygiene_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene people targeted"),
+ ),
+ (
+ "water_sanitation_and_hygiene_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene requirements"),
+ ),
+ ],
+ options={
+ "verbose_name": "emergency operations emergency appeal",
+ "verbose_name_plural": "emergency operations emergency appeals",
+ },
+ ),
+ migrations.CreateModel(
+ name="EmergencyOperationsFR",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "is_validated",
+ models.BooleanField(
+ default=False, help_text="Did anyone check the editable data?", verbose_name="is validated?"
+ ),
+ ),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created_at")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified_at")),
+ ("raw_file_name", models.TextField(blank=True, null=True)),
+ ("raw_file_url", models.TextField(blank=True, null=True)),
+ ("raw_appeal_number", models.TextField(blank=True, null=True, verbose_name="appeal number (raw)")),
+ ("raw_date_of_disaster", models.TextField(blank=True, null=True, verbose_name="date of disaster (raw)")),
+ ("raw_date_of_issue", models.TextField(blank=True, null=True, verbose_name="date of issue (raw)")),
+ ("raw_glide_number", models.TextField(blank=True, null=True, verbose_name="glide number (raw)")),
+ (
+ "raw_num_of_other_partner_involved",
+ models.TextField(blank=True, null=True, verbose_name="number of other partner involved (raw)"),
+ ),
+ (
+ "raw_num_of_partner_ns_involved",
+ models.TextField(blank=True, null=True, verbose_name="number of NS partner involved (raw)"),
+ ),
+ (
+ "raw_num_of_people_affected",
+ models.TextField(blank=True, null=True, verbose_name="number of people affected (raw)"),
+ ),
+ (
+ "raw_num_of_people_to_be_assisted",
+ models.TextField(blank=True, null=True, verbose_name="number of people to be assisted (raw)"),
+ ),
+ ("raw_operation_end_date", models.TextField(blank=True, null=True, verbose_name="operation end date (raw)")),
+ ("raw_operation_start_date", models.TextField(blank=True, null=True)),
+ (
+ "raw_overall_operation_budget",
+ models.TextField(blank=True, null=True, verbose_name="overall operation budget (raw)"),
+ ),
+ (
+ "raw_disaster_risk_reduction_female",
+ models.TextField(blank=True, null=True, verbose_name="number of disaster risk reduction female (raw)"),
+ ),
+ (
+ "raw_disaster_risk_reduction_male",
+ models.TextField(blank=True, null=True, verbose_name="number of disaster risk reduction male (raw)"),
+ ),
+ (
+ "raw_disaster_risk_reduction_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of disaster risk reduction people reached (raw)"
+ ),
+ ),
+ (
+ "raw_disaster_risk_reduction_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of disaster risk reduction requirements (raw)"),
+ ),
+ ("raw_health_female", models.TextField(blank=True, null=True, verbose_name="health female (raw)")),
+ ("raw_health_male", models.TextField(blank=True, null=True, verbose_name="health male (raw)")),
+ (
+ "raw_health_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="health people reached (raw)"),
+ ),
+ ("raw_health_requirements", models.TextField(blank=True, null=True, verbose_name="health requirements (raw)")),
+ (
+ "raw_livelihoods_and_basic_needs_female",
+ models.TextField(blank=True, null=True, verbose_name="number of livelihhods and basic needs female (raw)"),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_male",
+ models.TextField(blank=True, null=True, verbose_name="number of livelihhods and basic needs male (raw)"),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of livelihhods and basic needs people reached (raw)"
+ ),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_requirements",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of livelihhods and basic needs requirements (raw)"
+ ),
+ ),
+ (
+ "raw_migration_female",
+ models.TextField(blank=True, null=True, verbose_name="number of migration female (raw)"),
+ ),
+ ("raw_migration_male", models.TextField(blank=True, null=True, verbose_name="number of migration male (raw)")),
+ (
+ "raw_migration_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="number of migration people reached (raw)"),
+ ),
+ (
+ "raw_migration_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of migration requirements (raw)"),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_female",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion female (raw)"
+ ),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_male",
+ models.TextField(blank=True, null=True, verbose_name="number of protection gender and inclusion male (raw)"),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion people reached (raw)"
+ ),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_requirements",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion requirements (raw)"
+ ),
+ ),
+ ("raw_shelter_female", models.TextField(blank=True, null=True, verbose_name="number of shelter female (raw)")),
+ ("raw_shelter_male", models.TextField(blank=True, null=True, verbose_name="number of shelter male (raw)")),
+ (
+ "raw_shelter_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="number of shelter people reached (raw)"),
+ ),
+ (
+ "raw_shelter_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of shelter requirements (raw)"),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_female",
+ models.TextField(blank=True, null=True, verbose_name="number of water sanitation and hygiene female (raw)"),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_male",
+ models.TextField(blank=True, null=True, verbose_name="number of water sanitation and hygiene male (raw)"),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of water sanitation and hygiene people reached (raw)"
+ ),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_requirements",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of water sanitation and hygiene requirements (raw)"
+ ),
+ ),
+ ("file_name", models.CharField(blank=True, max_length=200, null=True)),
+ ("appeal_number", models.CharField(blank=True, max_length=20, null=True, verbose_name="appeal number")),
+ ("date_of_disaster", models.DateField(blank=True, null=True, verbose_name="date of disaster")),
+ ("date_of_issue", models.DateField(blank=True, null=True, verbose_name="date of issue")),
+ ("glide_number", models.CharField(blank=True, max_length=18, null=True, verbose_name="glide number")),
+ (
+ "num_of_other_partner_involved",
+ models.TextField(blank=True, null=True, verbose_name="number of other partner involved"),
+ ),
+ (
+ "num_of_partner_ns_involved",
+ models.TextField(blank=True, null=True, verbose_name="number of NS partner involved"),
+ ),
+ ("num_of_people_affected", models.IntegerField(blank=True, null=True, verbose_name="number of people affected")),
+ (
+ "num_of_people_to_be_assisted",
+ models.IntegerField(blank=True, null=True, verbose_name="number of people to be assisted"),
+ ),
+ ("operation_end_date", models.DateField(blank=True, null=True, verbose_name="operation end date")),
+ ("operation_start_date", models.DateField(blank=True, null=True, verbose_name="operation start date")),
+ ("overall_operation_budget", models.IntegerField(blank=True, null=True, verbose_name="overall operation budget")),
+ (
+ "disaster_risk_reduction_female",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction female"),
+ ),
+ (
+ "disaster_risk_reduction_male",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction male"),
+ ),
+ (
+ "disaster_risk_reduction_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction people reached"),
+ ),
+ (
+ "disaster_risk_reduction_requirements",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of disaster risk reduction people requirements"
+ ),
+ ),
+ ("health_female", models.IntegerField(blank=True, null=True, verbose_name="number of health female")),
+ ("health_male", models.IntegerField(blank=True, null=True, verbose_name="number of health male")),
+ (
+ "health_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of health people reached"),
+ ),
+ ("health_requirements", models.IntegerField(blank=True, null=True, verbose_name="number of health requirements")),
+ (
+ "livelihoods_and_basic_needs_female",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic needs female"),
+ ),
+ (
+ "livelihoods_and_basic_needs_male",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic needs male"),
+ ),
+ (
+ "livelihoods_and_basic_needs_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic people reached"),
+ ),
+ (
+ "livelihoods_and_basic_needs_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic needs requirements"),
+ ),
+ ("migration_female", models.IntegerField(blank=True, null=True, verbose_name="number of migration female")),
+ ("migration_male", models.IntegerField(blank=True, null=True, verbose_name="number of migration male")),
+ (
+ "migration_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of migration people reached"),
+ ),
+ (
+ "migration_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of migration requirements"),
+ ),
+ (
+ "protection_gender_and_inclusion_female",
+ models.IntegerField(blank=True, null=True, verbose_name="number of protection gender and inclusion female"),
+ ),
+ (
+ "protection_gender_and_inclusion_male",
+ models.IntegerField(blank=True, null=True, verbose_name="number of protection gender and inclusion male"),
+ ),
+ (
+ "protection_gender_and_inclusion_people_reached",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion people reached"
+ ),
+ ),
+ (
+ "protection_gender_and_inclusion_requirements",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion requirements"
+ ),
+ ),
+ ("shelter_female", models.IntegerField(blank=True, null=True, verbose_name="number of shelter female")),
+ ("shelter_male", models.IntegerField(blank=True, null=True, verbose_name="number of shelter male")),
+ (
+ "shelter_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of shelter people reached"),
+ ),
+ (
+ "shelter_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of shelter people requirements"),
+ ),
+ (
+ "water_sanitation_and_hygiene_female",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene female"),
+ ),
+ (
+ "water_sanitation_and_hygiene_male",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene male"),
+ ),
+ (
+ "water_sanitation_and_hygiene_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene people reached"),
+ ),
+ (
+ "water_sanitation_and_hygiene_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene requirements"),
+ ),
+ ],
+ options={
+ "verbose_name": "emergency operations final report",
+ "verbose_name_plural": "emergency operations final reports",
+ },
+ ),
+ migrations.CreateModel(
+ name="EmergencyOperationsPeopleReached",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "is_validated",
+ models.BooleanField(
+ default=False, help_text="Did anyone check the editable data?", verbose_name="is validated?"
+ ),
+ ),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created_at")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified_at")),
+ ("raw_file_name", models.TextField(blank=True, null=True)),
+ ("raw_file_url", models.TextField(blank=True, null=True)),
+ ("raw_appeal_number", models.TextField(blank=True, null=True, verbose_name="appeal number (raw)")),
+ ("raw_date_of_issue", models.TextField(blank=True, null=True, verbose_name="date of issue (raw)")),
+ ("raw_epoa_update_num", models.TextField(blank=True, null=True, verbose_name="EPOA update number (raw)")),
+ ("raw_glide_number", models.TextField(blank=True, null=True, verbose_name="glide number (raw)")),
+ ("raw_operation_start_date", models.TextField(blank=True, null=True)),
+ ("raw_operation_timeframe", models.TextField(blank=True, null=True, verbose_name="operation timeframe (raw)")),
+ (
+ "raw_time_frame_covered_by_update",
+ models.TextField(blank=True, null=True, verbose_name="time frame covered by update (raw)"),
+ ),
+ (
+ "raw_disaster_risk_reduction_female",
+ models.TextField(blank=True, null=True, verbose_name="number of disaster risk reduction female (raw)"),
+ ),
+ (
+ "raw_disaster_risk_reduction_male",
+ models.TextField(blank=True, null=True, verbose_name="number of disaster risk reduction male (raw)"),
+ ),
+ (
+ "raw_disaster_risk_reduction_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of disaster risk reduction people reached (raw)"
+ ),
+ ),
+ (
+ "raw_disaster_risk_reduction_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of disaster risk reduction requirements (raw)"),
+ ),
+ ("raw_health_female", models.TextField(blank=True, null=True, verbose_name="health female (raw)")),
+ ("raw_health_male", models.TextField(blank=True, null=True, verbose_name="health male (raw)")),
+ (
+ "raw_health_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="health people reached (raw)"),
+ ),
+ ("raw_health_requirements", models.TextField(blank=True, null=True, verbose_name="health requirements (raw)")),
+ (
+ "raw_livelihoods_and_basic_needs_female",
+ models.TextField(blank=True, null=True, verbose_name="number of livelihhods and basic needs female (raw)"),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_male",
+ models.TextField(blank=True, null=True, verbose_name="number of livelihhods and basic needs male (raw)"),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of livelihhods and basic needs people reached (raw)"
+ ),
+ ),
+ (
+ "raw_livelihoods_and_basic_needs_requirements",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of livelihhods and basic needs requirements (raw)"
+ ),
+ ),
+ (
+ "raw_migration_female",
+ models.TextField(blank=True, null=True, verbose_name="number of migration female (raw)"),
+ ),
+ ("raw_migration_male", models.TextField(blank=True, null=True, verbose_name="number of migration male (raw)")),
+ (
+ "raw_migration_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="number of migration people reached (raw)"),
+ ),
+ (
+ "raw_migration_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of migration requirements (raw)"),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_female",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion female (raw)"
+ ),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_male",
+ models.TextField(blank=True, null=True, verbose_name="number of protection gender and inclusion male (raw)"),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion people reached (raw)"
+ ),
+ ),
+ (
+ "raw_protection_gender_and_inclusion_requirements",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion requirements (raw)"
+ ),
+ ),
+ ("raw_shelter_female", models.TextField(blank=True, null=True, verbose_name="number of shelter female (raw)")),
+ ("raw_shelter_male", models.TextField(blank=True, null=True, verbose_name="number of shelter male (raw)")),
+ (
+ "raw_shelter_people_reached",
+ models.TextField(blank=True, null=True, verbose_name="number of shelter people reached (raw)"),
+ ),
+ (
+ "raw_shelter_requirements",
+ models.TextField(blank=True, null=True, verbose_name="number of shelter requirements (raw)"),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_female",
+ models.TextField(blank=True, null=True, verbose_name="number of water sanitation and hygiene female (raw)"),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_male",
+ models.TextField(blank=True, null=True, verbose_name="number of water sanitation and hygiene male (raw)"),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_people_reached",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of water sanitation and hygiene people reached (raw)"
+ ),
+ ),
+ (
+ "raw_water_sanitation_and_hygiene_requirements",
+ models.TextField(
+ blank=True, null=True, verbose_name="number of water sanitation and hygiene requirements (raw)"
+ ),
+ ),
+ ("file_name", models.CharField(blank=True, max_length=200, null=True)),
+ ("appeal_number", models.CharField(blank=True, max_length=20, null=True, verbose_name="appeal number")),
+ ("date_of_issue", models.DateField(blank=True, null=True, verbose_name="date of issue")),
+ ("epoa_update_num", models.IntegerField(blank=True, null=True, verbose_name="EPOA update number")),
+ ("glide_number", models.CharField(blank=True, max_length=18, null=True, verbose_name="glide number")),
+ ("operation_start_date", models.DateField(blank=True, null=True, verbose_name="operation start date")),
+ (
+ "operation_timeframe",
+ models.CharField(blank=True, max_length=200, null=True, verbose_name="operation timeframe"),
+ ),
+ (
+ "time_frame_covered_by_update",
+ models.CharField(blank=True, max_length=200, null=True, verbose_name="time frame covered by update"),
+ ),
+ (
+ "disaster_risk_reduction_female",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction female"),
+ ),
+ (
+ "disaster_risk_reduction_male",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction male"),
+ ),
+ (
+ "disaster_risk_reduction_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of disaster risk reduction people reached"),
+ ),
+ (
+ "disaster_risk_reduction_requirements",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of disaster risk reduction people requirements"
+ ),
+ ),
+ ("health_female", models.IntegerField(blank=True, null=True, verbose_name="number of health female")),
+ ("health_male", models.IntegerField(blank=True, null=True, verbose_name="number of health male")),
+ (
+ "health_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of health people reached"),
+ ),
+ ("health_requirements", models.IntegerField(blank=True, null=True, verbose_name="number of health requirements")),
+ (
+ "livelihoods_and_basic_needs_female",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic needs female"),
+ ),
+ (
+ "livelihoods_and_basic_needs_male",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic needs male"),
+ ),
+ (
+ "livelihoods_and_basic_needs_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic people reached"),
+ ),
+ (
+ "livelihoods_and_basic_needs_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of livelihhods and basic needs requirements"),
+ ),
+ ("migration_female", models.IntegerField(blank=True, null=True, verbose_name="number of migration female")),
+ ("migration_male", models.IntegerField(blank=True, null=True, verbose_name="number of migration male")),
+ (
+ "migration_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of migration people reached"),
+ ),
+ (
+ "migration_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of migration requirements"),
+ ),
+ (
+ "protection_gender_and_inclusion_female",
+ models.IntegerField(blank=True, null=True, verbose_name="number of protection gender and inclusion female"),
+ ),
+ (
+ "protection_gender_and_inclusion_male",
+ models.IntegerField(blank=True, null=True, verbose_name="number of protection gender and inclusion male"),
+ ),
+ (
+ "protection_gender_and_inclusion_people_reached",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion people reached"
+ ),
+ ),
+ (
+ "protection_gender_and_inclusion_requirements",
+ models.IntegerField(
+ blank=True, null=True, verbose_name="number of protection gender and inclusion requirements"
+ ),
+ ),
+ ("shelter_female", models.IntegerField(blank=True, null=True, verbose_name="number of shelter female")),
+ ("shelter_male", models.IntegerField(blank=True, null=True, verbose_name="number of shelter male")),
+ (
+ "shelter_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="number of shelter people reached"),
+ ),
+ (
+ "shelter_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="number of shelter people requirements"),
+ ),
+ (
+ "water_sanitation_and_hygiene_female",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene female"),
+ ),
+ (
+ "water_sanitation_and_hygiene_male",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene male"),
+ ),
+ (
+ "water_sanitation_and_hygiene_people_reached",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene people reached"),
+ ),
+ (
+ "water_sanitation_and_hygiene_requirements",
+ models.IntegerField(blank=True, null=True, verbose_name="water sanitation and hygiene requirements"),
+ ),
+ ],
+ options={
+ "verbose_name": "emergency operations people reached",
+ "verbose_name_plural": "emergency operations people reached",
+ },
+ ),
+ migrations.CreateModel(
+ name="CronJob",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(default="", max_length=100, verbose_name="name")),
+ (
+ "status",
+ models.IntegerField(
+ choices=[(-2, "Acknowledged"), (-1, "Never run"), (0, "Successful"), (1, "Warned"), (2, "Erroneous")],
+ default=-1,
+ verbose_name="status",
+ ),
+ ),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("message", models.TextField(blank=True, null=True, verbose_name="message")),
+ ("backend_side", models.BooleanField(default=True, verbose_name="backend side")),
+ ("num_result", models.IntegerField(default=0, verbose_name="number of results")),
+ ("storing_days", models.IntegerField(default=3, verbose_name="storing days")),
+ ],
+ options={
+ "verbose_name": "cronjob log record",
+ "verbose_name_plural": "cronjob log records",
+ },
+ ),
+ migrations.CreateModel(
+ name="AuthLog",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("action", models.CharField(max_length=64, verbose_name="action")),
+ ("username", models.CharField(max_length=256, null=True, verbose_name="username")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ],
+ options={
+ "verbose_name": "auth log",
+ "verbose_name_plural": "auth logs",
+ },
+ ),
+ migrations.CreateModel(
+ name="ReversionDifferenceLog",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("action", models.CharField(max_length=64, verbose_name="action")),
+ ("username", models.CharField(max_length=256, null=True, verbose_name="username")),
+ ("object_id", models.CharField(blank=True, max_length=191, verbose_name="object id")),
+ ("object_type", models.CharField(blank=True, max_length=50, verbose_name="object type")),
+ (
+ "changed_from",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.TextField(blank=True, null=True),
+ blank=True,
+ default=list,
+ null=True,
+ size=None,
+ verbose_name="changed from",
+ ),
+ ),
+ (
+ "changed_to",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.TextField(blank=True, null=True),
+ blank=True,
+ default=list,
+ null=True,
+ size=None,
+ verbose_name="changed to",
+ ),
+ ),
+ ("object_name", models.TextField(blank=True, null=True, verbose_name="object name")),
+ ],
+ options={
+ "verbose_name": "reversion difference log",
+ "verbose_name_plural": "reversion difference logs",
+ },
+ ),
+ migrations.CreateModel(
+ name="RegionSnippet",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("snippet", models.TextField(blank=True, null=True, verbose_name="snippet")),
+ ("image", models.ImageField(blank=True, null=True, upload_to="regions/%Y/%m/%d/", verbose_name="image")),
+ (
+ "visibility",
+ models.IntegerField(
+ choices=[(1, "RCRC Movement"), (2, "IFRC Secretariat"), (3, "Public"), (4, "IFRC and NS")],
+ default=3,
+ verbose_name="visibility",
+ ),
+ ),
+ (
+ "region",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="snippets",
+ to="api.region",
+ verbose_name="region",
+ ),
+ ),
+ (
+ "position",
+ models.IntegerField(
+ choices=[(1, "Top"), (2, "High"), (3, "Middle"), (4, "Low"), (5, "Bottom")],
+ default=3,
+ verbose_name="position",
+ ),
+ ),
+ ],
+ options={
+ "ordering": ("position", "id"),
+ "verbose_name": "region snippet",
+ "verbose_name_plural": "region snippets",
+ },
+ ),
+ migrations.CreateModel(
+ name="ActionsTaken",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "organization",
+ models.CharField(
+ choices=[("NTLS", "National Society"), ("PNS", "Foreign Society"), ("FDRN", "Federation")],
+ max_length=16,
+ verbose_name="organization",
+ ),
+ ),
+ ("summary", models.TextField(blank=True, verbose_name="summary")),
+ ("actions", models.ManyToManyField(blank=True, to="api.action", verbose_name="actions")),
+ (
+ "field_report",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="actions_taken",
+ to="api.fieldreport",
+ verbose_name="field report",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "actions taken",
+ "verbose_name_plural": "all actions taken",
+ },
+ ),
+ migrations.CreateModel(
+ name="Appeal",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("aid", models.CharField(max_length=20, verbose_name="appeal ID")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ (
+ "atype",
+ models.IntegerField(
+ choices=[(0, "DREF"), (1, "Emergency Appeal"), (2, "International Appeal"), (3, "Forecast Based Action")],
+ default=0,
+ verbose_name="appeal type",
+ ),
+ ),
+ (
+ "status",
+ models.IntegerField(
+ choices=[(0, "Active"), (1, "Closed"), (2, "Frozen"), (3, "Archived")], default=0, verbose_name="status"
+ ),
+ ),
+ ("code", models.CharField(max_length=20, null=True, unique=True, verbose_name="code")),
+ ("sector", models.CharField(blank=True, max_length=100, verbose_name="sector")),
+ ("num_beneficiaries", models.IntegerField(default=0, verbose_name="number of beneficiaries")),
+ (
+ "amount_requested",
+ models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name="amount requested"),
+ ),
+ (
+ "amount_funded",
+ models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name="amount funded"),
+ ),
+ ("start_date", models.DateTimeField(null=True, verbose_name="start date")),
+ ("end_date", models.DateTimeField(null=True, verbose_name="end date")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified at")),
+ (
+ "country",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.country", verbose_name="country"
+ ),
+ ),
+ (
+ "dtype",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.disastertype",
+ verbose_name="disaster type",
+ ),
+ ),
+ (
+ "event",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="appeals",
+ to="api.event",
+ verbose_name="event",
+ ),
+ ),
+ (
+ "region",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.region", verbose_name="region"
+ ),
+ ),
+ ("needs_confirmation", models.BooleanField(default=False, verbose_name="needs confirmation?")),
+ ("previous_update", models.DateTimeField(blank=True, null=True, verbose_name="previous update")),
+ ("real_data_update", models.DateTimeField(blank=True, null=True, verbose_name="real data update")),
+ ],
+ options={
+ "ordering": ("-start_date", "-end_date"),
+ "verbose_name": "appeal",
+ "verbose_name_plural": "appeals",
+ },
+ ),
+ migrations.CreateModel(
+ name="AppealDocument",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(verbose_name="created at")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ (
+ "document",
+ models.FileField(blank=True, null=True, upload_to=api.models.appeal_document_path, verbose_name="document"),
+ ),
+ ("document_url", models.URLField(blank=True, verbose_name="document url")),
+ (
+ "appeal",
+ models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.appeal", verbose_name="appeal"),
+ ),
+ ],
+ options={
+ "verbose_name": "appeal document",
+ "verbose_name_plural": "appeal documents",
+ },
+ ),
+ migrations.CreateModel(
+ name="CountryContact",
+ fields=[
+ (
+ "admincontact_ptr",
+ models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True,
+ primary_key=True,
+ serialize=False,
+ to="api.admincontact",
+ ),
+ ),
+ (
+ "country",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="contacts",
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "country contact",
+ "verbose_name_plural": "country contacts",
+ },
+ bases=("api.admincontact",),
+ ),
+ migrations.CreateModel(
+ name="CountryLink",
+ fields=[
+ (
+ "adminlink_ptr",
+ models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True,
+ primary_key=True,
+ serialize=False,
+ to="api.adminlink",
+ ),
+ ),
+ (
+ "country",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="links",
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "country link",
+ "verbose_name_plural": "country links",
+ },
+ bases=("api.adminlink",),
+ ),
+ migrations.CreateModel(
+ name="EventContact",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("ctype", models.CharField(blank=True, max_length=100, verbose_name="type")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ ("title", models.CharField(max_length=300, verbose_name="title")),
+ ("email", models.CharField(max_length=300, verbose_name="email")),
+ (
+ "event",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, related_name="contacts", to="api.event", verbose_name="event"
+ ),
+ ),
+ ("phone", models.CharField(blank=True, max_length=100, null=True, verbose_name="phone")),
+ ],
+ options={
+ "verbose_name": "event contact",
+ "verbose_name_plural": "event contacts",
+ },
+ ),
+ migrations.CreateModel(
+ name="FieldReportContact",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("ctype", models.CharField(blank=True, max_length=100, verbose_name="type")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ ("title", models.CharField(max_length=300, verbose_name="title")),
+ ("email", models.CharField(max_length=300, verbose_name="email")),
+ (
+ "field_report",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="contacts",
+ to="api.fieldreport",
+ verbose_name="field report",
+ ),
+ ),
+ ("phone", models.CharField(blank=True, max_length=50, verbose_name="phone")),
+ ],
+ options={
+ "verbose_name": "field report contanct",
+ "verbose_name_plural": "field report contancts",
+ },
+ ),
+ migrations.CreateModel(
+ name="GDACSEvent",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("eventid", models.CharField(max_length=12, verbose_name="event id")),
+ ("title", models.TextField(verbose_name="title")),
+ ("description", models.TextField(verbose_name="description")),
+ ("image", models.URLField(null=True, verbose_name="image")),
+ ("report", models.URLField(null=True, verbose_name="report")),
+ ("publication_date", models.DateTimeField(verbose_name="publication date")),
+ ("year", models.IntegerField(verbose_name="year")),
+ ("lat", models.FloatField(verbose_name="latitude")),
+ ("lon", models.FloatField(verbose_name="longitude")),
+ ("event_type", models.CharField(max_length=16, verbose_name="event type")),
+ (
+ "alert_level",
+ models.IntegerField(
+ choices=[(0, "Yellow"), (1, "Orange"), (2, "Red")], default=0, verbose_name="alert level"
+ ),
+ ),
+ ("alert_score", models.CharField(max_length=16, null=True, verbose_name="alert score")),
+ ("severity", models.TextField(verbose_name="severity")),
+ ("severity_unit", models.CharField(max_length=16, verbose_name="severity unit")),
+ ("severity_value", models.CharField(max_length=16, verbose_name="severity value")),
+ ("population_unit", models.CharField(max_length=16, verbose_name="population unit")),
+ ("population_value", models.CharField(max_length=16, verbose_name="population value")),
+ ("vulnerability", models.FloatField(verbose_name="vulnerability")),
+ ("country_text", models.TextField(verbose_name="country text")),
+ ("countries", models.ManyToManyField(to="api.country", verbose_name="countries")),
+ ],
+ options={
+ "verbose_name": "gdacs event",
+ "verbose_name_plural": "gdacs events",
+ },
+ ),
+ migrations.CreateModel(
+ name="KeyFigure",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("number", models.CharField(help_text="key figure metric", max_length=100, verbose_name="number")),
+ ("deck", models.CharField(help_text="key figure units", max_length=50, verbose_name="deck")),
+ (
+ "source",
+ models.CharField(help_text="key figure website link, publication", max_length=256, verbose_name="source"),
+ ),
+ (
+ "event",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="key_figures",
+ to="api.event",
+ verbose_name="event",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "key figure",
+ "verbose_name_plural": "key figures",
+ },
+ ),
+ migrations.CreateModel(
+ name="Profile",
+ fields=[
+ (
+ "user",
+ models.OneToOneField(
+ editable=False,
+ on_delete=django.db.models.deletion.CASCADE,
+ primary_key=True,
+ related_name="profile",
+ serialize=False,
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="user",
+ ),
+ ),
+ ("org", models.CharField(blank=True, max_length=100, verbose_name="organization")),
+ (
+ "org_type",
+ models.CharField(
+ blank=True,
+ choices=[
+ ("NTLS", "National Society"),
+ ("DLGN", "Delegation"),
+ ("SCRT", "Secretariat"),
+ ("ICRC", "ICRC"),
+ ("OTHR", "Other"),
+ ],
+ max_length=4,
+ verbose_name="organization type",
+ ),
+ ),
+ ("city", models.CharField(blank=True, max_length=100, null=True, verbose_name="city")),
+ ("department", models.CharField(blank=True, max_length=100, null=True, verbose_name="department")),
+ ("position", models.CharField(blank=True, max_length=100, null=True, verbose_name="position")),
+ ("phone_number", models.CharField(blank=True, max_length=100, null=True, verbose_name="phone number")),
+ (
+ "country",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.country", verbose_name="country"
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "user profile",
+ "verbose_name_plural": "user profiles",
+ },
+ ),
+ migrations.CreateModel(
+ name="SituationReport",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ (
+ "document",
+ models.FileField(blank=True, null=True, upload_to=api.models.sitrep_document_path, verbose_name="document"),
+ ),
+ ("document_url", models.URLField(blank=True, verbose_name="document url")),
+ ("event", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.event", verbose_name="event")),
+ (
+ "visibility",
+ models.IntegerField(
+ choices=[(1, "RCRC Movement"), (2, "IFRC Secretariat"), (3, "Public"), (4, "IFRC and NS")],
+ default=1,
+ verbose_name="visibility",
+ ),
+ ),
+ (
+ "type",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="situation_reports",
+ to="api.situationreporttype",
+ verbose_name="type",
+ ),
+ ),
+ (
+ "is_pinned",
+ models.BooleanField(default=False, help_text="pin this report at the top", verbose_name="is pinned?"),
+ ),
+ ],
+ options={
+ "verbose_name": "situation report",
+ "verbose_name_plural": "situation reports",
+ },
+ ),
+ migrations.CreateModel(
+ name="Source",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("spec", models.TextField(blank=True, verbose_name="spec")),
+ (
+ "field_report",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="sources",
+ to="api.fieldreport",
+ verbose_name="field report",
+ ),
+ ),
+ (
+ "stype",
+ models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to="api.sourcetype", verbose_name="type"),
+ ),
+ ],
+ options={
+ "verbose_name": "source",
+ "verbose_name_plural": "sources",
+ },
+ ),
+ migrations.CreateModel(
+ name="CountryKeyFigure",
+ fields=[
+ (
+ "adminkeyfigure_ptr",
+ models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True,
+ primary_key=True,
+ serialize=False,
+ to="api.adminkeyfigure",
+ ),
+ ),
+ (
+ "country",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="key_figures",
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "country key figure",
+ "verbose_name_plural": "country key figures",
+ },
+ bases=("api.adminkeyfigure",),
+ ),
+ migrations.CreateModel(
+ name="CountrySnippet",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("snippet", models.TextField(blank=True, null=True, verbose_name="snippet")),
+ ("image", models.ImageField(blank=True, null=True, upload_to="countries/%Y/%m/%d/", verbose_name="image")),
+ (
+ "visibility",
+ models.IntegerField(
+ choices=[(1, "RCRC Movement"), (2, "IFRC Secretariat"), (3, "Public"), (4, "IFRC and NS")],
+ default=3,
+ verbose_name="visibility",
+ ),
+ ),
+ (
+ "country",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="snippets",
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ (
+ "position",
+ models.IntegerField(
+ choices=[(1, "Top"), (2, "High"), (3, "Middle"), (4, "Low"), (5, "Bottom")],
+ default=3,
+ verbose_name="position",
+ ),
+ ),
+ ],
+ options={
+ "ordering": ("position", "id"),
+ "verbose_name": "country snippet",
+ "verbose_name_plural": "country snippets",
+ },
+ ),
+ migrations.CreateModel(
+ name="Snippet",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("snippet", models.TextField(blank=True, null=True, verbose_name="snippet")),
+ (
+ "event",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, related_name="snippets", to="api.event", verbose_name="event"
+ ),
+ ),
+ (
+ "image",
+ models.ImageField(blank=True, null=True, upload_to=api.models.snippet_image_path, verbose_name="image"),
+ ),
+ (
+ "visibility",
+ models.IntegerField(
+ choices=[(1, "RCRC Movement"), (2, "IFRC Secretariat"), (3, "Public"), (4, "IFRC and NS")],
+ default=3,
+ verbose_name="visibility",
+ ),
+ ),
+ (
+ "position",
+ models.IntegerField(
+ choices=[(1, "Top"), (2, "High"), (3, "Middle"), (4, "Low"), (5, "Bottom")],
+ default=3,
+ verbose_name="position",
+ ),
+ ),
+ ("tab", models.IntegerField(choices=[(1, "Tab 1"), (2, "Tab 2"), (3, "Tab 3")], default=1, verbose_name="tab")),
+ ],
+ options={
+ "ordering": ("position", "id"),
+ "verbose_name": "snippet",
+ "verbose_name_plural": "snippets",
+ },
+ ),
+ django.contrib.postgres.operations.CreateExtension(
+ name="postgis",
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="bbox",
+ field=django.contrib.gis.db.models.fields.PolygonField(blank=True, null=True, srid=4326),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="centroid",
+ field=django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="geom",
+ field=django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326),
+ ),
+ migrations.AddField(
+ model_name="district",
+ name="bbox",
+ field=django.contrib.gis.db.models.fields.PolygonField(blank=True, null=True, srid=4326),
+ ),
+ migrations.AddField(
+ model_name="district",
+ name="centroid",
+ field=django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326),
+ ),
+ migrations.AddField(
+ model_name="district",
+ name="geom",
+ field=django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326),
+ ),
+ # migrations.RunPython(
+ # code=api.migrations.0077_auto_20200721_1051.delete_idn,
+ # ),
+ migrations.AlterField(
+ model_name="district",
+ name="country_iso",
+ field=models.CharField(max_length=2, null=True, verbose_name="country ISO2"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="independent",
+ field=models.BooleanField(default=None, help_text="Is this an independent country?"),
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="bbox",
+ field=django.contrib.gis.db.models.fields.PolygonField(blank=True, null=True, srid=4326),
+ ),
+ migrations.AddField(
+ model_name="profile",
+ name="last_frontend_login",
+ field=models.DateTimeField(blank=True, null=True, verbose_name="last frontend login"),
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="confirmed_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="health_min_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="health_min_confirmed_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="health_min_num_dead",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="health_min_probable_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="health_min_suspected_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="other_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="other_confirmed_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="other_probable_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="other_suspected_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="probable_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="suspected_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="who_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="who_confirmed_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="who_num_dead",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="who_probable_cases",
+ ),
+ migrations.RemoveField(
+ model_name="fieldreport",
+ name="who_suspected_cases",
+ ),
+ migrations.AddField(
+ model_name="action",
+ name="name_ar",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="action",
+ name="name_en",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="action",
+ name="name_es",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="action",
+ name="name_fr",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="actionstaken",
+ name="summary_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="actionstaken",
+ name="summary_en",
+ field=models.TextField(blank=True, null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="actionstaken",
+ name="summary_es",
+ field=models.TextField(blank=True, null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="actionstaken",
+ name="summary_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="appeal",
+ name="name_ar",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="appeal",
+ name="name_en",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="appeal",
+ name="name_es",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="appeal",
+ name="name_fr",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="appealdocument",
+ name="name_ar",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="appealdocument",
+ name="name_en",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="appealdocument",
+ name="name_es",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="appealdocument",
+ name="name_fr",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="name_ar",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="name_en",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="name_es",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="name_fr",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="overview_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="overview"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="overview_en",
+ field=models.TextField(blank=True, null=True, verbose_name="overview"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="overview_es",
+ field=models.TextField(blank=True, null=True, verbose_name="overview"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="overview_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="overview"),
+ ),
+ migrations.AddField(
+ model_name="countrysnippet",
+ name="snippet_ar",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AddField(
+ model_name="countrysnippet",
+ name="snippet_en",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AddField(
+ model_name="countrysnippet",
+ name="snippet_es",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AddField(
+ model_name="countrysnippet",
+ name="snippet_fr",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AddField(
+ model_name="disastertype",
+ name="name_ar",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="disastertype",
+ name="name_en",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="disastertype",
+ name="name_es",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="disastertype",
+ name="name_fr",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="disastertype",
+ name="summary_ar",
+ field=models.TextField(null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="disastertype",
+ name="summary_en",
+ field=models.TextField(null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="disastertype",
+ name="summary_es",
+ field=models.TextField(null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="disastertype",
+ name="summary_fr",
+ field=models.TextField(null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="name_ar",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="name_en",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="name_es",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="name_fr",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="slug_ar",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ editable=False,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergencies/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="slug_en",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ editable=False,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergencies/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="slug_es",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ editable=False,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergencies/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="slug_fr",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ editable=False,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergencies/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="actions_others_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="actions taken (others)"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="actions_others_en",
+ field=models.TextField(blank=True, null=True, verbose_name="actions taken (others)"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="actions_others_es",
+ field=models.TextField(blank=True, null=True, verbose_name="actions taken (others)"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="actions_others_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="actions taken (others)"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="description_ar",
+ field=tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="description_en",
+ field=tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="description_es",
+ field=tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="description_fr",
+ field=tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="other_sources_ar",
+ field=models.TextField(blank=True, default="", null=True, verbose_name="sources (other)"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="other_sources_en",
+ field=models.TextField(blank=True, default="", null=True, verbose_name="sources (other)"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="other_sources_es",
+ field=models.TextField(blank=True, default="", null=True, verbose_name="sources (other)"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="other_sources_fr",
+ field=models.TextField(blank=True, default="", null=True, verbose_name="sources (other)"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="summary_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="summary_en",
+ field=models.TextField(blank=True, null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="summary_es",
+ field=models.TextField(blank=True, null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="summary_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="country_text_ar",
+ field=models.TextField(null=True, verbose_name="country text"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="country_text_en",
+ field=models.TextField(null=True, verbose_name="country text"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="country_text_es",
+ field=models.TextField(null=True, verbose_name="country text"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="country_text_fr",
+ field=models.TextField(null=True, verbose_name="country text"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="description_ar",
+ field=models.TextField(null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="description_en",
+ field=models.TextField(null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="description_es",
+ field=models.TextField(null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="description_fr",
+ field=models.TextField(null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="title_ar",
+ field=models.TextField(null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="title_en",
+ field=models.TextField(null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="title_es",
+ field=models.TextField(null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="title_fr",
+ field=models.TextField(null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="regionsnippet",
+ name="snippet_ar",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AddField(
+ model_name="regionsnippet",
+ name="snippet_en",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AddField(
+ model_name="regionsnippet",
+ name="snippet_es",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AddField(
+ model_name="regionsnippet",
+ name="snippet_fr",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AddField(
+ model_name="situationreport",
+ name="name_ar",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="situationreport",
+ name="name_en",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="situationreport",
+ name="name_es",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="situationreport",
+ name="name_fr",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="snippet",
+ name="snippet_ar",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AddField(
+ model_name="snippet",
+ name="snippet_en",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AddField(
+ model_name="snippet",
+ name="snippet_es",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AddField(
+ model_name="snippet",
+ name="snippet_fr",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AlterField(
+ model_name="countrysnippet",
+ name="snippet",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AlterField(
+ model_name="regionsnippet",
+ name="snippet",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AlterField(
+ model_name="snippet",
+ name="snippet",
+ field=tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet"),
+ ),
+ migrations.AlterModelOptions(
+ name="fieldreportcontact",
+ options={"verbose_name": "field report contacts", "verbose_name_plural": "field report contacts"},
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="society_name_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="society name"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="society_name_en",
+ field=models.TextField(blank=True, null=True, verbose_name="society name"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="society_name_es",
+ field=models.TextField(blank=True, null=True, verbose_name="society name"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="society_name_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="society name"),
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="label",
+ field=models.CharField(blank=True, max_length=150, verbose_name="name of the region"),
+ ),
+ # migrations.RunPython(
+ # code=api.migrations.0084_region_label.add_region_labels,
+ # ),
+ migrations.AddField(
+ model_name="country",
+ name="is_deprecated",
+ field=models.BooleanField(default=False, help_text="Is this an active, valid country?"),
+ ),
+ migrations.AddField(
+ model_name="district",
+ name="is_deprecated",
+ field=models.BooleanField(default=False, help_text="Is this an active, valid district?"),
+ ),
+ migrations.AlterField(
+ model_name="appealdocument",
+ name="document",
+ field=models.FileField(blank=True, null=True, upload_to=api.models.appeal_document_path, verbose_name="document"),
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="logo",
+ field=models.FileField(
+ blank=True,
+ null=True,
+ upload_to=api.models.logo_document_path,
+ validators=[django.core.validators.FileExtensionValidator(allowed_extensions=["png", "jpg", "gif"])],
+ verbose_name="logo",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="countrysnippet",
+ name="image",
+ field=models.ImageField(blank=True, null=True, upload_to="countries/%Y/%m/%d/", verbose_name="image"),
+ ),
+ migrations.AlterField(
+ model_name="regionsnippet",
+ name="image",
+ field=models.ImageField(blank=True, null=True, upload_to="regions/%Y/%m/%d/", verbose_name="image"),
+ ),
+ migrations.AlterField(
+ model_name="situationreport",
+ name="document",
+ field=models.FileField(blank=True, null=True, upload_to=api.models.sitrep_document_path, verbose_name="document"),
+ ),
+ migrations.AlterField(
+ model_name="snippet",
+ name="image",
+ field=models.ImageField(blank=True, null=True, upload_to=api.models.snippet_image_path, verbose_name="image"),
+ ),
+ migrations.AddField(
+ model_name="situationreporttype",
+ name="type_ar",
+ field=models.CharField(max_length=150, null=True, verbose_name="type"),
+ ),
+ migrations.AddField(
+ model_name="situationreporttype",
+ name="type_en",
+ field=models.CharField(max_length=150, null=True, verbose_name="type"),
+ ),
+ migrations.AddField(
+ model_name="situationreporttype",
+ name="type_es",
+ field=models.CharField(max_length=150, null=True, verbose_name="type"),
+ ),
+ migrations.AddField(
+ model_name="situationreporttype",
+ name="type_fr",
+ field=models.CharField(max_length=150, null=True, verbose_name="type"),
+ ),
+ migrations.AlterField(
+ model_name="action",
+ name="name",
+ field=models.CharField(max_length=400, verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="action",
+ name="name_ar",
+ field=models.CharField(max_length=400, null=True, verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="action",
+ name="name_en",
+ field=models.CharField(max_length=400, null=True, verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="action",
+ name="name_es",
+ field=models.CharField(max_length=400, null=True, verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="action",
+ name="name_fr",
+ field=models.CharField(max_length=400, null=True, verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="situationreporttype",
+ name="type",
+ field=models.CharField(max_length=150, verbose_name="type"),
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="label_ar",
+ field=models.CharField(blank=True, max_length=250, null=True, verbose_name="name of the region"),
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="label_en",
+ field=models.CharField(blank=True, max_length=250, null=True, verbose_name="name of the region"),
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="label_es",
+ field=models.CharField(blank=True, max_length=250, null=True, verbose_name="name of the region"),
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="label_fr",
+ field=models.CharField(blank=True, max_length=250, null=True, verbose_name="name of the region"),
+ ),
+ migrations.AlterField(
+ model_name="region",
+ name="label",
+ field=models.CharField(blank=True, max_length=250, verbose_name="name of the region"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="additional_tab_name",
+ field=models.CharField(blank=True, max_length=100, verbose_name="Label for Additional Tab"),
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="additional_tab_name",
+ field=models.CharField(blank=True, max_length=100, verbose_name="Label for Additional Tab"),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="num_displaced",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of displaced"),
+ ),
+ migrations.AddField(
+ model_name="regionlink",
+ name="show_in_go",
+ field=models.BooleanField(default=False, help_text="Show link contents within GO"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_annual_fdrs_reporting",
+ field=models.BooleanField(verbose_name="Annual Reporting to FDRS"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_branches",
+ field=models.IntegerField(blank=True, null=True, verbose_name="Branches"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_cmc_dashboard_compliance",
+ field=models.BooleanField(verbose_name="Complying with CMC Dashboard"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_domestically_generated_income",
+ field=models.BooleanField(verbose_name=">50% Domestically Generated Income"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_expenditures",
+ field=models.IntegerField(blank=True, null=True, verbose_name="Expenditures (CHF)"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_gov_financial_support",
+ field=models.BooleanField(verbose_name="Gov Financial Support"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_income",
+ field=models.IntegerField(blank=True, null=True, verbose_name="Income (CHF)"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_policy_implementation",
+ field=models.BooleanField(verbose_name="Your Policy / Programme Implementation"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_risk_management_framework",
+ field=models.BooleanField(verbose_name="Risk Management Framework"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_staff",
+ field=models.IntegerField(blank=True, null=True, verbose_name="Staff"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_trained_in_first_aid",
+ field=models.IntegerField(blank=True, null=True, verbose_name="Trained in First Aid"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_volunteers",
+ field=models.IntegerField(blank=True, null=True, verbose_name="Volunteers"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="nsi_youth",
+ field=models.IntegerField(blank=True, null=True, verbose_name="Youth - 6-19 Yrs"),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="num_displaced",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of displaced"),
+ ),
+ migrations.CreateModel(
+ name="RegionEmergencySnippet",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(blank=True, max_length=255)),
+ ("snippet", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ ("snippet_en", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ ("snippet_es", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ ("snippet_fr", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ ("snippet_ar", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ (
+ "position",
+ models.IntegerField(
+ choices=[(1, "Top"), (2, "High"), (3, "Middle"), (4, "Low"), (5, "Bottom")],
+ default=3,
+ verbose_name="position",
+ ),
+ ),
+ (
+ "region",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="emergency_snippets",
+ to="api.region",
+ verbose_name="region",
+ ),
+ ),
+ ("title_ar", models.CharField(blank=True, max_length=255, null=True)),
+ ("title_en", models.CharField(blank=True, max_length=255, null=True)),
+ ("title_es", models.CharField(blank=True, max_length=255, null=True)),
+ ("title_fr", models.CharField(blank=True, max_length=255, null=True)),
+ ],
+ options={
+ "verbose_name": "region emergencies snippet",
+ "verbose_name_plural": "region emergencies snippets",
+ "ordering": ("position", "id"),
+ },
+ ),
+ migrations.CreateModel(
+ name="RegionPreparednessSnippet",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(blank=True, max_length=255)),
+ ("snippet", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ ("snippet_en", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ ("snippet_es", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ ("snippet_fr", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ ("snippet_ar", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ (
+ "position",
+ models.IntegerField(
+ choices=[(1, "Top"), (2, "High"), (3, "Middle"), (4, "Low"), (5, "Bottom")],
+ default=3,
+ verbose_name="position",
+ ),
+ ),
+ (
+ "region",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="preparedness_snippets",
+ to="api.region",
+ verbose_name="region",
+ ),
+ ),
+ ("title_ar", models.CharField(blank=True, max_length=255, null=True)),
+ ("title_en", models.CharField(blank=True, max_length=255, null=True)),
+ ("title_es", models.CharField(blank=True, max_length=255, null=True)),
+ ("title_fr", models.CharField(blank=True, max_length=255, null=True)),
+ ],
+ options={
+ "verbose_name": "region preparedness snippet",
+ "verbose_name_plural": "region preparedness snippets",
+ "ordering": ("position", "id"),
+ },
+ ),
+ migrations.CreateModel(
+ name="RegionProfileSnippet",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(blank=True, max_length=255)),
+ ("snippet", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ ("snippet_en", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ ("snippet_es", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ ("snippet_fr", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ ("snippet_ar", tinymce.models.HTMLField(blank=True, null=True, verbose_name="snippet")),
+ (
+ "position",
+ models.IntegerField(
+ choices=[(1, "Top"), (2, "High"), (3, "Middle"), (4, "Low"), (5, "Bottom")],
+ default=3,
+ verbose_name="position",
+ ),
+ ),
+ (
+ "region",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="profile_snippets",
+ to="api.region",
+ verbose_name="region",
+ ),
+ ),
+ ("title_ar", models.CharField(blank=True, max_length=255, null=True)),
+ ("title_en", models.CharField(blank=True, max_length=255, null=True)),
+ ("title_es", models.CharField(blank=True, max_length=255, null=True)),
+ ("title_fr", models.CharField(blank=True, max_length=255, null=True)),
+ ],
+ options={
+ "verbose_name": "region profile snippet",
+ "verbose_name_plural": "region profile snippets",
+ "ordering": ("position", "id"),
+ },
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="additional_tab_name_ar",
+ field=models.CharField(blank=True, max_length=100, null=True, verbose_name="Label for Additional Tab"),
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="additional_tab_name_en",
+ field=models.CharField(blank=True, max_length=100, null=True, verbose_name="Label for Additional Tab"),
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="additional_tab_name_es",
+ field=models.CharField(blank=True, max_length=100, null=True, verbose_name="Label for Additional Tab"),
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="additional_tab_name_fr",
+ field=models.CharField(blank=True, max_length=100, null=True, verbose_name="Label for Additional Tab"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="wash_kit10",
+ field=models.IntegerField(blank=True, null=True, verbose_name="WASH Kit10"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="wash_kit2",
+ field=models.IntegerField(blank=True, null=True, verbose_name="WASH Kit2"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="wash_kit5",
+ field=models.IntegerField(blank=True, null=True, verbose_name="WASH Kit5"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="wash_ndrt_trained",
+ field=models.IntegerField(blank=True, null=True, verbose_name="NDRT Trained"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="wash_rdrt_trained",
+ field=models.IntegerField(blank=True, null=True, verbose_name="RDRT Trained"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="wash_staff_at_branch",
+ field=models.IntegerField(blank=True, null=True, verbose_name="WASH Staff at Branch"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="wash_staff_at_hq",
+ field=models.IntegerField(blank=True, null=True, verbose_name="WASH Staff at HQ"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="wash_total_staff",
+ field=models.IntegerField(blank=True, null=True, verbose_name="Total WASH Staff"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="additional_tab_name_ar",
+ field=models.CharField(blank=True, max_length=100, null=True, verbose_name="Label for Additional Tab"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="additional_tab_name_en",
+ field=models.CharField(blank=True, max_length=100, null=True, verbose_name="Label for Additional Tab"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="additional_tab_name_es",
+ field=models.CharField(blank=True, max_length=100, null=True, verbose_name="Label for Additional Tab"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="additional_tab_name_fr",
+ field=models.CharField(blank=True, max_length=100, null=True, verbose_name="Label for Additional Tab"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="fdrs",
+ field=models.CharField(blank=True, max_length=6, null=True, verbose_name="FDRS"),
+ ),
+ # migrations.RunPython(
+ # code=api.migrations.0101_uppercase_iso.uppercase_iso,
+ # ),
+ migrations.AlterField(
+ model_name="country",
+ name="iso",
+ field=models.CharField(
+ max_length=2,
+ null=True,
+ validators=[django.core.validators.RegexValidator("^[A-Z]*$", "ISO must be uppercase")],
+ verbose_name="ISO",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="iso3",
+ field=models.CharField(
+ max_length=3,
+ null=True,
+ validators=[django.core.validators.RegexValidator("^[A-Z]*$", "ISO must be uppercase")],
+ verbose_name="ISO3",
+ ),
+ ),
+ migrations.RemoveField(
+ model_name="district",
+ name="country_iso",
+ ),
+ migrations.CreateModel(
+ name="CountryGeoms",
+ fields=[
+ ("geom", django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326)),
+ (
+ "country",
+ models.OneToOneField(
+ on_delete=django.db.models.deletion.DO_NOTHING,
+ primary_key=True,
+ serialize=False,
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="DistrictGeoms",
+ fields=[
+ ("geom", django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326)),
+ (
+ "district",
+ models.OneToOneField(
+ on_delete=django.db.models.deletion.DO_NOTHING,
+ primary_key=True,
+ serialize=False,
+ to="api.district",
+ verbose_name="district",
+ ),
+ ),
+ ],
+ ),
+ migrations.RemoveField(
+ model_name="country",
+ name="geom",
+ ),
+ migrations.RemoveField(
+ model_name="district",
+ name="geom",
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="iso",
+ field=models.CharField(
+ blank=True,
+ max_length=2,
+ null=True,
+ validators=[django.core.validators.RegexValidator("^[A-Z]*$", "ISO must be uppercase")],
+ verbose_name="ISO",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="iso3",
+ field=models.CharField(
+ blank=True,
+ max_length=3,
+ null=True,
+ validators=[django.core.validators.RegexValidator("^[A-Z]*$", "ISO must be uppercase")],
+ verbose_name="ISO3",
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="hide_field_report_map",
+ field=models.BooleanField(default=False, verbose_name="hide field report map"),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="hide_attached_field_reports",
+ field=models.BooleanField(default=False, verbose_name="hide field report numeric details"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="epi_cases_since_last_fr",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of new cases since the last field report"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="epi_deaths_since_last_fr",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of new deaths since last field report"),
+ ),
+ migrations.AddField(
+ model_name="action",
+ name="tooltip_text",
+ field=models.TextField(blank="true", null=True, verbose_name="tooltip text"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="epi_notes_since_last_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="notes"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="notes_socioeco",
+ field=models.TextField(blank=True, null=True, verbose_name="Description (Socioeconomic Interventions)"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="notes_health",
+ field=models.TextField(blank=True, null=True, verbose_name="Description (Health)"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="notes_ns",
+ field=models.TextField(blank=True, null=True, verbose_name="Description (NS Institutional Strengthening)"),
+ ),
+ migrations.CreateModel(
+ name="ExternalPartner",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=200, verbose_name="name")),
+ ("name_ar", models.CharField(max_length=200, null=True, verbose_name="name")),
+ ("name_en", models.CharField(max_length=200, null=True, verbose_name="name")),
+ ("name_es", models.CharField(max_length=200, null=True, verbose_name="name")),
+ ("name_fr", models.CharField(max_length=200, null=True, verbose_name="name")),
+ ],
+ options={
+ "verbose_name": "external partner",
+ "verbose_name_plural": "external partners",
+ },
+ ),
+ migrations.CreateModel(
+ name="SupportedActivity",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=200, verbose_name="name")),
+ ("name_ar", models.CharField(max_length=200, null=True, verbose_name="name")),
+ ("name_en", models.CharField(max_length=200, null=True, verbose_name="name")),
+ ("name_es", models.CharField(max_length=200, null=True, verbose_name="name")),
+ ("name_fr", models.CharField(max_length=200, null=True, verbose_name="name")),
+ ],
+ options={
+ "verbose_name": "supported activity",
+ "verbose_name_plural": "supported activities",
+ },
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="external_partners",
+ field=models.ManyToManyField(blank=True, to="api.externalpartner", verbose_name="external partners"),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="supported_activities",
+ field=models.ManyToManyField(blank=True, to="api.supportedactivity", verbose_name="supported activities"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="disputed",
+ field=models.BooleanField(default=False, help_text="Is this country disputed?"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="sovereign_state",
+ field=models.ForeignKey(
+ blank=True,
+ default=None,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.country",
+ verbose_name="Country ID of the Sovereign State",
+ ),
+ ),
+ migrations.AddField(
+ model_name="action",
+ name="tooltip_text_ar",
+ field=models.TextField(blank="true", null=True, verbose_name="tooltip text"),
+ ),
+ migrations.AddField(
+ model_name="action",
+ name="tooltip_text_en",
+ field=models.TextField(blank="true", null=True, verbose_name="tooltip text"),
+ ),
+ migrations.AddField(
+ model_name="action",
+ name="tooltip_text_es",
+ field=models.TextField(blank="true", null=True, verbose_name="tooltip text"),
+ ),
+ migrations.AddField(
+ model_name="action",
+ name="tooltip_text_fr",
+ field=models.TextField(blank="true", null=True, verbose_name="tooltip text"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="in_search",
+ field=models.BooleanField(default=True, verbose_name="Include in Search"),
+ ),
+ migrations.CreateModel(
+ name="MainContact",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("extent", models.CharField(max_length=300, verbose_name="extent")),
+ ("extent_en", models.CharField(max_length=300, null=True, verbose_name="extent")),
+ ("extent_es", models.CharField(max_length=300, null=True, verbose_name="extent")),
+ ("extent_fr", models.CharField(max_length=300, null=True, verbose_name="extent")),
+ ("extent_ar", models.CharField(max_length=300, null=True, verbose_name="extent")),
+ ("name", models.CharField(max_length=300, verbose_name="name")),
+ ("email", models.CharField(max_length=300, verbose_name="email")),
+ ],
+ options={
+ "verbose_name": "main contact",
+ "verbose_name_plural": "main contacts",
+ },
+ ),
+ migrations.RemoveField(
+ model_name="district",
+ name="country_name",
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="ns_request_assistance",
+ field=models.BooleanField(verbose_name="NS request assistance"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="request_assistance",
+ field=models.BooleanField(verbose_name="request assistance"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="ns_request_assistance",
+ field=models.BooleanField(default=None, verbose_name="NS request assistance"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="request_assistance",
+ field=models.BooleanField(default=None, verbose_name="request assistance"),
+ ),
+ migrations.CreateModel(
+ name="ERPGUID",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(auto_now_add=True)),
+ (
+ "api_guid",
+ models.CharField(
+ help_text="Can be used to do a GET request to check on the microservice API side.", max_length=200
+ ),
+ ),
+ (
+ "field_report",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, to="api.fieldreport", verbose_name="field report"
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="GECCode",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("code", models.CharField(max_length=3, verbose_name="3 letter GEC code")),
+ (
+ "country",
+ models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="country"),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="AppealFilter",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ ("value", models.CharField(max_length=1000, verbose_name="value")),
+ ],
+ options={
+ "verbose_name": "appeal filter",
+ "verbose_name_plural": "appeal filters",
+ },
+ ),
+ migrations.CreateModel(
+ name="AppealHistory",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("num_beneficiaries", models.IntegerField(default=0, verbose_name="number of beneficiaries")),
+ (
+ "amount_requested",
+ models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name="amount requested"),
+ ),
+ (
+ "amount_funded",
+ models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name="amount funded"),
+ ),
+ ("valid_from", models.DateTimeField(null=True, verbose_name="valid_from")),
+ ("valid_to", models.DateTimeField(null=True, verbose_name="valid_to")),
+ ("aid", models.CharField(max_length=20, verbose_name="appeal ID")),
+ ("start_date", models.DateTimeField(null=True, verbose_name="start date")),
+ ("end_date", models.DateTimeField(null=True, verbose_name="end date")),
+ (
+ "atype",
+ models.IntegerField(
+ choices=[(0, "DREF"), (1, "Emergency Appeal"), (2, "International Appeal"), (3, "Forecast Based Action")],
+ default=0,
+ verbose_name="appeal type",
+ ),
+ ),
+ (
+ "appeal",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.appeal", verbose_name="appeal"
+ ),
+ ),
+ (
+ "country",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.country", verbose_name="country"
+ ),
+ ),
+ (
+ "region",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.region", verbose_name="region"
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "appealhistory",
+ "verbose_name_plural": "appealhistories",
+ "ordering": ("-start_date", "-end_date"),
+ },
+ ),
+ migrations.RunSQL(
+ sql=[
+ "INSERT INTO api_appealhistory(appeal_id,valid_from, valid_to, num_beneficiaries, amount_requested, amount_funded, aid, start_date, end_date,atype, country_id, region_id) select id,'1900-01-01', '2200-01-01', num_beneficiaries, amount_requested, amount_funded, aid, start_date, end_date,atype, country_id, region_id from api_appeal"
+ ],
+ reverse_sql=["DELETE FROM api_appealhistory where valid_to = '2200-01-01'"],
+ ),
+ migrations.AddField(
+ model_name="appealhistory",
+ name="dtype",
+ field=models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.disastertype", verbose_name="disaster type"
+ ),
+ ),
+ migrations.AddField(
+ model_name="appealhistory",
+ name="needs_confirmation",
+ field=models.BooleanField(default=False, verbose_name="needs confirmation?"),
+ ),
+ migrations.AddField(
+ model_name="appealhistory",
+ name="status",
+ field=models.IntegerField(
+ choices=[(0, "Active"), (1, "Closed"), (2, "Frozen"), (3, "Archived")], default=0, verbose_name="status"
+ ),
+ ),
+ migrations.AddField(
+ model_name="appealhistory",
+ name="code",
+ field=models.CharField(max_length=20, null=True, verbose_name="code"),
+ ),
+ migrations.RunSQL(
+ sql=[
+ "UPDATE api_appealhistory SET dtype_id = api_appeal.dtype_id, status = api_appeal.status, needs_confirmation = api_appeal.needs_confirmation, code = api_appeal.code from api_appeal WHERE api_appeal.aid = api_appealhistory.aid"
+ ],
+ reverse_sql=["DELETE FROM api_appealhistory where valid_to = '2200-01-01'"],
+ ),
+ migrations.CreateModel(
+ name="EventLink",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=200, verbose_name="title")),
+ ("title_en", models.CharField(max_length=200, null=True, verbose_name="title")),
+ ("title_es", models.CharField(max_length=200, null=True, verbose_name="title")),
+ ("title_fr", models.CharField(max_length=200, null=True, verbose_name="title")),
+ ("title_ar", models.CharField(max_length=200, null=True, verbose_name="title")),
+ ("description", models.TextField(verbose_name="description")),
+ ("description_en", models.TextField(null=True, verbose_name="description")),
+ ("description_es", models.TextField(null=True, verbose_name="description")),
+ ("description_fr", models.TextField(null=True, verbose_name="description")),
+ ("description_ar", models.TextField(null=True, verbose_name="description")),
+ ("url", models.URLField(verbose_name="url")),
+ (
+ "event",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="links",
+ related_query_name="link",
+ to="api.event",
+ verbose_name="event",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="EventFeaturedDocument",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=200, verbose_name="title")),
+ ("title_en", models.CharField(max_length=200, null=True, verbose_name="title")),
+ ("title_es", models.CharField(max_length=200, null=True, verbose_name="title")),
+ ("title_fr", models.CharField(max_length=200, null=True, verbose_name="title")),
+ ("title_ar", models.CharField(max_length=200, null=True, verbose_name="title")),
+ ("description", models.TextField(verbose_name="description")),
+ ("description_en", models.TextField(null=True, verbose_name="description")),
+ ("description_es", models.TextField(null=True, verbose_name="description")),
+ ("description_fr", models.TextField(null=True, verbose_name="description")),
+ ("description_ar", models.TextField(null=True, verbose_name="description")),
+ (
+ "thumbnail",
+ models.ImageField(
+ help_text="Image should be portrait (3:4 aspect ratio) and scaled down to as close to 96x128 as the image size",
+ upload_to="event-featured-documents/thumbnail/",
+ verbose_name="thumbnail",
+ ),
+ ),
+ ("file", models.FileField(upload_to="event-featured-documents/file/", verbose_name="file")),
+ (
+ "event",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="featured_documents",
+ related_query_name="featured_document",
+ to="api.event",
+ verbose_name="event",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="UserCountry",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "country",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="country"
+ ),
+ ),
+ (
+ "user",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="userName",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="user",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "User Country",
+ "verbose_name_plural": "User Countries",
+ },
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="visibility",
+ field=models.IntegerField(
+ choices=[(1, "RCRC Movement"), (2, "IFRC Secretariat"), (3, "Public"), (4, "IFRC and NS")],
+ default=1,
+ verbose_name="visibility",
+ ),
+ ),
+ migrations.AlterModelOptions(
+ name="keyfigure",
+ options={"ordering": ("id",), "verbose_name": "key figure", "verbose_name_plural": "key figures"},
+ ),
+ migrations.CreateModel(
+ name="UserRegion",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "region",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="api.region", verbose_name="region"
+ ),
+ ),
+ (
+ "user",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="userRegionName",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="user",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "Regional Admin",
+ "verbose_name_plural": "Regional Admins",
+ },
+ ),
+ migrations.AddField(
+ model_name="appeal",
+ name="triggering_amount",
+ field=models.DecimalField(
+ decimal_places=2, default=0.0, editable=False, max_digits=12, verbose_name="triggering amount"
+ ),
+ ),
+ migrations.AddField(
+ model_name="appealhistory",
+ name="triggering_amount",
+ field=models.DecimalField(
+ decimal_places=2, default=0.0, editable=False, max_digits=12, verbose_name="triggering amount"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="appealhistory",
+ name="code",
+ field=models.CharField(max_length=20, null=True, verbose_name="code"),
+ ),
+ migrations.AlterField(
+ model_name="appealhistory",
+ name="code",
+ field=models.CharField(max_length=20, null=True, verbose_name="code"),
+ ),
+ migrations.AlterField(
+ model_name="action",
+ name="organizations",
+ field=django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(
+ choices=[
+ ("NTLS", "National Society"),
+ ("PNS", "Foreign Society"),
+ ("FDRN", "Federation"),
+ ("GOV", "Government"),
+ ],
+ max_length=4,
+ ),
+ blank=True,
+ default=list,
+ size=None,
+ verbose_name="organizations",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="actionstaken",
+ name="organization",
+ field=models.CharField(
+ choices=[("NTLS", "National Society"), ("PNS", "Foreign Society"), ("FDRN", "Federation"), ("GOV", "Government")],
+ max_length=16,
+ verbose_name="organization",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergencies/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug_ar",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergencies/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug_en",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergencies/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug_es",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergencies/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug_fr",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergencies/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergency/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug_ar",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergency/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug_en",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergency/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug_es",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergency/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug_fr",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergency/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.CreateModel(
+ name="GeneralDocument",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(blank=True, verbose_name="created at")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ (
+ "document",
+ models.FileField(blank=True, null=True, upload_to=api.models.general_document_path, verbose_name="document"),
+ ),
+ ("document_url", models.URLField(blank=True, verbose_name="document url")),
+ ("name_ar", models.CharField(max_length=100, null=True, verbose_name="name")),
+ ("name_en", models.CharField(max_length=100, null=True, verbose_name="name")),
+ ("name_es", models.CharField(max_length=100, null=True, verbose_name="name")),
+ ("name_fr", models.CharField(max_length=100, null=True, verbose_name="name")),
+ ],
+ options={
+ "verbose_name": "general document",
+ "verbose_name_plural": "general documents",
+ },
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="name",
+ field=models.CharField(max_length=256, verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="name_ar",
+ field=models.CharField(max_length=256, null=True, verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="name_en",
+ field=models.CharField(max_length=256, null=True, verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="name_es",
+ field=models.CharField(max_length=256, null=True, verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="name_fr",
+ field=models.CharField(max_length=256, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="average_household_size",
+ field=models.DecimalField(
+ blank=True, decimal_places=2, max_digits=5, null=True, verbose_name="Average Household Size"
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="countries_for_preview",
+ field=models.ManyToManyField(
+ blank=True, related_name="countries_for_preview", to="api.country", verbose_name="countries for preview"
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="emergency_response_contact_email",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="emergency response contact email"),
+ ),
+ migrations.CreateModel(
+ name="Admin2",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ ("code", models.CharField(max_length=64, unique=True, verbose_name="code")),
+ ("centroid", django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326)),
+ ("bbox", django.contrib.gis.db.models.fields.PolygonField(blank=True, null=True, srid=4326)),
+ (
+ "admin1",
+ models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to="api.district", verbose_name="Admin 1"),
+ ),
+ ("alternate_name", models.CharField(blank=True, max_length=100, null=True, verbose_name="Alternate Name")),
+ (
+ "alternate_name_code",
+ models.CharField(blank=True, max_length=10, null=True, verbose_name="Alternate Name Language Code"),
+ ),
+ ("local_name", models.CharField(blank=True, max_length=100, null=True, verbose_name="Local Name")),
+ (
+ "local_name_code",
+ models.CharField(blank=True, max_length=10, null=True, verbose_name="Local Name Language Code"),
+ ),
+ ],
+ options={
+ "verbose_name": "admin2",
+ "verbose_name_plural": "admin2s",
+ "ordering": ("code",),
+ },
+ ),
+ migrations.CreateModel(
+ name="CountryOfFieldReportToReview",
+ fields=[
+ (
+ "country",
+ models.OneToOneField(
+ on_delete=django.db.models.deletion.DO_NOTHING,
+ primary_key=True,
+ serialize=False,
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "Country of Field Report to review",
+ "verbose_name_plural": "Countries of Field Report to review",
+ },
+ ),
+ migrations.AlterField(
+ model_name="action",
+ name="organizations",
+ field=django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(
+ choices=[("NTLS", "National Society"), ("PNS", "RCRC"), ("FDRN", "Federation"), ("GOV", "Government")],
+ max_length=4,
+ ),
+ blank=True,
+ default=list,
+ size=None,
+ verbose_name="organizations",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="actionstaken",
+ name="organization",
+ field=models.CharField(
+ choices=[("NTLS", "National Society"), ("PNS", "RCRC"), ("FDRN", "Federation"), ("GOV", "Government")],
+ max_length=16,
+ verbose_name="organization",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="status",
+ field=models.IntegerField(
+ choices=[(0, "Unknown"), (2, "Two"), (3, "Three"), (8, "Early Warning"), (9, "Event-related"), (10, "Ten")],
+ default=0,
+ verbose_name="type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="independent",
+ field=models.BooleanField(default=None, help_text="Is this an independent country?", null=True),
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="nsi_annual_fdrs_reporting",
+ field=models.BooleanField(blank=True, null=True, verbose_name="Annual Reporting to FDRS"),
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="nsi_cmc_dashboard_compliance",
+ field=models.BooleanField(blank=True, null=True, verbose_name="Complying with CMC Dashboard"),
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="nsi_domestically_generated_income",
+ field=models.BooleanField(blank=True, null=True, verbose_name=">50% Domestically Generated Income"),
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="nsi_gov_financial_support",
+ field=models.BooleanField(blank=True, null=True, verbose_name="Gov Financial Support"),
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="nsi_policy_implementation",
+ field=models.BooleanField(blank=True, null=True, verbose_name="Your Policy / Programme Implementation"),
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="nsi_risk_management_framework",
+ field=models.BooleanField(blank=True, null=True, verbose_name="Risk Management Framework"),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergency/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug_ar",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergency/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug_en",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergency/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug_es",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergency/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="event",
+ name="slug_fr",
+ field=models.CharField(
+ blank=True,
+ default=None,
+ help_text="Optional string for a clean URL. For example, go.ifrc.org/emergency/hurricane-katrina-2019. The string cannot start with a number and is forced to be lowercase. Recommend using hyphens over underscores. Special characters like # is not allowed.",
+ max_length=50,
+ null=True,
+ unique=True,
+ validators=[
+ django.core.validators.RegexValidator(
+ re.compile("^[-a-zA-Z0-9_]+\\Z"),
+ "Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
+ "invalid",
+ ),
+ api.utils.validate_slug_number,
+ ],
+ verbose_name="slug",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="epi_figures_source",
+ field=models.IntegerField(
+ blank=True,
+ choices=[(0, "Ministry of health"), (1, "WHO"), (2, "OTHER")],
+ null=True,
+ verbose_name="figures source (epidemic)",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="ns_request_assistance",
+ field=models.BooleanField(blank=True, default=None, null=True, verbose_name="NS request assistance"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="request_assistance",
+ field=models.BooleanField(blank=True, default=None, null=True, verbose_name="request assistance"),
+ ),
+ migrations.AlterField(
+ model_name="profile",
+ name="org_type",
+ field=models.CharField(
+ blank=True,
+ choices=[
+ ("NTLS", "National Society"),
+ ("DLGN", "Delegation"),
+ ("SCRT", "Secretariat"),
+ ("ICRC", "ICRC"),
+ ("OTHR", "Other"),
+ ],
+ default="OTHR",
+ max_length=4,
+ verbose_name="organization type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="health_min_num_assisted",
+ field=models.IntegerField(
+ blank=True, help_text="not used any more", null=True, verbose_name="number of assisted (ministry of health)"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="who_num_assisted",
+ field=models.IntegerField(
+ blank=True, help_text="not used any more", null=True, verbose_name="number of assisted (who)"
+ ),
+ ),
+ migrations.AddField(
+ model_name="appealfilter",
+ name="notes",
+ field=models.TextField(blank=True, null=True, verbose_name="notes"),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="image",
+ field=models.ImageField(blank=True, null=True, upload_to=api.models.snippet_image_path, verbose_name="image"),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="summary_ar",
+ field=tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="summary_en",
+ field=tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="summary_es",
+ field=tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="summary"),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="summary_fr",
+ field=tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="summary"),
+ ),
+ migrations.CreateModel(
+ name="Admin2Geoms",
+ fields=[
+ ("geom", django.contrib.gis.db.models.fields.GeometryField(blank=True, null=True, srid=4326)),
+ (
+ "admin2",
+ models.OneToOneField(
+ on_delete=django.db.models.deletion.DO_NOTHING,
+ primary_key=True,
+ serialize=False,
+ to="api.admin2",
+ verbose_name="admin2",
+ ),
+ ),
+ ],
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="recent_affected",
+ field=models.IntegerField(
+ choices=[
+ (0, "Unknown"),
+ (1, "Red Cross / Red Crescent"),
+ (2, "Government"),
+ (3, "Other"),
+ (4, "Red Cross / Red Crescent, potentially"),
+ (5, "Government, potentially"),
+ (6, "Other, potentially"),
+ ],
+ default=0,
+ verbose_name="recent source of affected people",
+ ),
+ ),
+ migrations.RunSQL(
+ sql=[
+ "update api_fieldreport set recent_affected=6 where other_num_potentially_affected>0",
+ "update api_fieldreport set recent_affected=5 where gov_num_potentially_affected>0",
+ "update api_fieldreport set recent_affected=4 where num_potentially_affected>0",
+ "update api_fieldreport set recent_affected=3 where other_num_affected>0",
+ "update api_fieldreport set recent_affected=2 where gov_num_affected>0",
+ "update api_fieldreport set recent_affected=1 where num_affected>0",
+ ],
+ reverse_sql=["update api_fieldreport set recent_affected=0"],
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="recent_affected",
+ field=models.IntegerField(
+ choices=[
+ (0, "Unknown"),
+ (1, "Red Cross / Red Crescent"),
+ (2, "Government"),
+ (3, "Other"),
+ (4, "Red Cross / Red Crescent, potentially"),
+ (5, "Government, potentially"),
+ (6, "Other, potentially"),
+ ],
+ default=0,
+ help_text='Key/value pairs',
+ verbose_name="recent source of affected people",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="status",
+ field=models.IntegerField(
+ choices=[(0, "Unknown"), (2, "Two"), (3, "Three"), (8, "Early Warning"), (9, "Event-related"), (10, "Ten")],
+ default=0,
+ help_text='Key/value pairs',
+ verbose_name="type",
+ ),
+ ),
+ migrations.AlterModelOptions(
+ name="event",
+ options={
+ "ordering": ("-disaster_start_date", "id"),
+ "verbose_name": "emergency",
+ "verbose_name_plural": "emergencies",
+ },
+ ),
+ migrations.AddField(
+ model_name="admin2",
+ name="created_at",
+ field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now, verbose_name="Created at"),
+ preserve_default=False,
+ ),
+ migrations.AddField(
+ model_name="admin2",
+ name="is_deprecated",
+ field=models.BooleanField(default=False, help_text="Is this a deprecated area?"),
+ ),
+ migrations.CreateModel(
+ name="AppealDocumentType",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ ("public_site_or_fednet", models.BooleanField(default=False, verbose_name="Sourced by FedNet?")),
+ ],
+ options={
+ "verbose_name": "appeal document type",
+ "verbose_name_plural": "appeal document types",
+ "ordering": ("name",),
+ },
+ ),
+ migrations.RunSQL(
+ sql=["update api_country set iso3=null where iso3='';"],
+ reverse_sql=["update api_country set iso3=null where iso3='';"],
+ ),
+ migrations.AddField(
+ model_name="appealdocument",
+ name="description",
+ field=models.CharField(blank=True, max_length=200, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="appealdocument",
+ name="type",
+ field=models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.appealdocumenttype", verbose_name="type"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="iso3",
+ field=models.CharField(
+ blank=True,
+ max_length=3,
+ null=True,
+ unique=True,
+ validators=[django.core.validators.RegexValidator("^[A-Z]*$", "ISO must be uppercase")],
+ verbose_name="ISO3",
+ ),
+ ),
+ migrations.AddField(
+ model_name="appealdocument",
+ name="iso3",
+ field=models.ForeignKey(
+ db_column="iso3",
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.country",
+ to_field="iso3",
+ verbose_name="location",
+ ),
+ ),
+ migrations.RunSQL(
+ sql=["update api_country set iso=null where iso='';"],
+ reverse_sql=["update api_country set iso=null where iso='';"],
+ ),
+ migrations.AlterField(
+ model_name="country",
+ name="iso",
+ field=models.CharField(
+ blank=True,
+ max_length=2,
+ null=True,
+ unique=True,
+ validators=[django.core.validators.RegexValidator("^[A-Z]*$", "ISO must be uppercase")],
+ verbose_name="ISO",
+ ),
+ ),
+ migrations.RemoveField(
+ model_name="appealdocument",
+ name="iso3",
+ ),
+ migrations.AddField(
+ model_name="appealdocument",
+ name="iso",
+ field=models.ForeignKey(
+ db_column="iso",
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.country",
+ to_field="iso",
+ verbose_name="location",
+ ),
+ ),
+ migrations.AddField(
+ model_name="action",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="action",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="actionstaken",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="actionstaken",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="appeal",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="appeal",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="appealdocument",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="appealdocument",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="countrysnippet",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="countrysnippet",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="disastertype",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="disastertype",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="event",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="eventfeatureddocument",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="eventfeatureddocument",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="eventlink",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="eventlink",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="externalpartner",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="externalpartner",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="fieldreport",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="generaldocument",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="generaldocument",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="maincontact",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="maincontact",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="region",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="regionemergencysnippet",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="regionemergencysnippet",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="regionpreparednesssnippet",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="regionpreparednesssnippet",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="regionprofilesnippet",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="regionprofilesnippet",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="regionsnippet",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="regionsnippet",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="situationreport",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="situationreport",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="situationreporttype",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="situationreporttype",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="snippet",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="snippet",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="supportedactivity",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="supportedactivity",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="status",
+ field=models.IntegerField(
+ choices=[
+ (0, "Unknown"),
+ (2, "Two"),
+ (3, "Three"),
+ (8, "Early Warning / Early Action"),
+ (9, "Event-related"),
+ (10, "Event"),
+ ],
+ default=0,
+ help_text='Key/value pairs',
+ verbose_name="type",
+ ),
+ ),
+ migrations.CreateModel(
+ name="Export",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("url", models.URLField(max_length=255, verbose_name="Url")),
+ ("token", models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
+ ("requested_at", models.DateTimeField(blank=True, null=True, verbose_name="Requested At")),
+ ("completed_at", models.DateTimeField(blank=True, null=True, verbose_name="Completed At")),
+ (
+ "status",
+ models.IntegerField(
+ choices=[(0, "Pending"), (1, "Completed"), (2, "Errored")], default=0, verbose_name="Status"
+ ),
+ ),
+ (
+ "pdf_file",
+ models.FileField(blank=True, max_length=255, null=True, upload_to="pdf-export/", verbose_name="Pdf File"),
+ ),
+ ("selector", models.CharField(default=django.utils.timezone.now, max_length=255, verbose_name="Selector")),
+ ],
+ ),
+ migrations.RunPython(
+ code=api.management.commands.triggers_to_db.Command.revert,
+ reverse_code=api.management.commands.triggers_to_db.Command.apply,
+ ),
+ migrations.AlterField(
+ model_name="appeal",
+ name="amount_funded",
+ field=models.FloatField(default=0.0, verbose_name="amount funded"),
+ ),
+ migrations.AlterField(
+ model_name="appeal",
+ name="amount_requested",
+ field=models.FloatField(default=0.0, verbose_name="amount requested"),
+ ),
+ migrations.RunPython(
+ code=api.management.commands.triggers_to_db.Command.apply,
+ reverse_code=api.management.commands.triggers_to_db.Command.revert,
+ ),
+ migrations.AlterField(
+ model_name="export",
+ name="selector",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Selector"),
+ ),
+ migrations.AddField(
+ model_name="export",
+ name="export_id",
+ field=models.IntegerField(default=1, verbose_name="Export Id"),
+ preserve_default=False,
+ ),
+ migrations.AddField(
+ model_name="export",
+ name="requested_by",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="user",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="export",
+ name="url",
+ field=models.URLField(blank=True, max_length=255, null=True, verbose_name="Url"),
+ ),
+ migrations.AlterField(
+ model_name="appealhistory",
+ name="amount_funded",
+ field=models.FloatField(default=0.0, verbose_name="amount funded"),
+ ),
+ migrations.AlterField(
+ model_name="appealhistory",
+ name="amount_requested",
+ field=models.FloatField(default=0.0, verbose_name="amount requested"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="appeal",
+ field=models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ null=True,
+ verbose_name="appeal",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="bulletin",
+ field=models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ null=True,
+ verbose_name="bulletin",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="dref",
+ field=models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")], default=0, null=True, verbose_name="DREF"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="fact",
+ field=models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")], default=0, null=True, verbose_name="fact"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="forecast_based_action",
+ field=models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ null=True,
+ verbose_name="forecast based action",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="ifrc_staff",
+ field=models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ null=True,
+ verbose_name="IFRC staff",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="imminent_dref",
+ field=models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ null=True,
+ verbose_name="imminent dref",
+ ),
+ ),
+ migrations.AddField(
+ model_name="export",
+ name="export_type",
+ field=models.CharField(
+ choices=[
+ ("dref-applications", "Dref Applications"),
+ ("dref-operational-updates", "Dref Operational Updates"),
+ ("dref-final-reports", "Dref Final Reports"),
+ ],
+ max_length=255,
+ verbose_name="Export Type",
+ ),
+ ),
+ migrations.AddField(
+ model_name="source",
+ name="spec_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="spec"),
+ ),
+ migrations.AddField(
+ model_name="source",
+ name="spec_en",
+ field=models.TextField(blank=True, null=True, verbose_name="spec"),
+ ),
+ migrations.AddField(
+ model_name="source",
+ name="spec_es",
+ field=models.TextField(blank=True, null=True, verbose_name="spec"),
+ ),
+ migrations.AddField(
+ model_name="source",
+ name="spec_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="spec"),
+ ),
+ migrations.AddField(
+ model_name="source",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="source",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="status",
+ field=models.IntegerField(
+ choices=[
+ (0, "Unknown"),
+ (2, "Two"),
+ (3, "Three"),
+ (8, "Early Warning / Early Action"),
+ (9, "Event"),
+ (10, "Ten"),
+ ],
+ default=0,
+ help_text='Key/value pairs',
+ verbose_name="type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="gov_affected_pop_centres",
+ field=models.CharField(
+ blank=True, max_length=512, null=True, verbose_name="affected population centres (government)"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="gov_num_affected",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of affected (government)"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="gov_num_assisted",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of assisted (government)"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="gov_num_dead",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of dead (government)"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="gov_num_displaced",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of displaced (government)"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="gov_num_highest_risk",
+ field=models.IntegerField(blank=True, null=True, verbose_name="people at highest risk (government)"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="gov_num_injured",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of injured (government)"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="gov_num_missing",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of missing (government)"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="gov_num_potentially_affected",
+ field=models.IntegerField(blank=True, null=True, verbose_name="potentially affected (government)"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsdataset",
+ name="livelihoods_and_basic_needs_female",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic needs female"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsdataset",
+ name="livelihoods_and_basic_needs_male",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic needs male"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsdataset",
+ name="livelihoods_and_basic_needs_people_reached",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic people reached"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsdataset",
+ name="livelihoods_and_basic_needs_people_targeted",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic people targeted"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsdataset",
+ name="livelihoods_and_basic_needs_requirements",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic needs requirements"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsdataset",
+ name="raw_livelihoods_and_basic_needs_female",
+ field=models.TextField(blank=True, null=True, verbose_name="number of livelihoods and basic needs female (raw)"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsdataset",
+ name="raw_livelihoods_and_basic_needs_male",
+ field=models.TextField(blank=True, null=True, verbose_name="number of livelihoods and basic needs male (raw)"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsdataset",
+ name="raw_livelihoods_and_basic_needs_people_reached",
+ field=models.TextField(
+ blank=True, null=True, verbose_name="number of livelihoods and basic needs people reached (raw)"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsdataset",
+ name="raw_livelihoods_and_basic_needs_people_targeted",
+ field=models.TextField(
+ blank=True, null=True, verbose_name="number of livelihoods and basic needs people targeted (raw)"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsdataset",
+ name="raw_livelihoods_and_basic_needs_requirements",
+ field=models.TextField(
+ blank=True, null=True, verbose_name="number of livelihoods and basic needs requirements (raw)"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsea",
+ name="livelihoods_and_basic_needs_female",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic needs female"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsea",
+ name="livelihoods_and_basic_needs_male",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic needs male"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsea",
+ name="livelihoods_and_basic_needs_people_reached",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic people reached"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsea",
+ name="livelihoods_and_basic_needs_people_targeted",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic people targeted"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsea",
+ name="livelihoods_and_basic_needs_requirements",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic needs requirements"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsea",
+ name="raw_livelihoods_and_basic_needs_female",
+ field=models.TextField(blank=True, null=True, verbose_name="number of livelihoods and basic needs female (raw)"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsea",
+ name="raw_livelihoods_and_basic_needs_male",
+ field=models.TextField(blank=True, null=True, verbose_name="number of livelihoods and basic needs male (raw)"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsea",
+ name="raw_livelihoods_and_basic_needs_people_reached",
+ field=models.TextField(
+ blank=True, null=True, verbose_name="number of livelihoods and basic needs people reached (raw)"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsea",
+ name="raw_livelihoods_and_basic_needs_people_targeted",
+ field=models.TextField(
+ blank=True, null=True, verbose_name="number of livelihoods and basic needs people targeted (raw)"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsea",
+ name="raw_livelihoods_and_basic_needs_requirements",
+ field=models.TextField(
+ blank=True, null=True, verbose_name="number of livelihoods and basic needs requirements (raw)"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsfr",
+ name="livelihoods_and_basic_needs_female",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic needs female"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsfr",
+ name="livelihoods_and_basic_needs_male",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic needs male"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsfr",
+ name="livelihoods_and_basic_needs_people_reached",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic people reached"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsfr",
+ name="livelihoods_and_basic_needs_requirements",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic needs requirements"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsfr",
+ name="raw_livelihoods_and_basic_needs_female",
+ field=models.TextField(blank=True, null=True, verbose_name="number of livelihoods and basic needs female (raw)"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsfr",
+ name="raw_livelihoods_and_basic_needs_male",
+ field=models.TextField(blank=True, null=True, verbose_name="number of livelihoods and basic needs male (raw)"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsfr",
+ name="raw_livelihoods_and_basic_needs_people_reached",
+ field=models.TextField(
+ blank=True, null=True, verbose_name="number of livelihoods and basic needs people reached (raw)"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationsfr",
+ name="raw_livelihoods_and_basic_needs_requirements",
+ field=models.TextField(
+ blank=True, null=True, verbose_name="number of livelihoods and basic needs requirements (raw)"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationspeoplereached",
+ name="livelihoods_and_basic_needs_female",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic needs female"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationspeoplereached",
+ name="livelihoods_and_basic_needs_male",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic needs male"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationspeoplereached",
+ name="livelihoods_and_basic_needs_people_reached",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic people reached"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationspeoplereached",
+ name="livelihoods_and_basic_needs_requirements",
+ field=models.IntegerField(blank=True, null=True, verbose_name="number of livelihoods and basic needs requirements"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationspeoplereached",
+ name="raw_livelihoods_and_basic_needs_female",
+ field=models.TextField(blank=True, null=True, verbose_name="number of livelihoods and basic needs female (raw)"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationspeoplereached",
+ name="raw_livelihoods_and_basic_needs_male",
+ field=models.TextField(blank=True, null=True, verbose_name="number of livelihoods and basic needs male (raw)"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationspeoplereached",
+ name="raw_livelihoods_and_basic_needs_people_reached",
+ field=models.TextField(
+ blank=True, null=True, verbose_name="number of livelihoods and basic needs people reached (raw)"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="emergencyoperationspeoplereached",
+ name="raw_livelihoods_and_basic_needs_requirements",
+ field=models.TextField(
+ blank=True, null=True, verbose_name="number of livelihoods and basic needs requirements (raw)"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="eru_water_sanitation_15",
+ field=models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU water sanitation M15",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="eru_water_sanitation_15_units",
+ field=models.IntegerField(blank=True, null=True, verbose_name="ERU water sanitation M15 units"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="eru_water_sanitation_20",
+ field=models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU water sanitation MSM20",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="eru_water_sanitation_20_units",
+ field=models.IntegerField(blank=True, null=True, verbose_name="ERU water sanitation MSM20 units"),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="eru_water_sanitation_40",
+ field=models.IntegerField(
+ choices=[(0, "No"), (1, "Requested"), (2, "Planned"), (3, "Completed")],
+ default=0,
+ verbose_name="ERU water sanitation M40",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="fieldreport",
+ name="eru_water_sanitation_40_units",
+ field=models.IntegerField(blank=True, null=True, verbose_name="ERU water sanitation M40 units"),
+ ),
+ migrations.AddField(
+ model_name="gdacsevent",
+ name="disaster_type",
+ field=models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.PROTECT, to="api.disastertype", verbose_name="disaster type"
+ ),
+ ),
+ # migrations.RunPython(
+ # code=api.migrations.0188_auto_20231130_0900.Migration.migrate_event_type,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AddField(
+ model_name="country",
+ name="address_1",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Address 1"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="address_2",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Address 2"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="city_code",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="City Code"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="phone",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Phone"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="website",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Website"),
+ ),
+ migrations.CreateModel(
+ name="CountryDirectory",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("first_name", models.CharField(blank=True, max_length=255, null=True, verbose_name="First Name")),
+ ("last_name", models.CharField(blank=True, max_length=255, null=True, verbose_name="Last Name")),
+ ("position", models.CharField(blank=True, max_length=255, null=True, verbose_name="Position")),
+ (
+ "country",
+ models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="Country"),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="NSDInitiatives",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=255, verbose_name="Title")),
+ ("fund_type", models.CharField(max_length=255, verbose_name="Fund Type")),
+ ("allocation", models.IntegerField(verbose_name="Allocation in CHF")),
+ ("year", models.CharField(max_length=20, verbose_name="Year")),
+ ("funding_period", models.IntegerField(verbose_name="Funding Period in Month")),
+ (
+ "categories",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(max_length=255),
+ default=list,
+ null=True,
+ size=None,
+ verbose_name="Funding categories",
+ ),
+ ),
+ (
+ "country",
+ models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="Country"),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="CountryCapacityStrengthening",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("assessment_code", models.CharField(max_length=255, verbose_name="Assessment Code")),
+ ("year", models.CharField(max_length=25, verbose_name="Year of Assessment")),
+ ("submission_date", models.DateTimeField(verbose_name="Submission Date")),
+ ("url", models.CharField(max_length=255, verbose_name="Url")),
+ (
+ "assessment_type",
+ models.IntegerField(choices=[(0, "Ocac"), (1, "Boca")], verbose_name="Country Assessment Type"),
+ ),
+ ("branch_name", models.CharField(blank=True, max_length=255, null=True, verbose_name="Branch Name")),
+ (
+ "country",
+ models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="Country"),
+ ),
+ ],
+ ),
+ migrations.AlterField(
+ model_name="appeal",
+ name="country",
+ field=models.ForeignKey(
+ default=0, on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="country"
+ ),
+ preserve_default=False,
+ ),
+ migrations.AlterField(
+ model_name="appealhistory",
+ name="country",
+ field=models.ForeignKey(
+ default=0, on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="country"
+ ),
+ preserve_default=False,
+ ),
+ migrations.AlterField(
+ model_name="gdacsevent",
+ name="severity",
+ field=models.TextField(blank=True, null=True, verbose_name="severity"),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="founded_date",
+ field=models.DateField(blank=True, null=True, verbose_name="Found date"),
+ ),
+ migrations.CreateModel(
+ name="CountrySupportingPartner",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("first_name", models.CharField(blank=True, max_length=255, null=True, verbose_name="First Name")),
+ ("last_name", models.CharField(blank=True, max_length=255, null=True, verbose_name="Last Name")),
+ ("position", models.CharField(blank=True, max_length=255, null=True, verbose_name="Position")),
+ ("email", models.CharField(blank=True, max_length=255, null=True, verbose_name="Email")),
+ (
+ "country",
+ models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="Country"),
+ ),
+ (
+ "supporting_type",
+ models.IntegerField(
+ blank=True,
+ choices=[(0, "Ifrc"), (1, "International Partners")],
+ null=True,
+ verbose_name="Supporting Type",
+ ),
+ ),
+ ],
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="disaster_law_url",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Disaster law url"),
+ ),
+ migrations.CreateModel(
+ name="CountryOrganizationalCapacity",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("leadership_capacity", models.TextField(blank=True, null=True, verbose_name="Leadership Capacity")),
+ ("youth_capacity", models.TextField(blank=True, null=True, verbose_name="Youth Capacity")),
+ ("volunteer_capacity", models.TextField(blank=True, null=True, verbose_name="Volunteer Capacity")),
+ ("financial_capacity", models.TextField(blank=True, null=True, verbose_name="Financial Capacity")),
+ (
+ "country",
+ models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="Country"),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="CountryICRCPresence",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("icrc_presence", models.BooleanField(blank=True, null=True, verbose_name="ICRC Presence")),
+ ("url", models.CharField(blank=True, max_length=255, null=True, verbose_name="Url")),
+ ("key_operation", models.BooleanField(blank=True, null=True, verbose_name="Key Operations")),
+ ("description", models.TextField(blank=True, null=True, verbose_name="Description")),
+ (
+ "country",
+ models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="Country"),
+ ),
+ ],
+ ),
+ migrations.RemoveField(
+ model_name="event",
+ name="slug_ar",
+ ),
+ migrations.RemoveField(
+ model_name="event",
+ name="slug_en",
+ ),
+ migrations.RemoveField(
+ model_name="event",
+ name="slug_es",
+ ),
+ migrations.RemoveField(
+ model_name="event",
+ name="slug_fr",
+ ),
+ migrations.AlterField(
+ model_name="export",
+ name="export_type",
+ field=models.CharField(
+ choices=[
+ ("dref-applications", "Dref Applications"),
+ ("dref-operational-updates", "Dref Operational Updates"),
+ ("dref-final-reports", "Dref Final Reports"),
+ ("per", "Per"),
+ ],
+ max_length=255,
+ verbose_name="Export Type",
+ ),
+ ),
+ migrations.RemoveField(
+ model_name="export",
+ name="selector",
+ ),
+ migrations.RemoveField(
+ model_name="eventfeatureddocument",
+ name="description_ar",
+ ),
+ migrations.RemoveField(
+ model_name="eventfeatureddocument",
+ name="description_en",
+ ),
+ migrations.RemoveField(
+ model_name="eventfeatureddocument",
+ name="description_es",
+ ),
+ migrations.RemoveField(
+ model_name="eventfeatureddocument",
+ name="description_fr",
+ ),
+ migrations.RemoveField(
+ model_name="eventfeatureddocument",
+ name="title_ar",
+ ),
+ migrations.RemoveField(
+ model_name="eventfeatureddocument",
+ name="title_en",
+ ),
+ migrations.RemoveField(
+ model_name="eventfeatureddocument",
+ name="title_es",
+ ),
+ migrations.RemoveField(
+ model_name="eventfeatureddocument",
+ name="title_fr",
+ ),
+ migrations.RemoveField(
+ model_name="eventfeatureddocument",
+ name="translation_module_original_language",
+ ),
+ migrations.RemoveField(
+ model_name="eventfeatureddocument",
+ name="translation_module_skip_auto_translation",
+ ),
+ migrations.RemoveField(
+ model_name="situationreport",
+ name="name_ar",
+ ),
+ migrations.RemoveField(
+ model_name="situationreport",
+ name="name_en",
+ ),
+ migrations.RemoveField(
+ model_name="situationreport",
+ name="name_es",
+ ),
+ migrations.RemoveField(
+ model_name="situationreport",
+ name="name_fr",
+ ),
+ migrations.RemoveField(
+ model_name="situationreport",
+ name="translation_module_original_language",
+ ),
+ migrations.RemoveField(
+ model_name="situationreport",
+ name="translation_module_skip_auto_translation",
+ ),
+ migrations.AddField(
+ model_name="adminkeyfigure",
+ name="deck_ar",
+ field=models.CharField(max_length=50, null=True, verbose_name="deck"),
+ ),
+ migrations.AddField(
+ model_name="adminkeyfigure",
+ name="deck_en",
+ field=models.CharField(max_length=50, null=True, verbose_name="deck"),
+ ),
+ migrations.AddField(
+ model_name="adminkeyfigure",
+ name="deck_es",
+ field=models.CharField(max_length=50, null=True, verbose_name="deck"),
+ ),
+ migrations.AddField(
+ model_name="adminkeyfigure",
+ name="deck_fr",
+ field=models.CharField(max_length=50, null=True, verbose_name="deck"),
+ ),
+ migrations.AddField(
+ model_name="adminkeyfigure",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="adminkeyfigure",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="keyfigure",
+ name="deck_ar",
+ field=models.CharField(help_text="key figure units", max_length=50, null=True, verbose_name="deck"),
+ ),
+ migrations.AddField(
+ model_name="keyfigure",
+ name="deck_en",
+ field=models.CharField(help_text="key figure units", max_length=50, null=True, verbose_name="deck"),
+ ),
+ migrations.AddField(
+ model_name="keyfigure",
+ name="deck_es",
+ field=models.CharField(help_text="key figure units", max_length=50, null=True, verbose_name="deck"),
+ ),
+ migrations.AddField(
+ model_name="keyfigure",
+ name="deck_fr",
+ field=models.CharField(help_text="key figure units", max_length=50, null=True, verbose_name="deck"),
+ ),
+ migrations.AddField(
+ model_name="keyfigure",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="keyfigure",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="export",
+ name="export_type",
+ field=models.CharField(
+ choices=[
+ ("dref-applications", "Dref Applications"),
+ ("dref-operational-updates", "Dref Operational Updates"),
+ ("dref-final-reports", "Dref Final Reports"),
+ ("per-process", "Per Process"),
+ ],
+ max_length=255,
+ verbose_name="Export Type",
+ ),
+ ),
+ migrations.AddField(
+ model_name="export",
+ name="per_country",
+ field=models.IntegerField(blank=True, null=True, verbose_name="Per Country Id"),
+ ),
+ migrations.AlterField(
+ model_name="export",
+ name="export_type",
+ field=models.CharField(
+ choices=[
+ ("dref-applications", "Dref Applications"),
+ ("dref-operational-updates", "Dref Operational Updates"),
+ ("dref-final-reports", "Dref Final Reports"),
+ ("per", "Per"),
+ ],
+ max_length=255,
+ verbose_name="Export Type",
+ ),
+ ),
+ migrations.AddField(
+ model_name="country",
+ name="emails",
+ field=django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Email"),
+ blank=True,
+ default=list,
+ null=True,
+ size=None,
+ ),
+ ),
+ migrations.CreateModel(
+ name="CountryKeyDocument",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=255, verbose_name="Name")),
+ ("url", models.CharField(max_length=255, verbose_name="Url")),
+ ("thumbnail", models.CharField(max_length=255, verbose_name="Thumbnail")),
+ ("document_type", models.CharField(max_length=255, verbose_name="Document Type")),
+ ("year", models.DateField(verbose_name="Year")),
+ (
+ "country",
+ models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="Country"),
+ ),
+ ("end_year", models.DateField(blank=True, null=True, verbose_name="End Year")),
+ ("year_text", models.CharField(blank=True, max_length=255, null=True, verbose_name="Year Text")),
+ ],
+ ),
+ migrations.AddField(
+ model_name="profile",
+ name="accepted_montandon_license_terms",
+ field=models.BooleanField(default=False, verbose_name="has accepted montandon license terms?"),
+ ),
+ # migrations.RunPython(
+ # code=api.migrations.0211_alter_countrydirectory_unique_together_and_more.delete_ids,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AlterUniqueTogether(
+ name="countrydirectory",
+ unique_together={("country", "first_name", "last_name", "position")},
+ ),
+ migrations.AlterUniqueTogether(
+ name="countrykeydocument",
+ unique_together={("country", "url")},
+ ),
+ migrations.AlterUniqueTogether(
+ name="nsdinitiatives",
+ unique_together={("country", "year", "fund_type")},
+ ),
+ migrations.AddField(
+ model_name="profile",
+ name="limit_access_to_guest",
+ field=models.BooleanField(
+ default=True,
+ help_text="If this value is set to true, the user is treated as a guest user regardless of any other permissions they may have, thereby depriving them of all non-guest user permissions.",
+ verbose_name="limit access to guest user permissions",
+ ),
+ ),
+ # migrations.RunPython(
+ # code=api.migrations.0212_profile_limit_access_to_guest.set_limit_access_to_guest_to_false,
+ # ),
+ # migrations.RunPython(
+ # code=api.migrations.0212_alter_countrycapacitystrengthening_unique_together.delete_ids,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AlterUniqueTogether(
+ name="countrycapacitystrengthening",
+ unique_together={("assessment_type", "assessment_code")},
+ ),
+ ]
diff --git a/databank/migrations/0001_squashed_0026_countryoverview_calculated_world_bank_gdp_year_and_more.py b/databank/migrations/0001_squashed_0026_countryoverview_calculated_world_bank_gdp_year_and_more.py
new file mode 100644
index 000000000..b7cb47540
--- /dev/null
+++ b/databank/migrations/0001_squashed_0026_countryoverview_calculated_world_bank_gdp_year_and_more.py
@@ -0,0 +1,589 @@
+# Generated by Django 4.2.15 on 2024-09-13 15:20
+
+import django.contrib.postgres.fields
+import django.core.validators
+import django.db.models.deletion
+from django.db import migrations, models
+
+import databank.models
+
+
+class Migration(migrations.Migration):
+
+ replaces = [
+ ("databank", "0001_initial"),
+ ("databank", "0002_auto_20200603_0613"),
+ ("databank", "0003_auto_20200618_0904"),
+ ("databank", "0004_externalsource_keydocument_keydocumentgroup"),
+ ("databank", "0005_auto_20200903_0843"),
+ ("databank", "0006_acapsseasonalcalender"),
+ ("databank", "0007_auto_20231221_0608"),
+ ("databank", "0008_countryoverview_branches"),
+ ("databank", "0009_auto_20231226_0516"),
+ ("databank", "0010_auto_20231227_0445"),
+ ("databank", "0011_auto_20231227_0922"),
+ ("databank", "0012_auto_20231228_0623"),
+ ("databank", "0013_auto_20231228_1038"),
+ ("databank", "0014_auto_20231229_0510"),
+ ("databank", "0015_auto_20240111_0813"),
+ ("databank", "0016_fdrsincome"),
+ ("databank", "0017_countryoverview_world_bank_poverty_rate"),
+ ("databank", "0018_countryoverview_unicef_population_under_18"),
+ ("databank", "0019_countryoverview_hdr_gii"),
+ ("databank", "0020_fdrsannualincome"),
+ ("databank", "0021_countrykeyclimate"),
+ ("databank", "0022_alter_fdrsincome_indicator"),
+ ("databank", "0023_auto_20240402_0912"),
+ ("databank", "0024_countryoverview_fdrs_data_fetched_year"),
+ ("databank", "0025_countryoverview_world_bank_gni_capita"),
+ ("databank", "0026_countryoverview_calculated_world_bank_gdp_year_and_more"),
+ ]
+
+ initial = True
+
+ dependencies = [
+ ("api", "0036_auto_20191215_0615"),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name="CountryOverview",
+ fields=[
+ (
+ "country",
+ models.OneToOneField(
+ on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to="api.country"
+ ),
+ ),
+ ("script_modified_at", models.DateTimeField(blank=True, null=True)),
+ ("population", models.IntegerField(blank=True, null=True, verbose_name="population")),
+ ("gdp", models.FloatField(blank=True, null=True, verbose_name="GDP")),
+ ("gnipc", models.IntegerField(blank=True, null=True, verbose_name="GNI/CAPITA")),
+ ("life_expectancy", models.IntegerField(blank=True, null=True, verbose_name="life expectancy")),
+ (
+ "urban_population",
+ models.FloatField(
+ blank=True,
+ null=True,
+ validators=[django.core.validators.MaxValueValidator(100), django.core.validators.MinValueValidator(0)],
+ verbose_name="urban POP (%)",
+ ),
+ ),
+ (
+ "poverty",
+ models.FloatField(
+ blank=True,
+ null=True,
+ validators=[django.core.validators.MaxValueValidator(100), django.core.validators.MinValueValidator(0)],
+ verbose_name="poverty (%)",
+ ),
+ ),
+ (
+ "literacy",
+ models.FloatField(
+ blank=True,
+ null=True,
+ validators=[django.core.validators.MaxValueValidator(100), django.core.validators.MinValueValidator(0)],
+ verbose_name="literacy (%)",
+ ),
+ ),
+ ("income", models.FloatField(blank=True, null=True, verbose_name="income (CHF)")),
+ ("expenditures", models.FloatField(blank=True, null=True, verbose_name="expenditures (CHF)")),
+ ("volunteers", models.IntegerField(blank=True, null=True, verbose_name="volunteers")),
+ ("trained_in_first_aid", models.IntegerField(blank=True, null=True, verbose_name="trained in first aid")),
+ ("avg_temperature", models.FloatField(blank=True, null=True, verbose_name="average temperature")),
+ (
+ "avg_rainfall_precipitation",
+ models.FloatField(blank=True, null=True, verbose_name="average rainfall precipitation"),
+ ),
+ (
+ "rainy_season",
+ models.CharField(
+ blank=True,
+ choices=[("active", "Active"), ("not_active", "Not Active")],
+ max_length=20,
+ null=True,
+ verbose_name="rainy season",
+ ),
+ ),
+ ("fts_data", models.JSONField(default=list, verbose_name="FTS data")),
+ ("start_network_data", models.JSONField(default=list, verbose_name="start network data")),
+ ("past_crises_events", models.JSONField(default=list, verbose_name="past crises data")),
+ ("past_epidemics", models.JSONField(default=list, verbose_name="past epidemics data")),
+ ("inform_indicators", models.JSONField(default=list, verbose_name="inform indicators data")),
+ ("branches", models.IntegerField(blank=True, null=True, verbose_name="Branches")),
+ ("female_staff_age_18_29", models.IntegerField(blank=True, null=True, verbose_name="female staff age 18 to 29")),
+ ("female_staff_age_18_49", models.IntegerField(blank=True, null=True, verbose_name="female staff age 18 to 49")),
+ ("female_staff_age_30_39", models.IntegerField(blank=True, null=True, verbose_name="female staff age 30 to 39")),
+ ("female_staff_age_40_49", models.IntegerField(blank=True, null=True, verbose_name="female staff age 40 to 49")),
+ ("female_staff_age_50_59", models.IntegerField(blank=True, null=True, verbose_name="female staff age 50 to 59")),
+ ("female_staff_age_60_69", models.IntegerField(blank=True, null=True, verbose_name="female staff age 60 to 69")),
+ ("female_staff_age_70_79", models.IntegerField(blank=True, null=True, verbose_name="female staff age 70 to 79")),
+ ("female_staff_age_80", models.IntegerField(blank=True, null=True, verbose_name="female staff age 80")),
+ (
+ "female_volunteer_age_13_17",
+ models.IntegerField(blank=True, null=True, verbose_name="female volunteer age 13 to 17"),
+ ),
+ (
+ "female_volunteer_age_18_29",
+ models.IntegerField(blank=True, null=True, verbose_name="female volunteer age 18 to 29"),
+ ),
+ (
+ "female_volunteer_age_18_49",
+ models.IntegerField(blank=True, null=True, verbose_name="female volunteer age 18 to 49"),
+ ),
+ (
+ "female_volunteer_age_30_39",
+ models.IntegerField(blank=True, null=True, verbose_name="female volunteer age 30 to 39"),
+ ),
+ (
+ "female_volunteer_age_40_49",
+ models.IntegerField(blank=True, null=True, verbose_name="female volunteer age 40 to 49"),
+ ),
+ (
+ "female_volunteer_age_50_59",
+ models.IntegerField(blank=True, null=True, verbose_name="female volunteer age 50 to 59"),
+ ),
+ (
+ "female_volunteer_age_60_69",
+ models.IntegerField(blank=True, null=True, verbose_name="female volunteer age 60 to 69"),
+ ),
+ (
+ "female_volunteer_age_6_12",
+ models.IntegerField(blank=True, null=True, verbose_name="female volunteer age 6 to 12"),
+ ),
+ (
+ "female_volunteer_age_70_79",
+ models.IntegerField(blank=True, null=True, verbose_name="female volunteer age 70 to 79"),
+ ),
+ ("female_volunteer_age_80", models.IntegerField(blank=True, null=True, verbose_name="female volunteer age 80")),
+ ("male_staff_age_18_29", models.IntegerField(blank=True, null=True, verbose_name="male staff age 18 to 29")),
+ ("male_staff_age_18_49", models.IntegerField(blank=True, null=True, verbose_name="male staff age 18 to 49")),
+ ("male_staff_age_30_39", models.IntegerField(blank=True, null=True, verbose_name="male staff age 30 to 39")),
+ ("male_staff_age_40_49", models.IntegerField(blank=True, null=True, verbose_name="male staff age 40 to 49")),
+ ("male_staff_age_50_59", models.IntegerField(blank=True, null=True, verbose_name="male staff age 50 to 59")),
+ ("male_staff_age_60_69", models.IntegerField(blank=True, null=True, verbose_name="male staff age 60 to 69")),
+ ("male_staff_age_70_79", models.IntegerField(blank=True, null=True, verbose_name="male staff age 70 to 79")),
+ ("male_staff_age_80", models.IntegerField(blank=True, null=True, verbose_name="male staff age 80")),
+ (
+ "male_volunteer_age_13_17",
+ models.IntegerField(blank=True, null=True, verbose_name="male volunteer age 13 to 17"),
+ ),
+ (
+ "male_volunteer_age_18_29",
+ models.IntegerField(blank=True, null=True, verbose_name="male volunteer age 18 to 29"),
+ ),
+ (
+ "male_volunteer_age_18_49",
+ models.IntegerField(blank=True, null=True, verbose_name="male volunteer age 18 to 49"),
+ ),
+ (
+ "male_volunteer_age_30_39",
+ models.IntegerField(blank=True, null=True, verbose_name="male volunteer age 30 to 39"),
+ ),
+ (
+ "male_volunteer_age_40_49",
+ models.IntegerField(blank=True, null=True, verbose_name="male volunteer age 40 to 49"),
+ ),
+ (
+ "male_volunteer_age_50_59",
+ models.IntegerField(blank=True, null=True, verbose_name="male volunteer age 50 to 59"),
+ ),
+ (
+ "male_volunteer_age_60_69",
+ models.IntegerField(blank=True, null=True, verbose_name="male volunteer age 60 to 69"),
+ ),
+ (
+ "male_volunteer_age_6_12",
+ models.IntegerField(blank=True, null=True, verbose_name="male volunteer age 6 to 12"),
+ ),
+ (
+ "male_volunteer_age_70_79",
+ models.IntegerField(blank=True, null=True, verbose_name="male volunteer age 70 to 79"),
+ ),
+ ("male_volunteer_age_80", models.IntegerField(blank=True, null=True, verbose_name="male volunteer age 80")),
+ ("female_staff_age_other", models.IntegerField(blank=True, null=True, verbose_name="female staff other")),
+ ("female_staff_total", models.IntegerField(blank=True, null=True, verbose_name="female staff total")),
+ ("female_volunteer_age_other", models.IntegerField(blank=True, null=True, verbose_name="female volunteer other")),
+ ("female_volunteer_total", models.IntegerField(blank=True, null=True, verbose_name="female volunteer total")),
+ ("male_staff_age_other", models.IntegerField(blank=True, null=True, verbose_name="male staff other")),
+ ("male_staff_total", models.IntegerField(blank=True, null=True, verbose_name="male staff total")),
+ ("male_volunteer_age_other", models.IntegerField(blank=True, null=True, verbose_name="male volunteer other")),
+ ("male_volunteer_total", models.IntegerField(blank=True, null=True, verbose_name="male volunteer total")),
+ ("staff_total", models.IntegerField(blank=True, null=True, verbose_name="staff total")),
+ ("volunteer_total", models.IntegerField(blank=True, null=True, verbose_name="volunteer total")),
+ ("staff_age_18_29", models.IntegerField(blank=True, null=True, verbose_name="staff age 18 to 29")),
+ ("volunteer_age_13_17", models.IntegerField(blank=True, null=True, verbose_name="volunteer age 13 to 17")),
+ ("volunteer_age_18_29", models.IntegerField(blank=True, null=True, verbose_name="volunteer age 18 to 29")),
+ ("volunteer_age_6_12", models.IntegerField(blank=True, null=True, verbose_name="volunteer age 6 to 12")),
+ ("world_bank_gdp", models.FloatField(blank=True, null=True, verbose_name="world bank gdp")),
+ (
+ "world_bank_gender_equality_index",
+ models.FloatField(blank=True, null=True, verbose_name="world bank gender equality index"),
+ ),
+ ("world_bank_gni", models.FloatField(blank=True, null=True, verbose_name="world bank gni")),
+ (
+ "world_bank_life_expectancy",
+ models.IntegerField(blank=True, null=True, verbose_name="world bank life expectancy"),
+ ),
+ ("world_bank_literacy_rate", models.FloatField(blank=True, null=True, verbose_name="world bank life expectancy")),
+ ("world_bank_population", models.IntegerField(blank=True, null=True, verbose_name="world bank population")),
+ (
+ "world_bank_population_above_age_65",
+ models.IntegerField(blank=True, null=True, verbose_name="world bank population above age 65"),
+ ),
+ (
+ "world_bank_population_age_14",
+ models.IntegerField(blank=True, null=True, verbose_name="world bank population age 14"),
+ ),
+ (
+ "world_bank_urban_population_percentage",
+ models.FloatField(blank=True, null=True, verbose_name="world bank urban population percentage"),
+ ),
+ ("world_bank_poverty_rate", models.FloatField(blank=True, null=True, verbose_name="world bank poverty rate")),
+ (
+ "unicef_population_under_18",
+ models.IntegerField(blank=True, null=True, verbose_name="Unicef population under 18"),
+ ),
+ ("hdr_gii", models.FloatField(blank=True, null=True, verbose_name="HDR GII")),
+ (
+ "fdrs_data_fetched_year",
+ models.CharField(blank=True, max_length=50, null=True, verbose_name="FDRS Data Fetched Year"),
+ ),
+ ("world_bank_gni_capita", models.IntegerField(blank=True, null=True, verbose_name="world bank GNI Per Capita")),
+ (
+ "calculated_world_bank_gdp_year",
+ models.CharField(blank=True, max_length=50, null=True, verbose_name="calculated world bank gdp year"),
+ ),
+ (
+ "calculated_world_bank_gender_equality_index_year",
+ models.CharField(
+ blank=True, max_length=50, null=True, verbose_name="calculated world bank gender equality index year"
+ ),
+ ),
+ (
+ "calculated_world_bank_gni_capita_year",
+ models.CharField(blank=True, max_length=50, null=True, verbose_name="calculated world bank gni capita year"),
+ ),
+ (
+ "calculated_world_bank_gni_year",
+ models.CharField(blank=True, max_length=50, null=True, verbose_name="calculated world bank gni year"),
+ ),
+ (
+ "calculated_world_bank_life_expectancy_year",
+ models.CharField(
+ blank=True, max_length=50, null=True, verbose_name="calculated world bank life expectancy year"
+ ),
+ ),
+ (
+ "calculated_world_bank_literacy_rate_year",
+ models.CharField(
+ blank=True, max_length=50, null=True, verbose_name="calculated world bank literacy rate year"
+ ),
+ ),
+ (
+ "calculated_world_bank_population_above_age_65_year",
+ models.CharField(
+ blank=True,
+ max_length=50,
+ null=True,
+ verbose_name="calculated world bank population above age 65 date in year",
+ ),
+ ),
+ (
+ "calculated_world_bank_population_age_14_year",
+ models.CharField(
+ blank=True, max_length=50, null=True, verbose_name="calculated world bank population age 14 date in year"
+ ),
+ ),
+ (
+ "calculated_world_bank_population_year",
+ models.CharField(blank=True, max_length=50, null=True, verbose_name="calculated world bank population year"),
+ ),
+ (
+ "calculated_world_bank_poverty_rate_year",
+ models.CharField(
+ blank=True, max_length=50, null=True, verbose_name="calculated world bank poverty rate year"
+ ),
+ ),
+ (
+ "calculated_world_bank_urban_population_percentage_year",
+ models.CharField(
+ blank=True,
+ max_length=50,
+ null=True,
+ verbose_name="calculated world bank urban population percentage year",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "country overview",
+ "verbose_name_plural": "countries overview",
+ },
+ ),
+ migrations.CreateModel(
+ name="KeyClimateEvent",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified at")),
+ (
+ "month",
+ models.PositiveSmallIntegerField(
+ choices=[
+ (1, "January"),
+ (2, "February"),
+ (3, "March"),
+ (4, "April"),
+ (5, "May"),
+ (6, "June"),
+ (7, "July"),
+ (8, "August"),
+ (9, "September"),
+ (10, "October"),
+ (11, "November"),
+ (12, "December"),
+ ],
+ verbose_name="month",
+ ),
+ ),
+ ("avg_max_temperature", models.FloatField(verbose_name="average maximum temperature")),
+ ("avg_min_temperature", models.FloatField(verbose_name="average minimum temperature")),
+ ("avg_rainfall_precipitation", models.FloatField(verbose_name="average rainfall precipitation")),
+ (
+ "overview",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to="databank.countryoverview",
+ verbose_name="country overview",
+ ),
+ ),
+ ],
+ options={
+ "unique_together": {("overview", "month")},
+ "verbose_name": "Key Client Event",
+ "verbose_name_plural": "Key Client Events",
+ },
+ ),
+ migrations.CreateModel(
+ name="SeasonalCalender",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified at")),
+ ("title", models.CharField(max_length=20, verbose_name="title")),
+ ("sector", models.CharField(max_length=20, verbose_name="sector")),
+ ("date_start", models.DateField(verbose_name="date start")),
+ ("date_end", models.DateField(verbose_name="date end")),
+ (
+ "overview",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to="databank.countryoverview",
+ verbose_name="country overview",
+ ),
+ ),
+ ],
+ options={
+ "unique_together": {("overview", "sector", "title")},
+ "verbose_name": "Seasonal Calender Record",
+ "verbose_name_plural": "Seasonal Calender Records",
+ },
+ ),
+ migrations.CreateModel(
+ name="SocialEvent",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("label", models.CharField(max_length=255, verbose_name="label")),
+ ("value", models.CharField(max_length=255, verbose_name="value")),
+ (
+ "overview",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to="databank.countryoverview",
+ verbose_name="country overview",
+ ),
+ ),
+ ],
+ options={
+ "unique_together": {("overview", "label")},
+ "verbose_name": "Social Event",
+ "verbose_name_plural": "Social Events",
+ },
+ ),
+ migrations.CreateModel(
+ name="KeyDocumentGroup",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=20, verbose_name="title")),
+ ],
+ ),
+ migrations.CreateModel(
+ name="ExternalSource",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=20, verbose_name="title")),
+ ("url", models.URLField(max_length=300, verbose_name="url")),
+ (
+ "overview",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to="databank.countryoverview",
+ verbose_name="country overview",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="KeyDocument",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=20, verbose_name="title")),
+ ("date", models.DateField(verbose_name="date")),
+ ("file", models.FileField(upload_to=databank.models.key_document_path, verbose_name="file")),
+ (
+ "group",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, to="databank.keydocumentgroup", verbose_name="group"
+ ),
+ ),
+ (
+ "overview",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to="databank.countryoverview",
+ verbose_name="country overview",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="AcapsSeasonalCalender",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified at")),
+ (
+ "month",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(max_length=100), default=list, size=None, verbose_name="month"
+ ),
+ ),
+ (
+ "event",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(max_length=100), default=list, size=None, verbose_name="event"
+ ),
+ ),
+ (
+ "event_type",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(max_length=100), default=list, size=None, verbose_name="event type"
+ ),
+ ),
+ (
+ "label",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(max_length=100), default=list, size=None, verbose_name="label"
+ ),
+ ),
+ ("source", models.CharField(blank=True, max_length=255, null=True, verbose_name="Source")),
+ ("source_date", models.DateField(blank=True, null=True, verbose_name="Source Date")),
+ (
+ "overview",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to="databank.countryoverview",
+ verbose_name="country overview",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="FDRSAnnualIncome",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("date", models.DateField(verbose_name="date")),
+ ("value", models.FloatField(blank=True, null=True, verbose_name="value")),
+ (
+ "overview",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to="databank.countryoverview",
+ verbose_name="country overview",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="CountryKeyClimate",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("year", models.PositiveIntegerField(verbose_name="year")),
+ (
+ "month",
+ models.PositiveSmallIntegerField(
+ choices=[
+ (1, "January"),
+ (2, "February"),
+ (3, "March"),
+ (4, "April"),
+ (5, "May"),
+ (6, "June"),
+ (7, "July"),
+ (8, "August"),
+ (9, "September"),
+ (10, "October"),
+ (11, "November"),
+ (12, "December"),
+ ],
+ verbose_name="month",
+ ),
+ ),
+ ("min_temp", models.FloatField(verbose_name="min temperature")),
+ ("max_temp", models.FloatField(verbose_name="max temperature")),
+ ("avg_temp", models.FloatField(verbose_name="average temperature")),
+ ("precipitation", models.FloatField(verbose_name="precipitation")),
+ (
+ "overview",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to="databank.countryoverview",
+ verbose_name="country overview",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "Country Climate",
+ "verbose_name_plural": "Country Climate",
+ "unique_together": {("overview", "month", "year")},
+ },
+ ),
+ migrations.CreateModel(
+ name="FDRSIndicator",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=255, verbose_name="Indicator Title")),
+ ("description", models.TextField(blank=True, null=True, verbose_name="Indicator Descritpion")),
+ ],
+ ),
+ migrations.CreateModel(
+ name="FDRSIncome",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("date", models.DateField(verbose_name="date")),
+ (
+ "indicator",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, to="databank.fdrsindicator", verbose_name="FDRS Indicator"
+ ),
+ ),
+ ("value", models.FloatField(blank=True, null=True, verbose_name="value")),
+ (
+ "overview",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to="databank.countryoverview",
+ verbose_name="country overview",
+ ),
+ ),
+ ],
+ ),
+ ]
diff --git a/deployments/migrations/0001_squashed_0035_personnel_molnix_tags.py b/deployments/migrations/0001_squashed_0035_personnel_molnix_tags.py
new file mode 100644
index 000000000..8947dcec3
--- /dev/null
+++ b/deployments/migrations/0001_squashed_0035_personnel_molnix_tags.py
@@ -0,0 +1,1369 @@
+# Generated by Django 4.2.15 on 2024-09-13 15:33
+
+import django.contrib.postgres.fields
+import django.db.models.deletion
+from django.conf import settings
+from django.db import migrations, models
+
+# Functions from the following migrations need manual copying.
+# Move them and any dependencies into this file, then update the
+# RunPython operations to refer to the local versions:
+# deployments.migrations.0024_migrate_project_districts_to_new_field_20200513_1126
+# deployments.migrations.0026_sector_health_merge
+# deployments.migrations.0030_actual_expenditure_complete_project
+
+
+class Migration(migrations.Migration):
+
+ replaces = [
+ ("deployments", "0001_initial"),
+ ("deployments", "0002_auto_20180614_2206"),
+ ("deployments", "0003_auto_20180620_0950"),
+ ("deployments", "0004_auto_20180621_1519"),
+ ("deployments", "0005_auto_20180726_2025"),
+ ("deployments", "0006_auto_20180817_1554"),
+ ("deployments", "0007_auto_20190413_1421"),
+ ("deployments", "0008_project"),
+ ("deployments", "0009_auto_20190708_1626"),
+ ("deployments", "0010_auto_20190711_0822"),
+ ("deployments", "0011_erureadiness"),
+ ("deployments", "0012_auto_20190722_1408"),
+ ("deployments", "0013_auto_20190722_1410"),
+ ("deployments", "0014_auto_20191024_0646"),
+ ("deployments", "0015_auto_20191128_0640"),
+ ("deployments", "0016_auto_20200107_0855"),
+ ("deployments", "0017_auto_20200122_1434"),
+ ("deployments", "0018_auto_20200319_0431"),
+ ("deployments", "0019_auto_20200319_0806"),
+ ("deployments", "0020_project_is_private"),
+ ("deployments", "0021_projectimport"),
+ ("deployments", "0022_auto_20200409_1214"),
+ ("deployments", "0023_project_multiple_districts_20200513_1125"),
+ ("deployments", "0024_migrate_project_districts_to_new_field_20200513_1126"),
+ ("deployments", "0025_remove_project_district_20200513_1130"),
+ ("deployments", "0026_sector_health_merge"),
+ ("deployments", "0027_auto_20200528_0840"),
+ ("deployments", "0028_auto_20200618_0904"),
+ ("deployments", "0029_auto_20200625_1019"),
+ ("deployments", "0030_actual_expenditure_complete_project"),
+ ("deployments", "0031_auto_20200701_0939"),
+ ("deployments", "0032_auto_20200729_0934"),
+ ("deployments", "0033_molnixtag"),
+ ("deployments", "0034_auto_20201111_1056"),
+ ("deployments", "0035_personnel_molnix_tags"),
+ ]
+
+ initial = True
+
+ dependencies = [
+ ("api", "0020_auto_20190703_0614"),
+ ("api", "0006_fieldreport_report_date"),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ("api", "0001_initial"),
+ ("api", "0064_auto_20200504_1438"),
+ ("api", "0005_auto_20180614_2206"),
+ ("api", "0042_auto_20200128_1045"),
+ ("api", "0009_auto_20180712_1922"),
+ ("api", "0019_auto_20190626_1420"),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name="DeployedPerson",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("start_date", models.DateTimeField(null=True)),
+ ("end_date", models.DateTimeField(null=True)),
+ ("name", models.CharField(blank=True, max_length=100, null=True)),
+ ("role", models.CharField(blank=True, max_length=32, null=True)),
+ ],
+ ),
+ migrations.CreateModel(
+ name="ERUOwner",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(auto_now_add=True)),
+ ("updated_at", models.DateTimeField(auto_now=True)),
+ (
+ "national_society_country",
+ models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.country"),
+ ),
+ ],
+ options={
+ "verbose_name": "ERUs from a National Society",
+ "verbose_name_plural": "ERUs",
+ },
+ ),
+ migrations.CreateModel(
+ name="Fact",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("start_date", models.DateTimeField(null=True)),
+ ("comments", models.TextField(blank=True, null=True)),
+ ("country", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.country")),
+ (
+ "dtype",
+ models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.disastertype"),
+ ),
+ ("event", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.event")),
+ ("region", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.region")),
+ ],
+ options={
+ "verbose_name": "FACT",
+ "verbose_name_plural": "FACTs",
+ },
+ ),
+ migrations.CreateModel(
+ name="Heop",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("start_date", models.DateTimeField(null=True)),
+ ("end_date", models.DateTimeField(null=True)),
+ ("person", models.CharField(blank=True, max_length=100, null=True)),
+ ("role", models.CharField(blank=True, default="HeOps", max_length=32, null=True)),
+ ("comments", models.TextField(blank=True, null=True)),
+ ("country", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.country")),
+ (
+ "dtype",
+ models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.disastertype"),
+ ),
+ ("event", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.event")),
+ ("region", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.region")),
+ ],
+ options={
+ "verbose_name": "HeOp",
+ "verbose_name_plural": "HeOps",
+ },
+ ),
+ migrations.CreateModel(
+ name="Rdrt",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("start_date", models.DateTimeField(null=True)),
+ ("comments", models.TextField(blank=True, null=True)),
+ ("country", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.country")),
+ (
+ "dtype",
+ models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.disastertype"),
+ ),
+ ("event", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.event")),
+ ("region", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.region")),
+ ],
+ options={
+ "verbose_name": "RDRT/RIT",
+ "verbose_name_plural": "RDRTs/RITs",
+ },
+ ),
+ migrations.CreateModel(
+ name="FactPerson",
+ fields=[
+ (
+ "deployedperson_ptr",
+ models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True,
+ primary_key=True,
+ serialize=False,
+ to="deployments.deployedperson",
+ ),
+ ),
+ ("fact", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="deployments.fact")),
+ ("society_deployed_from", models.CharField(blank=True, max_length=100, null=True)),
+ ],
+ options={
+ "verbose_name": "FACT Person",
+ "verbose_name_plural": "FACT People",
+ },
+ bases=("deployments.deployedperson",),
+ ),
+ migrations.CreateModel(
+ name="RdrtPerson",
+ fields=[
+ (
+ "deployedperson_ptr",
+ models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True,
+ primary_key=True,
+ serialize=False,
+ to="deployments.deployedperson",
+ ),
+ ),
+ ("rdrt", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="deployments.rdrt")),
+ ("society_deployed_from", models.CharField(blank=True, max_length=100, null=True)),
+ ],
+ options={
+ "verbose_name": "RDRT/RIT Person",
+ "verbose_name_plural": "RDRT/RIT People",
+ },
+ bases=("deployments.deployedperson",),
+ ),
+ migrations.CreateModel(
+ name="PartnerSocietyActivities",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("activity", models.CharField(max_length=50)),
+ ],
+ options={
+ "verbose_name": "Partner society activity",
+ "verbose_name_plural": "Partner society activities",
+ },
+ ),
+ migrations.CreateModel(
+ name="PartnerSocietyDeployment",
+ fields=[
+ (
+ "deployedperson_ptr",
+ models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True,
+ primary_key=True,
+ serialize=False,
+ to="deployments.deployedperson",
+ ),
+ ),
+ (
+ "country_deployed_to",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="country_partner_deployments",
+ to="api.country",
+ ),
+ ),
+ (
+ "parent_society",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="partner_society_members",
+ to="api.country",
+ ),
+ ),
+ (
+ "activity",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="partner_societies",
+ to="deployments.partnersocietyactivities",
+ ),
+ ),
+ ("district_deployed_to", models.ManyToManyField(to="api.district")),
+ ],
+ bases=("deployments.deployedperson",),
+ ),
+ migrations.CreateModel(
+ name="PersonnelDeployment",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("comments", models.TextField(blank=True, null=True)),
+ ("country_deployed_to", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.country")),
+ (
+ "event_deployed_to",
+ models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.event"),
+ ),
+ ("region_deployed_to", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.region")),
+ ("alert_date", models.DateTimeField(help_text="Still not used in frontend", null=True)),
+ (
+ "appeal_deployed_to",
+ models.ForeignKey(
+ blank=True,
+ help_text="Still not used in frontend",
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.appeal",
+ ),
+ ),
+ ("end_date", models.DateTimeField(help_text="Still not used in frontend", null=True)),
+ ("end_duration", models.CharField(blank=True, help_text="Still not used in frontend", max_length=100, null=True)),
+ ("exp_start_date", models.DateTimeField(help_text="Still not used in frontend", null=True)),
+ ("start_date", models.DateTimeField(help_text="Still not used in frontend", null=True)),
+ ("created_at", models.DateTimeField(auto_now_add=True)),
+ ("previous_update", models.DateTimeField(blank=True, null=True)),
+ ("updated_at", models.DateTimeField(auto_now=True)),
+ ],
+ options={
+ "verbose_name_plural": "Personnel Deployments",
+ },
+ ),
+ migrations.CreateModel(
+ name="ERU",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "type",
+ models.IntegerField(
+ choices=[
+ (0, "Basecamp"),
+ (1, "IT & Telecom"),
+ (2, "Logistics"),
+ (3, "RCRC Emergency Hospital"),
+ (4, "RCRC Emergency Clinic"),
+ (5, "Relief"),
+ (6, "Wash M15"),
+ (7, "Wash MSM20"),
+ (8, "Wash M40"),
+ (9, "Water Supply and rehabilitation"),
+ (10, "Household Water Treatment and safe storage"),
+ (11, "Cholera Case management at Community level"),
+ (12, "Safe and Dignified Burials"),
+ (13, "Community Based Surveillance"),
+ (14, "Base Camp – S"),
+ (15, "Base Camp – M"),
+ (16, "Base Camp – L"),
+ (17, "Outpatient Department (OPD) Module"),
+ (18, "MHPSS"),
+ ],
+ default=0,
+ ),
+ ),
+ ("units", models.IntegerField(default=0)),
+ ("equipment_units", models.IntegerField(default=0)),
+ ("available", models.BooleanField(default=False)),
+ (
+ "deployed_to",
+ models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.country"),
+ ),
+ ("eru_owner", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="deployments.eruowner")),
+ ("event", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.event")),
+ ("alert_date", models.DateTimeField(help_text="Still not used in frontend", null=True)),
+ (
+ "appeal",
+ models.ForeignKey(
+ blank=True,
+ help_text="Still not used in frontend",
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.appeal",
+ ),
+ ),
+ ("end_date", models.DateTimeField(help_text="Still not used in frontend", null=True)),
+ ("num_people_deployed", models.IntegerField(default=0, help_text="Still not used in frontend")),
+ ("start_date", models.DateTimeField(help_text="Still not used in frontend", null=True)),
+ (
+ "supporting_societies",
+ models.CharField(blank=True, help_text="Still not used in frontend", max_length=500, null=True),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="ERUReadiness",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "ERU_type",
+ models.IntegerField(
+ choices=[
+ (0, "Basecamp"),
+ (1, "IT & Telecom"),
+ (2, "Logistics"),
+ (3, "RCRC Emergency Hospital"),
+ (4, "RCRC Emergency Clinic"),
+ (5, "Relief"),
+ (6, "Wash M15"),
+ (7, "Wash MSM20"),
+ (8, "Wash M40"),
+ (9, "Water Supply and rehabilitation"),
+ (10, "Household Water Treatment and safe storage"),
+ (11, "Cholera Case management at Community level"),
+ (12, "Safe and Dignified Burials"),
+ (13, "Community Based Surveillance"),
+ (14, "Base Camp – S"),
+ (15, "Base Camp – M"),
+ (16, "Base Camp – L"),
+ (17, "Outpatient Department (OPD) Module"),
+ (18, "MHPSS"),
+ ],
+ default=0,
+ ),
+ ),
+ ("is_personnel", models.BooleanField(default=False)),
+ ("is_equipment", models.BooleanField(default=False)),
+ ("updated_at", models.DateTimeField(auto_now=True)),
+ (
+ "national_society",
+ models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.country"),
+ ),
+ ],
+ options={
+ "verbose_name": "ERU Readiness",
+ "verbose_name_plural": "NS-es ERU Readiness",
+ "ordering": ("updated_at", "national_society"),
+ },
+ ),
+ migrations.CreateModel(
+ name="RegionalProject",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=100)),
+ ("created_at", models.DateTimeField(auto_now_add=True)),
+ ("modified_at", models.DateTimeField(auto_now=True)),
+ ],
+ ),
+ migrations.CreateModel(
+ name="Personnel",
+ fields=[
+ (
+ "deployedperson_ptr",
+ models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True,
+ primary_key=True,
+ serialize=False,
+ to="deployments.deployedperson",
+ ),
+ ),
+ (
+ "type",
+ models.CharField(
+ choices=[
+ ("fact", "FACT"),
+ ("heop", "HEOP"),
+ ("rdrt", "RDRT"),
+ ("ifrc", "IFRC"),
+ ("eru", "ERU HR"),
+ ("rr", "Rapid Response"),
+ ],
+ max_length=4,
+ ),
+ ),
+ (
+ "country_from",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="personnel_deployments",
+ to="api.country",
+ ),
+ ),
+ (
+ "deployment",
+ models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="deployments.personneldeployment"),
+ ),
+ ],
+ options={
+ "verbose_name_plural": "Personnel",
+ },
+ bases=("deployments.deployedperson",),
+ ),
+ migrations.CreateModel(
+ name="Project",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.TextField()),
+ (
+ "programme_type",
+ models.IntegerField(choices=[(0, "Bilateral"), (1, "Multilateral"), (2, "Domestic")], default=0),
+ ),
+ ("primary_sector", models.IntegerField(default=0)),
+ ("start_date", models.DateField()),
+ ("end_date", models.DateField()),
+ ("budget_amount", models.IntegerField(default=0)),
+ ("status", models.IntegerField(choices=[(0, "Planned"), (1, "Ongoing"), (2, "Completed")], default=0)),
+ (
+ "project_district",
+ models.ForeignKey(
+ blank=True,
+ help_text="No selection will indicate all districts.",
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="projects",
+ to="api.district",
+ ),
+ ),
+ (
+ "reporting_ns",
+ models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="ns_projects", to="api.country"),
+ ),
+ (
+ "user",
+ models.ForeignKey(
+ blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL
+ ),
+ ),
+ ("operation_type", models.IntegerField(choices=[(0, "Programme"), (1, "Emergency Operation")], default=0)),
+ (
+ "secondary_sectors",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.IntegerField(default=0), blank=True, default=list, size=None
+ ),
+ ),
+ ("modified_at", models.DateTimeField(auto_now=True)),
+ (
+ "regional_project",
+ models.ForeignKey(
+ blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="deployments.regionalproject"
+ ),
+ ),
+ (
+ "dtype",
+ models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.disastertype"),
+ ),
+ ("event", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.event")),
+ ("reached_other", models.IntegerField(blank=True, null=True)),
+ ("reached_female", models.IntegerField(blank=True, null=True)),
+ ("reached_male", models.IntegerField(blank=True, null=True)),
+ ("reached_total", models.IntegerField(blank=True, null=True)),
+ ("target_other", models.IntegerField(blank=True, null=True)),
+ ("target_female", models.IntegerField(blank=True, null=True)),
+ ("target_male", models.IntegerField(blank=True, null=True)),
+ ("target_total", models.IntegerField(blank=True, null=True)),
+ (
+ "project_country",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.CASCADE, related_name="projects", to="api.country"
+ ),
+ ),
+ (
+ "visibility",
+ models.CharField(
+ choices=[("public", "Public"), ("logged_in_user", "Logged in user"), ("ifrc_only", "IFRC only")],
+ default="public",
+ max_length=32,
+ ),
+ ),
+ (
+ "project_districts",
+ models.ManyToManyField(
+ blank=True,
+ help_text="No selection will indicate all districts.",
+ related_name="many_to_many_projects",
+ to="api.district",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="ProjectImport",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(auto_now_add=True)),
+ ("message", models.TextField()),
+ (
+ "status",
+ models.CharField(
+ choices=[("pending", "Pending"), ("success", "Success"), ("failure", "Failure")],
+ default="pending",
+ max_length=10,
+ ),
+ ),
+ ("file", models.FileField(upload_to="project-imports/")),
+ (
+ "created_by",
+ models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL),
+ ),
+ ("projects_created", models.ManyToManyField(to="deployments.project")),
+ ],
+ ),
+ # migrations.RunPython(
+ # code=deployments.migrations.0024_migrate_project_districts_to_new_field_20200513_1126.make_many_districts,
+ # ),
+ migrations.RemoveField(
+ model_name="project",
+ name="project_district",
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="project_districts",
+ field=models.ManyToManyField(blank=True, help_text="No selection will indicate all districts.", to="api.district"),
+ ),
+ # migrations.RunPython(
+ # code=deployments.migrations.0026_sector_health_merge.merge_sector_health,
+ # ),
+ migrations.AlterField(
+ model_name="project",
+ name="project_districts",
+ field=models.ManyToManyField(to="api.district"),
+ ),
+ migrations.AlterModelOptions(
+ name="deployedperson",
+ options={"verbose_name": "Deployed Person", "verbose_name_plural": "Deployed Persons"},
+ ),
+ migrations.AlterModelOptions(
+ name="eru",
+ options={"verbose_name": "Emergency Response Unit", "verbose_name_plural": "Emergency Response Units"},
+ ),
+ migrations.AlterModelOptions(
+ name="partnersocietydeployment",
+ options={"verbose_name": "Partner Society Deployment", "verbose_name_plural": "Partner Society Deployments"},
+ ),
+ migrations.AlterModelOptions(
+ name="personnel",
+ options={"verbose_name": "Personnel", "verbose_name_plural": "Personnels"},
+ ),
+ migrations.AlterModelOptions(
+ name="personneldeployment",
+ options={"verbose_name": "Personnel Deployment", "verbose_name_plural": "Personnel Deployments"},
+ ),
+ migrations.AlterModelOptions(
+ name="project",
+ options={"verbose_name": "Project", "verbose_name_plural": "Projects"},
+ ),
+ migrations.AlterModelOptions(
+ name="projectimport",
+ options={"verbose_name": "Project Import", "verbose_name_plural": "Projects Import"},
+ ),
+ migrations.AlterModelOptions(
+ name="regionalproject",
+ options={"verbose_name": "Regional Project", "verbose_name_plural": "Regional Projects"},
+ ),
+ migrations.AlterField(
+ model_name="deployedperson",
+ name="end_date",
+ field=models.DateTimeField(null=True, verbose_name="end date"),
+ ),
+ migrations.AlterField(
+ model_name="deployedperson",
+ name="name",
+ field=models.CharField(blank=True, max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="deployedperson",
+ name="role",
+ field=models.CharField(blank=True, max_length=32, null=True, verbose_name="role"),
+ ),
+ migrations.AlterField(
+ model_name="deployedperson",
+ name="start_date",
+ field=models.DateTimeField(null=True, verbose_name="start date"),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="alert_date",
+ field=models.DateTimeField(help_text="still not used in frontend", null=True, verbose_name="alert date"),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="appeal",
+ field=models.ForeignKey(
+ blank=True,
+ help_text="still not used in frontend",
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.appeal",
+ verbose_name="appeal",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="available",
+ field=models.BooleanField(default=False, verbose_name="available"),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="deployed_to",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.country",
+ verbose_name="country deployed to",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="end_date",
+ field=models.DateTimeField(help_text="still not used in frontend", null=True, verbose_name="end date"),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="equipment_units",
+ field=models.IntegerField(default=0, verbose_name="equipment units"),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="eru_owner",
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="deployments.eruowner", verbose_name="owner"),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="event",
+ field=models.ForeignKey(
+ blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.event", verbose_name="event"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="num_people_deployed",
+ field=models.IntegerField(
+ default=0, help_text="still not used in frontend", verbose_name="number of people deployed"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="start_date",
+ field=models.DateTimeField(help_text="still not used in frontend", null=True, verbose_name="start date"),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="supporting_societies",
+ field=models.CharField(
+ blank=True, help_text="still not used in frontend", max_length=500, null=True, verbose_name="suuporting societies"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="type",
+ field=models.IntegerField(
+ choices=[
+ (0, "Basecamp"),
+ (1, "IT & Telecom"),
+ (2, "Logistics"),
+ (3, "RCRC Emergency Hospital"),
+ (4, "RCRC Emergency Clinic"),
+ (5, "Relief"),
+ (6, "Wash M15"),
+ (7, "Wash MSM20"),
+ (8, "Wash M40"),
+ (9, "Water Supply and rehabilitation"),
+ (10, "Household Water Treatment and safe storage"),
+ (11, "Cholera Case management at Community level"),
+ (12, "Safe and Dignified Burials"),
+ (13, "Community Based Surveillance"),
+ (14, "Base Camp – S"),
+ (15, "Base Camp – M"),
+ (16, "Base Camp – L"),
+ (17, "Outpatient Department (OPD) Module"),
+ (18, "MHPSS"),
+ ],
+ default=0,
+ verbose_name="type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="units",
+ field=models.IntegerField(default=0, verbose_name="units"),
+ ),
+ migrations.AlterField(
+ model_name="eruowner",
+ name="created_at",
+ field=models.DateTimeField(auto_now_add=True, verbose_name="created at"),
+ ),
+ migrations.AlterField(
+ model_name="eruowner",
+ name="national_society_country",
+ field=models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.country", verbose_name="national society country"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="eruowner",
+ name="updated_at",
+ field=models.DateTimeField(auto_now=True, verbose_name="updated at"),
+ ),
+ migrations.AlterField(
+ model_name="erureadiness",
+ name="ERU_type",
+ field=models.IntegerField(
+ choices=[
+ (0, "Basecamp"),
+ (1, "IT & Telecom"),
+ (2, "Logistics"),
+ (3, "RCRC Emergency Hospital"),
+ (4, "RCRC Emergency Clinic"),
+ (5, "Relief"),
+ (6, "Wash M15"),
+ (7, "Wash MSM20"),
+ (8, "Wash M40"),
+ (9, "Water Supply and rehabilitation"),
+ (10, "Household Water Treatment and safe storage"),
+ (11, "Cholera Case management at Community level"),
+ (12, "Safe and Dignified Burials"),
+ (13, "Community Based Surveillance"),
+ (14, "Base Camp – S"),
+ (15, "Base Camp – M"),
+ (16, "Base Camp – L"),
+ (17, "Outpatient Department (OPD) Module"),
+ (18, "MHPSS"),
+ ],
+ default=0,
+ verbose_name="ERU type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="erureadiness",
+ name="is_equipment",
+ field=models.BooleanField(default=False, verbose_name="is equipment?"),
+ ),
+ migrations.AlterField(
+ model_name="erureadiness",
+ name="is_personnel",
+ field=models.BooleanField(default=False, verbose_name="is personnel?"),
+ ),
+ migrations.AlterField(
+ model_name="erureadiness",
+ name="national_society",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.country",
+ verbose_name="national society",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="erureadiness",
+ name="updated_at",
+ field=models.DateTimeField(auto_now=True, verbose_name="updated at"),
+ ),
+ migrations.AlterField(
+ model_name="partnersocietyactivities",
+ name="activity",
+ field=models.CharField(max_length=50, verbose_name="activity"),
+ ),
+ migrations.AlterField(
+ model_name="partnersocietydeployment",
+ name="activity",
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="partner_societies",
+ to="deployments.partnersocietyactivities",
+ verbose_name="activity",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="partnersocietydeployment",
+ name="country_deployed_to",
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="country_partner_deployments",
+ to="api.country",
+ verbose_name="country deployed to",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="partnersocietydeployment",
+ name="district_deployed_to",
+ field=models.ManyToManyField(to="api.district", verbose_name="district deployed to"),
+ ),
+ migrations.AlterField(
+ model_name="partnersocietydeployment",
+ name="parent_society",
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="partner_society_members",
+ to="api.country",
+ verbose_name="parent society",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="personnel",
+ name="country_from",
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="personnel_deployments",
+ to="api.country",
+ verbose_name="country from",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="personnel",
+ name="deployment",
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, to="deployments.personneldeployment", verbose_name="deployment"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="personnel",
+ name="type",
+ field=models.CharField(
+ choices=[
+ ("fact", "Fact"),
+ ("heop", "HEOP"),
+ ("rdrt", "RDRT"),
+ ("ifrc", "IFRC"),
+ ("eru", "ERU HR"),
+ ("rr", "Rapid Response"),
+ ],
+ max_length=4,
+ verbose_name="type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="alert_date",
+ field=models.DateTimeField(help_text="still not used in frontend", null=True, verbose_name="alert date"),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="appeal_deployed_to",
+ field=models.ForeignKey(
+ blank=True,
+ help_text="still not used in frontend",
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.appeal",
+ verbose_name="appeal deployed to",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="comments",
+ field=models.TextField(blank=True, null=True, verbose_name="comments"),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="country_deployed_to",
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="country deployed to"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="created_at",
+ field=models.DateTimeField(auto_now_add=True, verbose_name="created at"),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="end_date",
+ field=models.DateTimeField(help_text="still not used in frontend", null=True, verbose_name="end date"),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="end_duration",
+ field=models.CharField(
+ blank=True, help_text="still not used in frontend", max_length=100, null=True, verbose_name="end duration"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="event_deployed_to",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.event",
+ verbose_name="event deployed to",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="exp_start_date",
+ field=models.DateTimeField(help_text="still not used in frontend", null=True, verbose_name="expire start date"),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="previous_update",
+ field=models.DateTimeField(blank=True, null=True, verbose_name="previous update"),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="region_deployed_to",
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, to="api.region", verbose_name="region deployed to"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="start_date",
+ field=models.DateTimeField(help_text="still not used in frontend", null=True, verbose_name="start date"),
+ ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="updated_at",
+ field=models.DateTimeField(auto_now=True, verbose_name="updated at"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="budget_amount",
+ field=models.IntegerField(verbose_name="budget amount"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="dtype",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.disastertype",
+ verbose_name="disaster type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="end_date",
+ field=models.DateField(verbose_name="end date"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="event",
+ field=models.ForeignKey(
+ blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.event", verbose_name="event"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="modified_at",
+ field=models.DateTimeField(auto_now=True, verbose_name="modified at"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="name",
+ field=models.TextField(verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="operation_type",
+ field=models.IntegerField(
+ choices=[(0, "Programme"), (1, "Emergency Operation")], default=0, verbose_name="operation type"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="primary_sector",
+ field=models.IntegerField(default=0, verbose_name="sector"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="programme_type",
+ field=models.IntegerField(
+ choices=[(0, "Bilateral"), (1, "Multilateral"), (2, "Domestic")], default=0, verbose_name="programme type"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="project_country",
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="projects",
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="project_districts",
+ field=models.ManyToManyField(to="api.district", verbose_name="districts"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="reached_female",
+ field=models.IntegerField(blank=True, null=True, verbose_name="reached female"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="reached_male",
+ field=models.IntegerField(blank=True, null=True, verbose_name="reached male"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="reached_other",
+ field=models.IntegerField(blank=True, null=True, verbose_name="reached other"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="reached_total",
+ field=models.IntegerField(blank=True, null=True, verbose_name="reached total"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="regional_project",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="deployments.regionalproject",
+ verbose_name="regional project",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="reporting_ns",
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="ns_projects",
+ to="api.country",
+ verbose_name="reporting national society",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="secondary_sectors",
+ field=django.contrib.postgres.fields.ArrayField(
+ base_field=models.IntegerField(default=0), blank=True, default=list, size=None, verbose_name="tags"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="start_date",
+ field=models.DateField(verbose_name="start date"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="status",
+ field=models.IntegerField(
+ choices=[(0, "Planned"), (1, "Ongoing"), (2, "Completed")], default=0, verbose_name="status"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="target_female",
+ field=models.IntegerField(blank=True, null=True, verbose_name="target female"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="target_male",
+ field=models.IntegerField(blank=True, null=True, verbose_name="target male"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="target_other",
+ field=models.IntegerField(blank=True, null=True, verbose_name="target other"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="target_total",
+ field=models.IntegerField(blank=True, null=True, verbose_name="target total"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="user",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="user",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="visibility",
+ field=models.CharField(
+ choices=[("logged_in_user", "Membership"), ("ifrc_only", "IFRC Only"), ("public", "Public")],
+ default="public",
+ max_length=32,
+ verbose_name="visibility",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="projectimport",
+ name="created_at",
+ field=models.DateTimeField(auto_now_add=True, verbose_name="created at"),
+ ),
+ migrations.AlterField(
+ model_name="projectimport",
+ name="created_by",
+ field=models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name="created by"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="projectimport",
+ name="file",
+ field=models.FileField(upload_to="project-imports/", verbose_name="file"),
+ ),
+ migrations.AlterField(
+ model_name="projectimport",
+ name="message",
+ field=models.TextField(verbose_name="message"),
+ ),
+ migrations.AlterField(
+ model_name="projectimport",
+ name="projects_created",
+ field=models.ManyToManyField(to="deployments.project", verbose_name="projects created"),
+ ),
+ migrations.AlterField(
+ model_name="projectimport",
+ name="status",
+ field=models.CharField(
+ choices=[("pending", "Pending"), ("success", "Success"), ("failure", "Failure")],
+ default="pending",
+ max_length=10,
+ verbose_name="status",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="regionalproject",
+ name="created_at",
+ field=models.DateTimeField(auto_now_add=True, verbose_name="created at"),
+ ),
+ migrations.AlterField(
+ model_name="regionalproject",
+ name="modified_at",
+ field=models.DateTimeField(auto_now=True, verbose_name="modified at"),
+ ),
+ migrations.AlterField(
+ model_name="regionalproject",
+ name="name",
+ field=models.CharField(max_length=100, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="actual_expenditure",
+ field=models.IntegerField(blank=True, null=True, verbose_name="actual expenditure"),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="budget_amount",
+ field=models.IntegerField(blank=True, null=True, verbose_name="budget amount"),
+ ),
+ # migrations.RunPython(
+ # code=deployments.migrations.0030_actual_expenditure_complete_project.set_actual_expenditure_for_completed_projects,
+ # ),
+ migrations.AlterField(
+ model_name="personnel",
+ name="type",
+ field=models.CharField(
+ choices=[
+ ("fact", "FACT"),
+ ("heop", "HEOP"),
+ ("rdrt", "RDRT"),
+ ("ifrc", "IFRC"),
+ ("eru", "ERU HR"),
+ ("rr", "Rapid Response"),
+ ],
+ max_length=4,
+ verbose_name="type",
+ ),
+ ),
+ migrations.AddField(
+ model_name="deployedperson",
+ name="role_ar",
+ field=models.CharField(blank=True, max_length=32, null=True, verbose_name="role"),
+ ),
+ migrations.AddField(
+ model_name="deployedperson",
+ name="role_en",
+ field=models.CharField(blank=True, max_length=32, null=True, verbose_name="role"),
+ ),
+ migrations.AddField(
+ model_name="deployedperson",
+ name="role_es",
+ field=models.CharField(blank=True, max_length=32, null=True, verbose_name="role"),
+ ),
+ migrations.AddField(
+ model_name="deployedperson",
+ name="role_fr",
+ field=models.CharField(blank=True, max_length=32, null=True, verbose_name="role"),
+ ),
+ migrations.AddField(
+ model_name="partnersocietyactivities",
+ name="activity_ar",
+ field=models.CharField(max_length=50, null=True, verbose_name="activity"),
+ ),
+ migrations.AddField(
+ model_name="partnersocietyactivities",
+ name="activity_en",
+ field=models.CharField(max_length=50, null=True, verbose_name="activity"),
+ ),
+ migrations.AddField(
+ model_name="partnersocietyactivities",
+ name="activity_es",
+ field=models.CharField(max_length=50, null=True, verbose_name="activity"),
+ ),
+ migrations.AddField(
+ model_name="partnersocietyactivities",
+ name="activity_fr",
+ field=models.CharField(max_length=50, null=True, verbose_name="activity"),
+ ),
+ migrations.AddField(
+ model_name="personneldeployment",
+ name="comments_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="comments"),
+ ),
+ migrations.AddField(
+ model_name="personneldeployment",
+ name="comments_en",
+ field=models.TextField(blank=True, null=True, verbose_name="comments"),
+ ),
+ migrations.AddField(
+ model_name="personneldeployment",
+ name="comments_es",
+ field=models.TextField(blank=True, null=True, verbose_name="comments"),
+ ),
+ migrations.AddField(
+ model_name="personneldeployment",
+ name="comments_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="comments"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="name_ar",
+ field=models.TextField(null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="name_en",
+ field=models.TextField(null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="name_es",
+ field=models.TextField(null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="name_fr",
+ field=models.TextField(null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="regionalproject",
+ name="name_ar",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="regionalproject",
+ name="name_en",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="regionalproject",
+ name="name_es",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AddField(
+ model_name="regionalproject",
+ name="name_fr",
+ field=models.CharField(max_length=100, null=True, verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="supporting_societies",
+ field=models.CharField(
+ blank=True, help_text="still not used in frontend", max_length=500, null=True, verbose_name="supporting societies"
+ ),
+ ),
+ migrations.CreateModel(
+ name="MolnixTag",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("molnix_id", models.IntegerField()),
+ ("name", models.CharField(max_length=255)),
+ ("description", models.CharField(max_length=512)),
+ ("color", models.CharField(max_length=6)),
+ ("tag_type", models.CharField(max_length=127)),
+ ],
+ ),
+ migrations.AddField(
+ model_name="personnel",
+ name="is_active",
+ field=models.BooleanField(default=True),
+ ),
+ migrations.AddField(
+ model_name="personnel",
+ name="molnix_id",
+ field=models.IntegerField(blank=True, null=True),
+ ),
+ migrations.AddField(
+ model_name="personneldeployment",
+ name="is_molnix",
+ field=models.BooleanField(default=False),
+ ),
+ migrations.AddField(
+ model_name="personnel",
+ name="molnix_tags",
+ field=models.ManyToManyField(blank=True, to="deployments.molnixtag"),
+ ),
+ ]
diff --git a/deployments/migrations/0036_auto_20201118_0812_squashed_0089_alter_emergencyproject_districts.py b/deployments/migrations/0036_auto_20201118_0812_squashed_0089_alter_emergencyproject_districts.py
new file mode 100644
index 000000000..9f07015fd
--- /dev/null
+++ b/deployments/migrations/0036_auto_20201118_0812_squashed_0089_alter_emergencyproject_districts.py
@@ -0,0 +1,1089 @@
+# Generated by Django 4.2.15 on 2024-09-13 15:34
+
+import django.db.migrations.operations.special
+import django.db.models.deletion
+import tinymce.models
+from django.conf import settings
+from django.db import migrations, models
+
+# Functions from the following migrations need manual copying.
+# Move them and any dependencies into this file, then update the
+# RunPython operations to refer to the local versions:
+# deployments.migrations.0038_auto_20210820_0733
+# deployments.migrations.0039_auto_20210823_1159
+
+
+class Migration(migrations.Migration):
+
+ replaces = [
+ ("deployments", "0036_auto_20201118_0812"),
+ ("deployments", "0037_project_modified_by"),
+ ("deployments", "0038_auto_20210820_0733"),
+ ("deployments", "0039_auto_20210823_1159"),
+ ("deployments", "0040_auto_20210920_1250"),
+ ("deployments", "0041_auto_20211110_0924"),
+ ("deployments", "0042_personnel_country_to"),
+ ("deployments", "0043_personnel_country_to_fill"),
+ ("deployments", "0044_auto_20220305_0922"),
+ ("deployments", "0045_remove_emergencyproject_country"),
+ ("deployments", "0046_auto_20220307_0926"),
+ ("deployments", "0047_emergencyproject_country"),
+ ("deployments", "0048_auto_20220310_0524"),
+ ("deployments", "0049_auto_20220311_0400"),
+ ("deployments", "0050_emergencyprojectactivity_people_households"),
+ ("deployments", "0051_auto_20220311_0947"),
+ ("deployments", "0052_auto_20220314_0633"),
+ ("deployments", "0044_personnel_molnix_status"),
+ ("deployments", "0053_merge_20220314_1059"),
+ ("deployments", "0054_auto_20220314_1059"),
+ ("deployments", "0055_auto_20220315_0420"),
+ ("deployments", "0056_auto_20220318_0413"),
+ ("deployments", "0045_molnixtag_tag_category"),
+ ("deployments", "0057_merge_20220318_0527"),
+ ("deployments", "0058_auto_20220322_1056"),
+ ("deployments", "0059_auto_20220323_1028"),
+ ("deployments", "0060_auto_20220323_1527"),
+ ("deployments", "0061_auto_20220331_1121"),
+ ("deployments", "0062_auto_20220331_1143"),
+ ("deployments", "0063_auto_20220413_1438"),
+ ("deployments", "0064_auto_20220414_0842"),
+ ("deployments", "0065_emergencyproject_visibility"),
+ ("deployments", "0066_auto_20220727_0708"),
+ ("deployments", "0066_auto_20220523_0824"),
+ ("deployments", "0067_merge_0066_auto_20220523_0824_0066_auto_20220727_0708"),
+ ("deployments", "0067_annualsplit"),
+ ("deployments", "0068_merge_20220818_1357"),
+ ("deployments", "0069_auto_20221022_1542"),
+ ("deployments", "0070_alter_personnel_options"),
+ ("deployments", "0071_sector"),
+ ("deployments", "0072_sectortag"),
+ ("deployments", "0073_auto_20230301_1606"),
+ ("deployments", "0074_alter_molnixtag_description"),
+ ("deployments", "0075_alter_project_primary_sector"),
+ ("deployments", "0076_auto_20230309_1556"),
+ ("deployments", "0077_auto_20230420_1609"),
+ ("deployments", "0078_auto_20230421_1110"),
+ ("deployments", "0079_auto_20230423_0628"),
+ ("deployments", "0077_project_project_admin2"),
+ ("deployments", "0078_emergencyproject_admin2"),
+ ("deployments", "0080_merge_20230505_0418"),
+ ("deployments", "0077_auto_20230410_0720"),
+ ("deployments", "0081_merge_20230614_0804"),
+ ("deployments", "0082_personnel_surge_alert"),
+ ("deployments", "0083_auto_20230727_0853"),
+ ("deployments", "0084_auto_20230731_1006"),
+ ("deployments", "0085_alter_personnel_location"),
+ ("deployments", "0086_auto_20230809_0822"),
+ ("deployments", "0087_auto_20230816_0430"),
+ ("deployments", "0088_alter_project_visibility"),
+ ("deployments", "0089_alter_emergencyproject_districts"),
+ ]
+
+ dependencies = [
+ ("api", "0152_countryoffieldreporttoreview"),
+ ("api", "0137_auto_20220105_1533"),
+ ("api", "0210_profile_accepted_montandon_license_terms"),
+ ("deployments", "0035_personnel_molnix_tags"),
+ ("notifications", "0013_auto_20230410_0720"),
+ ("api", "0146_auto_20220228_0952"),
+ ("api", "0164_appealdocumenttype"),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ("api", "0161_alter_event_options"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="deployedperson",
+ name="name",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="name"),
+ ),
+ migrations.AlterField(
+ model_name="deployedperson",
+ name="role",
+ field=models.CharField(blank=True, max_length=512, null=True, verbose_name="role"),
+ ),
+ migrations.AlterField(
+ model_name="deployedperson",
+ name="role_ar",
+ field=models.CharField(blank=True, max_length=512, null=True, verbose_name="role"),
+ ),
+ migrations.AlterField(
+ model_name="deployedperson",
+ name="role_en",
+ field=models.CharField(blank=True, max_length=512, null=True, verbose_name="role"),
+ ),
+ migrations.AlterField(
+ model_name="deployedperson",
+ name="role_es",
+ field=models.CharField(blank=True, max_length=512, null=True, verbose_name="role"),
+ ),
+ migrations.AlterField(
+ model_name="deployedperson",
+ name="role_fr",
+ field=models.CharField(blank=True, max_length=512, null=True, verbose_name="role"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="modified_by",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="project_modified_by",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="modified by",
+ ),
+ ),
+ # migrations.RunPython(
+ # code=deployments.migrations.0038_auto_20210820_0733.remove_rcce_tag,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ # migrations.RunPython(
+ # code=deployments.migrations.0039_auto_20210823_1159.remove_rcce_tag,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AlterField(
+ model_name="personneldeployment",
+ name="region_deployed_to",
+ field=models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.region", verbose_name="region deployed to"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="visibility",
+ field=models.CharField(
+ choices=[
+ ("logged_in_user", "Membership"),
+ ("ifrc_only", "IFRC Only"),
+ ("public", "Public"),
+ ("ifrc_ns", "IFRC_NS"),
+ ],
+ default="public",
+ max_length=32,
+ verbose_name="visibility",
+ ),
+ ),
+ migrations.AddField(
+ model_name="personnel",
+ name="country_to",
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="personnel_deployments_to",
+ to="api.country",
+ verbose_name="country to",
+ ),
+ ),
+ migrations.RunSQL(
+ sql=[
+ "update deployments_personnel set country_to_id=d.country_id from deployments_personnel a join deployments_personneldeployment b on a.deployment_id = b.id join api_event c on b.event_deployed_to_id = c.id join api_event_countries d on c.id = d.event_id join api_country e on d.country_id = e.id where deployments_personnel.deployedperson_ptr_id = a.deployedperson_ptr_id and e.record_type = 1"
+ ],
+ reverse_sql=["update deployments_personnel set country_to_id=NULL"],
+ ),
+ migrations.CreateModel(
+ name="EmergencyProject",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=255, verbose_name="title")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified at")),
+ (
+ "activity_lead",
+ models.CharField(
+ choices=[("national_society", "National Society"), ("deployed_eru", "Deployed ERU")],
+ max_length=30,
+ verbose_name="Activity lead",
+ ),
+ ),
+ (
+ "reporting_ns_contact_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="NS Contanct Information: Name"),
+ ),
+ (
+ "reporting_ns_contact_role",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="NS Contanct Information: Role"),
+ ),
+ (
+ "reporting_ns_contact_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="NS Contanct Information: Email"),
+ ),
+ ("start_date", models.DateField(verbose_name="Start Date")),
+ (
+ "status",
+ models.CharField(
+ choices=[("on_going", "Ongoing"), ("complete", "Complete"), ("planned", "Planned")],
+ default="on_going",
+ max_length=40,
+ ),
+ ),
+ (
+ "created_by",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="+",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="created by",
+ ),
+ ),
+ (
+ "deployed_eru",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="+",
+ to="deployments.eru",
+ verbose_name="Deployed ERU",
+ ),
+ ),
+ (
+ "districts",
+ models.ManyToManyField(
+ related_name="_emergencyproject_districts_+", to="api.district", verbose_name="Districts"
+ ),
+ ),
+ (
+ "event",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, related_name="+", to="api.event", verbose_name="Event"
+ ),
+ ),
+ (
+ "modified_by",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="+",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="modified by",
+ ),
+ ),
+ (
+ "reporting_ns",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="+",
+ to="api.country",
+ verbose_name="Reporting national society",
+ ),
+ ),
+ (
+ "country",
+ models.ForeignKey(
+ default=1,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="+",
+ to="api.country",
+ verbose_name="Country",
+ ),
+ ),
+ ("end_date", models.DateField(blank=True, null=True, verbose_name="End Date")),
+ (
+ "visibility",
+ models.CharField(
+ choices=[
+ ("logged_in_user", "Membership"),
+ ("ifrc_only", "IFRC Only"),
+ ("public", "Public"),
+ ("ifrc_ns", "IFRC_NS"),
+ ],
+ default="public",
+ max_length=32,
+ verbose_name="visibility",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="EmergencyProjectActivityAction",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=255, verbose_name="title")),
+ ("order", models.SmallIntegerField(default=0)),
+ ],
+ ),
+ migrations.CreateModel(
+ name="EmergencyProjectActivitySector",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=255, verbose_name="title")),
+ ("order", models.SmallIntegerField(default=0)),
+ ],
+ ),
+ migrations.CreateModel(
+ name="EmergencyProjectActivityActionSupply",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=255, verbose_name="title")),
+ ("order", models.SmallIntegerField(default=0)),
+ (
+ "action",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ related_name="supplies",
+ to="deployments.emergencyprojectactivityaction",
+ verbose_name="action",
+ ),
+ ),
+ ],
+ ),
+ migrations.AddField(
+ model_name="emergencyprojectactivityaction",
+ name="sector",
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT,
+ to="deployments.emergencyprojectactivitysector",
+ verbose_name="sector",
+ ),
+ ),
+ migrations.CreateModel(
+ name="EmergencyProjectActivityLocation",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("latitude", models.FloatField(verbose_name="latitude")),
+ ("longitude", models.FloatField(verbose_name="longitude")),
+ ("description", models.TextField(verbose_name="location description")),
+ ],
+ ),
+ migrations.AddField(
+ model_name="emergencyprojectactivityaction",
+ name="description",
+ field=models.TextField(blank=True, verbose_name="Description"),
+ ),
+ migrations.AddField(
+ model_name="personnel",
+ name="molnix_status",
+ field=models.CharField(
+ choices=[("active", "ACTIVE"), ("hidden", "HIDDEN"), ("draft", "DRAFT"), ("deleted", "DELETED")],
+ default="active",
+ max_length=8,
+ verbose_name="molnix status",
+ ),
+ ),
+ migrations.AddField(
+ model_name="emergencyprojectactivityaction",
+ name="is_cash_type",
+ field=models.BooleanField(default=False, verbose_name="is_cash_type"),
+ ),
+ migrations.AddField(
+ model_name="emergencyprojectactivityaction",
+ name="has_location",
+ field=models.BooleanField(default=False, verbose_name="has location"),
+ ),
+ migrations.AddField(
+ model_name="molnixtag",
+ name="tag_category",
+ field=models.CharField(max_length=127, null=True),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="reporting_ns_contact_email",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="NS Contanct Information: Email"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="reporting_ns_contact_name",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="NS Contanct Information: Name"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="reporting_ns_contact_role",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="NS Contanct Information: Role"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="description",
+ field=tinymce.models.HTMLField(blank=True, default="", verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="description_ar",
+ field=tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="description_en",
+ field=tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="description_es",
+ field=tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="description_fr",
+ field=tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="document",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.generaldocument",
+ verbose_name="linked document",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="deployedperson",
+ name="end_date",
+ field=models.DateTimeField(db_index=True, null=True, verbose_name="end date"),
+ ),
+ migrations.CreateModel(
+ name="EmergencyProjectActivity",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("is_simplified_report", models.BooleanField(default=True, verbose_name="is_simplified_report")),
+ ("people_count", models.IntegerField(blank=True, null=True, verbose_name="People")),
+ ("male_count", models.IntegerField(blank=True, null=True, verbose_name="Men")),
+ ("female_count", models.IntegerField(blank=True, null=True, verbose_name="Female")),
+ ("male_6_12_count", models.IntegerField(blank=True, null=True, verbose_name="Boys 6-12")),
+ ("male_13_17_count", models.IntegerField(blank=True, null=True, verbose_name="Boys 13-17")),
+ ("male_18_59_count", models.IntegerField(blank=True, null=True, verbose_name="Men 18-29")),
+ ("female_6_12_count", models.IntegerField(blank=True, null=True, verbose_name="Girls 6-12")),
+ ("female_13_17_count", models.IntegerField(blank=True, null=True, verbose_name="Girls 13-17")),
+ ("female_18_59_count", models.IntegerField(blank=True, null=True, verbose_name="Women 18-29")),
+ ("details", models.TextField(blank=True, null=True, verbose_name="details")),
+ ("supplies", models.JSONField(default=dict, verbose_name="supplies")),
+ ("custom_action", models.CharField(blank=True, max_length=255, null=True, verbose_name="custom_action")),
+ ("custom_supplies", models.JSONField(default=dict, verbose_name="custom supplies")),
+ (
+ "action",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to="deployments.emergencyprojectactivityaction",
+ verbose_name="action",
+ ),
+ ),
+ (
+ "project",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="activities",
+ to="deployments.emergencyproject",
+ verbose_name="emergency project/3W",
+ ),
+ ),
+ (
+ "sector",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to="deployments.emergencyprojectactivitysector",
+ verbose_name="sector",
+ ),
+ ),
+ ("amount", models.IntegerField(blank=True, null=True, verbose_name="Amount")),
+ ("household_count", models.IntegerField(blank=True, null=True, verbose_name="Household")),
+ ("item_count", models.IntegerField(blank=True, null=True, verbose_name="Item")),
+ ("other_13_17_count", models.IntegerField(blank=True, null=True, verbose_name="Others/Unknown 13-17")),
+ ("other_18_59_count", models.IntegerField(blank=True, null=True, verbose_name="Others/Unknown 18-29")),
+ ("other_6_12_count", models.IntegerField(blank=True, null=True, verbose_name="Others/Unknown 6-12")),
+ ("point_count", models.IntegerField(blank=True, null=True, verbose_name="Point Count")),
+ (
+ "points",
+ models.ManyToManyField(blank=True, to="deployments.emergencyprojectactivitylocation", verbose_name="Points"),
+ ),
+ (
+ "people_households",
+ models.CharField(
+ blank=True,
+ choices=[("people", "People"), ("households", "Households")],
+ max_length=50,
+ null=True,
+ verbose_name="People Households",
+ ),
+ ),
+ ("beneficiaries_count", models.IntegerField(blank=True, null=True, verbose_name="Beneficiaries Count")),
+ ("disabled_female_13_17_count", models.IntegerField(blank=True, null=True, verbose_name="Disabled Girls 13-17")),
+ ("disabled_female_18_59_count", models.IntegerField(blank=True, null=True, verbose_name="Disabled Women 18-29")),
+ ("disabled_female_6_12_count", models.IntegerField(blank=True, null=True, verbose_name="Disabled Girls 6-12")),
+ ("disabled_male_13_17_count", models.IntegerField(blank=True, null=True, verbose_name="Disabled Boys 13-17")),
+ ("disabled_male_18_59_count", models.IntegerField(blank=True, null=True, verbose_name="Disabled Men 18-29")),
+ ("disabled_male_6_12_count", models.IntegerField(blank=True, null=True, verbose_name="Disabled Boys 6-12")),
+ (
+ "disabled_other_13_17_count",
+ models.IntegerField(blank=True, null=True, verbose_name="Disabled Others/Unknown 13-17"),
+ ),
+ (
+ "disabled_other_18_59_count",
+ models.IntegerField(blank=True, null=True, verbose_name="Disabled Others/Unknown 18-29"),
+ ),
+ (
+ "disabled_other_6_12_count",
+ models.IntegerField(blank=True, null=True, verbose_name="Disabled Others/Unknown 6-12"),
+ ),
+ ("female_unknown_age_count", models.IntegerField(blank=True, null=True, verbose_name="Female Unknown Age")),
+ (
+ "is_disaggregated_for_disabled",
+ models.BooleanField(blank=True, null=True, verbose_name="Is disaggregated for disabled"),
+ ),
+ ("male_unknown_age_count", models.IntegerField(blank=True, null=True, verbose_name="Male Unknown Age")),
+ ("other_unknown_age_count", models.IntegerField(blank=True, null=True, verbose_name="Other Unknown Age")),
+ ("disabled_female_0_1_count", models.IntegerField(blank=True, null=True, verbose_name="Disabled Girls 0-1")),
+ ("disabled_female_2_5_count", models.IntegerField(blank=True, null=True, verbose_name="Disabled Girls 2-5")),
+ (
+ "disabled_female_60_plus_count",
+ models.IntegerField(blank=True, null=True, verbose_name="Disabled Older Women 60+"),
+ ),
+ ("disabled_male_0_1_count", models.IntegerField(blank=True, null=True, verbose_name="Disabled Boys 0-1")),
+ ("disabled_male_2_5_count", models.IntegerField(blank=True, null=True, verbose_name="Disabled Boys 2-5")),
+ (
+ "disabled_male_60_plus_count",
+ models.IntegerField(blank=True, null=True, verbose_name="Disabled Older Men 60+"),
+ ),
+ (
+ "disabled_other_0_1_count",
+ models.IntegerField(blank=True, null=True, verbose_name="Disabled Others/Unknown 0-1"),
+ ),
+ (
+ "disabled_other_2_5_count",
+ models.IntegerField(blank=True, null=True, verbose_name="Disabled Others/Unknown 2-5"),
+ ),
+ (
+ "disabled_other_60_plus_count",
+ models.IntegerField(blank=True, null=True, verbose_name="Disabled Others/Unknown 60+"),
+ ),
+ ("female_0_1_count", models.IntegerField(blank=True, null=True, verbose_name="Girls 0-1")),
+ ("female_2_5_count", models.IntegerField(blank=True, null=True, verbose_name="Girls 2-5")),
+ ("female_60_plus_count", models.IntegerField(blank=True, null=True, verbose_name="Older Women 60+")),
+ ("male_0_1_count", models.IntegerField(blank=True, null=True, verbose_name="Boys 0-1")),
+ ("male_2_5_count", models.IntegerField(blank=True, null=True, verbose_name="Boys 2-5")),
+ ("male_60_plus_count", models.IntegerField(blank=True, null=True, verbose_name="Older Men 60+")),
+ ("other_0_1_count", models.IntegerField(blank=True, null=True, verbose_name="Others/Unknown 0-1")),
+ ("other_2_5_count", models.IntegerField(blank=True, null=True, verbose_name="Others/Unknown 2-5")),
+ ("other_60_plus_count", models.IntegerField(blank=True, null=True, verbose_name="Others/Unknown 60+")),
+ (
+ "has_no_data_on_people_reached",
+ models.BooleanField(blank=True, null=True, verbose_name="Has no data on people reached"),
+ ),
+ (
+ "disabled_female_unknown_age_count",
+ models.IntegerField(blank=True, null=True, verbose_name="Disabled Female Unknown Age"),
+ ),
+ (
+ "disabled_male_unknown_age_count",
+ models.IntegerField(blank=True, null=True, verbose_name="Disabled Male Unknown Age"),
+ ),
+ (
+ "disabled_other_unknown_age_count",
+ models.IntegerField(blank=True, null=True, verbose_name="Disabled Other Unknown Age"),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="AnnualSplit",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("year", models.IntegerField(blank=True, null=True, verbose_name="year")),
+ ("budget_amount", models.IntegerField(blank=True, null=True, verbose_name="amount")),
+ ("target_male", models.IntegerField(blank=True, null=True, verbose_name="target male")),
+ ("target_female", models.IntegerField(blank=True, null=True, verbose_name="target female")),
+ ("target_other", models.IntegerField(blank=True, null=True, verbose_name="target other")),
+ ("target_total", models.IntegerField(blank=True, null=True, verbose_name="target total")),
+ ("reached_male", models.IntegerField(blank=True, null=True, verbose_name="reached male")),
+ ("reached_female", models.IntegerField(blank=True, null=True, verbose_name="reached female")),
+ ("reached_other", models.IntegerField(blank=True, null=True, verbose_name="reached other")),
+ ("reached_total", models.IntegerField(blank=True, null=True, verbose_name="reached total")),
+ (
+ "project",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="annual_splits",
+ to="deployments.project",
+ verbose_name="project",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "Annual Split",
+ "verbose_name_plural": "Annual Splits",
+ },
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="type",
+ field=models.IntegerField(
+ choices=[
+ (0, "Basecamp"),
+ (1, "IT & Telecom"),
+ (2, "Logistics"),
+ (3, "RCRC Emergency Hospital"),
+ (4, "RCRC Emergency Clinic"),
+ (5, "Relief"),
+ (6, "Wash M15"),
+ (7, "Wash MSM20"),
+ (8, "Wash M40"),
+ (9, "Water Supply and rehabilitation"),
+ (10, "Household Water Treatment and safe storage"),
+ (11, "Cholera Case management at Community level"),
+ (12, "Safe and Dignified Burials"),
+ (13, "Community Based Surveillance"),
+ (14, "Base Camp – S"),
+ (15, "Base Camp – M"),
+ (16, "Base Camp – L"),
+ ],
+ default=0,
+ help_text='Key/value pairs',
+ verbose_name="type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="operation_type",
+ field=models.IntegerField(
+ choices=[(0, "Programme"), (1, "Emergency Operation")],
+ default=0,
+ help_text='Key/value pairs',
+ verbose_name="operation type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="primary_sector",
+ field=models.IntegerField(
+ choices=[
+ (0, "WASH"),
+ (1, "PGI"),
+ (2, "CEA"),
+ (3, "Migration"),
+ (4, "Health"),
+ (5, "DRR"),
+ (6, "Shelter"),
+ (7, "NS Strengthening"),
+ (8, "Education"),
+ (9, "Livelihoods and basic needs"),
+ ],
+ default=0,
+ help_text='Key/value pairs',
+ verbose_name="sector",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="programme_type",
+ field=models.IntegerField(
+ choices=[(0, "Bilateral"), (1, "Multilateral"), (2, "Domestic")],
+ default=0,
+ help_text='Key/value pairs',
+ verbose_name="programme type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="status",
+ field=models.IntegerField(
+ choices=[(0, "Planned"), (1, "Ongoing"), (2, "Completed")],
+ default=0,
+ help_text='Key/value pairs',
+ verbose_name="status",
+ ),
+ ),
+ migrations.AlterModelOptions(
+ name="personnel",
+ options={
+ "ordering": ("deployment", "country_to", "country_from", "molnix_id", "deployedperson_ptr_id"),
+ "verbose_name": "Personnel",
+ "verbose_name_plural": "Personnels",
+ },
+ ),
+ migrations.CreateModel(
+ name="Sector",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=255, verbose_name="title")),
+ ("slug", models.CharField(max_length=255, verbose_name="slug")),
+ ("order", models.SmallIntegerField(default=0)),
+ ],
+ ),
+ migrations.CreateModel(
+ name="SectorTag",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=255, verbose_name="title")),
+ ("slug", models.CharField(max_length=255, verbose_name="slug")),
+ ("order", models.SmallIntegerField(default=0)),
+ ],
+ ),
+ migrations.RunSQL(
+ sql=[
+ "INSERT INTO deployments_sector (id, \"order\", slug, title) values (0 ,0 ,'WASH', 'WASH')",
+ "INSERT INTO deployments_sector (id, \"order\", slug, title) values (1 ,1 ,'PGI', 'PGI')",
+ "INSERT INTO deployments_sector (id, \"order\", slug, title) values (2 ,2 ,'CEA' , 'CEA')",
+ "INSERT INTO deployments_sector (id, \"order\", slug, title) values (3 ,3 ,'MIGRATION', 'Migration')",
+ "INSERT INTO deployments_sector (id, \"order\", slug, title) values (4 ,4 ,'HEALTH_PUBLIC' , 'Health (public)')",
+ "INSERT INTO deployments_sector (id, \"order\", slug, title) values (5 ,5 ,'DRR', 'DRR')",
+ "INSERT INTO deployments_sector (id, \"order\", slug, title) values (6 ,6 ,'SHELTER' ,'Shelter')",
+ "INSERT INTO deployments_sector (id, \"order\", slug, title) values (7 ,7 ,'NS_STRENGTHENING' , 'NS Strengthening')",
+ "INSERT INTO deployments_sector (id, \"order\", slug, title) values (8 ,8 ,'EDUCATION' , 'Education')",
+ "INSERT INTO deployments_sector (id, \"order\", slug, title) values (9 ,9 ,'LIVELIHOODS_AND_BASIC_NEEDS', 'Livelihoods and basic needs')",
+ "SELECT SETVAL('deployments_sector_id_seq', (select max(id) from deployments_sector))",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (0 ,0 ,'WASH', 'WASH')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (1 ,1 ,'PGI', 'PGI')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (2 ,2 ,'CEA' , 'CEA')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (3 ,3 ,'MIGRATION', 'Migration')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (4 ,4 ,'HEALTH_PUBLIC' , 'Health (public)')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (5 ,5 ,'DRR', 'DRR')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (6 ,6 ,'SHELTER' ,'Shelter')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (7 ,7 ,'NS_STRENGTHENING' , 'NS Strengthening')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (8 ,8 ,'EDUCATION' , 'Education')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (9 ,9 ,'LIVELIHOODS_AND_BASIC_NEEDS', 'Livelihoods and basic needs')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (10,10,'RECOVERY', 'Recovery')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (11,11,'INTERNAL_DISPLACEMENT', 'Internal displacement')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (12,12,'HEALTH_CLINICAL' , 'Health (clinical)')",
+ "INSERT INTO deployments_sectortag(id, \"order\", slug, title) values (13,13,'COVID_19' , 'COVID-19')",
+ "SELECT SETVAL('deployments_sectortag_id_seq', (select max(id) from deployments_sectortag))",
+ "CREATE TABLE tmp2sect as select id, secondary_sectors from deployments_project",
+ ],
+ reverse_sql=["DELETE FROM deployments_sector", "DELETE FROM deployments_sectortag", "DROP TABLE tmp2sect"],
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="primary_sector",
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="deployments.sector", verbose_name="sector"),
+ ),
+ migrations.RemoveField(
+ model_name="project",
+ name="secondary_sectors",
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="secondary_sectors",
+ field=models.ManyToManyField(blank=True, related_name="tags", to="deployments.sectortag"),
+ ),
+ migrations.AlterModelOptions(
+ name="sector",
+ options={"verbose_name": "Project Sector", "verbose_name_plural": "Project Sectors"},
+ ),
+ migrations.AlterModelOptions(
+ name="sectortag",
+ options={"verbose_name": "Project Sector Tag", "verbose_name_plural": "Project Sector Tags"},
+ ),
+ migrations.RunSQL(
+ sql=[
+ "INSERT INTO deployments_project_secondary_sectors (project_id,sectortag_id) (select distinct id, unnest(secondary_sectors) FROM tmp2sect)",
+ "DROP TABLE tmp2sect",
+ ],
+ reverse_sql=["DELETE FROM deployments_project_secondary_sectors"],
+ ),
+ migrations.AlterField(
+ model_name="molnixtag",
+ name="description",
+ field=models.CharField(blank=True, max_length=512),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="primary_sector",
+ field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to="deployments.sector", verbose_name="sector"),
+ ),
+ migrations.RemoveField(
+ model_name="sector",
+ name="slug",
+ ),
+ migrations.RemoveField(
+ model_name="sectortag",
+ name="slug",
+ ),
+ migrations.AddField(
+ model_name="sector",
+ name="color",
+ field=models.CharField(blank=True, max_length=7, null=True, verbose_name="color"),
+ ),
+ migrations.AddField(
+ model_name="sector",
+ name="is_deprecated",
+ field=models.BooleanField(default=False, help_text="Is this a deprecated sector?"),
+ ),
+ migrations.AddField(
+ model_name="sectortag",
+ name="color",
+ field=models.CharField(blank=True, max_length=7, null=True, verbose_name="color"),
+ ),
+ migrations.AddField(
+ model_name="sectortag",
+ name="is_deprecated",
+ field=models.BooleanField(default=False, help_text="Is this a deprecated sector tag?"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyproject",
+ name="districts",
+ field=models.ManyToManyField(
+ blank=True, related_name="_deployments_emergencyproject_districts_+", to="api.district", verbose_name="Districts"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="project_districts",
+ field=models.ManyToManyField(blank=True, to="api.district", verbose_name="districts"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyprojectactivity",
+ name="custom_supplies",
+ field=models.JSONField(blank=True, default=dict, null=True, verbose_name="custom supplies"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyprojectactivity",
+ name="supplies",
+ field=models.JSONField(blank=True, default=dict, null=True, verbose_name="supplies"),
+ ),
+ migrations.AlterField(
+ model_name="eru",
+ name="type",
+ field=models.IntegerField(
+ choices=[
+ (0, "Basecamp"),
+ (1, "IT & Telecom"),
+ (2, "Logistics"),
+ (3, "RCRC Emergency Hospital"),
+ (4, "RCRC Emergency Clinic"),
+ (5, "Relief"),
+ (6, "Wash M15"),
+ (7, "Wash MSM20"),
+ (8, "Wash M40"),
+ (9, "Water Supply and rehabilitation"),
+ (10, "Household Water Treatment and safe storage"),
+ (11, "Cholera Case management at Community level"),
+ (12, "Safe and Dignified Burials"),
+ (13, "Community Based Surveillance"),
+ (14, "Base Camp – S"),
+ (15, "Base Camp – M"),
+ (16, "Base Camp – L"),
+ (17, "Outpatient Department (OPD) Module"),
+ (18, "MHPSS"),
+ ],
+ default=0,
+ help_text='Key/value pairs',
+ verbose_name="type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="emergencyprojectactivity",
+ name="custom_supplies",
+ field=models.JSONField(blank=True, default=dict, verbose_name="custom supplies"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyprojectactivity",
+ name="supplies",
+ field=models.JSONField(blank=True, default=dict, verbose_name="supplies"),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="project_admin2",
+ field=models.ManyToManyField(blank=True, to="api.admin2", verbose_name="admin2"),
+ ),
+ migrations.AddField(
+ model_name="emergencyproject",
+ name="admin2",
+ field=models.ManyToManyField(blank=True, to="api.admin2", verbose_name="admin2"),
+ ),
+ migrations.AddField(
+ model_name="deployedperson",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="deployedperson",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="partnersocietyactivities",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="partnersocietyactivities",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="personneldeployment",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="personneldeployment",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="project",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="regionalproject",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="regionalproject",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="personnel",
+ name="surge_alert",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to="notifications.surgealert",
+ verbose_name="surge alert",
+ ),
+ ),
+ migrations.CreateModel(
+ name="MolnixTagGroup",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("molnix_id", models.IntegerField()),
+ ("name", models.CharField(max_length=255, verbose_name="name")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("updated_at", models.DateTimeField(auto_now=True, verbose_name="updated at")),
+ ("is_deprecated", models.BooleanField(default=False, help_text="Is this a deprecated group?")),
+ ],
+ options={
+ "verbose_name": "Molnix Tag Group",
+ "verbose_name_plural": "Molnix Tag Groups",
+ },
+ ),
+ migrations.AddField(
+ model_name="molnixtag",
+ name="groups",
+ field=models.ManyToManyField(blank=True, related_name="groups", to="deployments.molnixtaggroup"),
+ ),
+ migrations.AddField(
+ model_name="personnel",
+ name="location",
+ field=models.CharField(blank=True, max_length=300, null=True, verbose_name="location"),
+ ),
+ migrations.AddField(
+ model_name="personnel",
+ name="appraisal_received",
+ field=models.BooleanField(default=False, verbose_name="appraisal received"),
+ ),
+ migrations.AddField(
+ model_name="personnel",
+ name="gender",
+ field=models.CharField(blank=True, max_length=15, null=True, verbose_name="gender"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyproject",
+ name="reporting_ns_contact_email",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="NS Contact Information: Email"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyproject",
+ name="reporting_ns_contact_name",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="NS Contact Information: Name"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyproject",
+ name="reporting_ns_contact_role",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="NS Contact Information: Role"),
+ ),
+ migrations.AlterField(
+ model_name="emergencyproject",
+ name="visibility",
+ field=models.CharField(
+ choices=[
+ ("logged_in_user", "RCRC Movement"),
+ ("ifrc_only", "IFRC Secretariat"),
+ ("public", "Public"),
+ ("ifrc_ns", "IFRC and NS"),
+ ],
+ default="public",
+ max_length=32,
+ verbose_name="visibility",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="visibility",
+ field=models.CharField(
+ choices=[
+ ("logged_in_user", "RCRC Movement"),
+ ("ifrc_only", "IFRC Secretariat"),
+ ("public", "Public"),
+ ("ifrc_ns", "IFRC and NS"),
+ ],
+ default="public",
+ max_length=32,
+ verbose_name="visibility",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="project",
+ name="visibility",
+ field=models.CharField(
+ choices=[
+ ("logged_in_user", "RCRC Movement"),
+ ("ifrc_only", "IFRC Secretariat"),
+ ("public", "Public"),
+ ("ifrc_ns", "IFRC and NS"),
+ ],
+ default="public",
+ max_length=64,
+ verbose_name="visibility",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="emergencyproject",
+ name="districts",
+ field=models.ManyToManyField(blank=True, related_name="+", to="api.district", verbose_name="Districts"),
+ ),
+ ]
diff --git a/deployments/migrations/0090_alter_emergencyproject_country.py b/deployments/migrations/0090_alter_emergencyproject_country.py
new file mode 100644
index 000000000..b09ed08f7
--- /dev/null
+++ b/deployments/migrations/0090_alter_emergencyproject_country.py
@@ -0,0 +1,22 @@
+# Generated by Django 4.2.15 on 2024-09-18 04:24
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("api", "0001_squashed_0213_merge_20240807_1001"),
+ ("deployments", "0036_auto_20201118_0812_squashed_0089_alter_emergencyproject_districts"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="emergencyproject",
+ name="country",
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, related_name="+", to="api.country", verbose_name="Country"
+ ),
+ ),
+ ]
diff --git a/dref/migrations/0001_squashed_0074_auto_20240129_0909.py b/dref/migrations/0001_squashed_0074_auto_20240129_0909.py
new file mode 100644
index 000000000..775268c41
--- /dev/null
+++ b/dref/migrations/0001_squashed_0074_auto_20240129_0909.py
@@ -0,0 +1,5195 @@
+# Generated by Django 4.2.15 on 2024-09-13 15:15
+
+import django.db.migrations.operations.special
+import django.db.models.deletion
+import django.utils.timezone
+from django.conf import settings
+from django.db import migrations, models
+
+# Functions from the following migrations need manual copying.
+# Move them and any dependencies into this file, then update the
+# RunPython operations to refer to the local versions:
+# dref.migrations.0058_auto_20230529_0806 - NOT REQUIRED
+# dref.migrations.0062_auto_20230619_0931 - NOT REQUIRED
+# dref.migrations.0073_auto_20231214_0358 - NOT REQURIED
+
+
+class Migration(migrations.Migration):
+
+ replaces = [
+ ("dref", "0001_initial"),
+ ("dref", "0002_auto_20220208_1025"),
+ ("dref", "0003_auto_20220314_0824"),
+ ("dref", "0004_dref_is_published"),
+ ("dref", "0005_drefoperationalupdate"),
+ ("dref", "0006_auto_20220415_0544"),
+ ("dref", "0007_drefoperationalupdate_entity_affected"),
+ ("dref", "0008_auto_20220419_0628"),
+ ("dref", "0009_remove_drefoperationalupdate_parent"),
+ ("dref", "0010_auto_20220429_0859"),
+ ("dref", "0011_plannedintervention_indicators"),
+ ("dref", "0012_auto_20220613_0911"),
+ ("dref", "0013_drefoperationalupdate_photos"),
+ ("dref", "0014_auto_20220616_0913"),
+ ("dref", "0015_auto_20220708_0739"),
+ ("dref", "0016_auto_20220725_0445"),
+ ("dref", "0017_auto_20220725_0538"),
+ ("dref", "0018_dref_is_surge_personnel_deployed"),
+ ("dref", "0019_auto_20220725_0835"),
+ ("dref", "0020_auto_20220725_1001"),
+ ("dref", "0021_dref_is_there_major_coordination_mechanism"),
+ ("dref", "0022_auto_20220727_0536"),
+ ("dref", "0023_auto_20220727_0928"),
+ ("dref", "0024_auto_20220728_0418"),
+ ("dref", "0025_auto_20220808_0713"),
+ ("dref", "0026_auto_20220810_0441"),
+ ("dref", "0027_auto_20220810_0831"),
+ ("dref", "0028_auto_20220817_1013"),
+ ("dref", "0029_dref_is_man_made_event"),
+ ("dref", "0030_dref_is_assessment_report"),
+ ("dref", "0031_auto_20220819_0844"),
+ ("dref", "0032_auto_20220824_0446"),
+ ("dref", "0033_auto_20220907_1029"),
+ ("dref", "0034_drefoperationalupdate_is_assessment_report"),
+ ("dref", "0033_dreffileupload"),
+ ("dref", "0034_dreffileupload_dref"),
+ ("dref", "0035_merge_20220914_0638"),
+ ("dref", "0036_auto_20220914_1340"),
+ ("dref", "0037_auto_20220915_1237"),
+ ("dref", "0038_auto_20220915_1520"),
+ ("dref", "0039_alter_dref_field_report"),
+ ("dref", "0040_auto_20221010_0621"),
+ ("dref", "0041_auto_20221010_0650"),
+ ("dref", "0042_auto_20221012_0434"),
+ ("dref", "0043_delete_dreffileupload"),
+ ("dref", "0044_alter_dref_modified_at"),
+ ("dref", "0045_alter_dref_modified_at"),
+ ("dref", "0046_auto_20221202_1030"),
+ ("dref", "0047_auto_20221212_0750"),
+ ("dref", "0048_auto_20221213_0402"),
+ ("dref", "0049_auto_20221227_0501"),
+ ("dref", "0050_dref_type_of_dref"),
+ ("dref", "0051_drefoperationalupdate_type_of_dref"),
+ ("dref", "0052_dreffinalreport_type_of_dref"),
+ ("dref", "0053_auto_20230313_0834"),
+ ("dref", "0054_auto_20230329_1409"),
+ ("dref", "0055_auto_20230406_1010"),
+ ("dref", "0056_auto_20230418_0703"),
+ ("dref", "0057_auto_20230526_0414"),
+ ("dref", "0058_auto_20230529_0806"),
+ ("dref", "0059_drefoperationalupdate_identified_gaps"),
+ ("dref", "0060_dreffinalreport_date_of_approval"),
+ ("dref", "0056_auto_20230410_0720"),
+ ("dref", "0061_merge_20230614_0804"),
+ ("dref", "0057_merge_0056_auto_20230410_0720_0056_auto_20230418_0703"),
+ ("dref", "0058_auto_20230425_0428"),
+ ("dref", "0062_merge_20230614_0818"),
+ ("dref", "0061_dref_is_active"),
+ ("dref", "0062_auto_20230619_0931"),
+ ("dref", "0063_merge_20230628_1022"),
+ ("dref", "0064_dreffinalreport_financial_report_preview"),
+ ("dref", "0065_auto_20230728_0405"),
+ ("dref", "0064_auto_20230713_0601"),
+ ("dref", "0066_merge_0064_auto_20230713_0601_0065_auto_20230728_0405"),
+ ("dref", "0066_dreffinalreport_main_donors"),
+ ("dref", "0067_merge_20230811_0605"),
+ ("dref", "0068_auto_20230905_0845"),
+ ("dref", "0069_auto_20230907_1021"),
+ ("dref", "0070_dreffinalreport_operation_end_date"),
+ ("dref", "0071_auto_20230912_0438"),
+ ("dref", "0072_auto_20231117_0602_squashed_0077_auto_20231211_0426"),
+ ("dref", "0073_auto_20231214_0358"),
+ ("dref", "0074_auto_20240129_0909"),
+ ]
+
+ initial = True
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ("api", "0142_auto_20220202_0551"),
+ ("api", "0154_merge_20220513_0934"),
+ ("api", "0151_merge_20220325_1027"),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name="IdentifiedNeed",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "title",
+ models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("shelter_cluster_coordination", "Shelter Cluster Coordination"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ ("description", models.TextField(blank=True, null=True, verbose_name="description")),
+ ],
+ options={
+ "verbose_name": "identified need",
+ "verbose_name_plural": "identified needs",
+ },
+ ),
+ migrations.CreateModel(
+ name="NationalSocietyAction",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "title",
+ models.CharField(
+ choices=[
+ ("national_society_readiness", "National Society Readiness"),
+ ("assessment", "Assessment"),
+ ("coordination", "Coordination"),
+ ("resource_mobilization", "Resource Mobilization"),
+ ("activation_of_contingency_plans", "Activation Of Contingency Plans"),
+ ("national_society_eoc", "National Society EOC"),
+ ("shelter_housing_and_settlements", "Shelter, Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("other", "Other"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ ("description", models.TextField(blank=True, null=True, verbose_name="description")),
+ ],
+ options={
+ "verbose_name": "national society action",
+ "verbose_name_plural": "national society actions",
+ },
+ ),
+ migrations.CreateModel(
+ name="DrefFile",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("file", models.FileField(upload_to="dref/images/", verbose_name="file")),
+ (
+ "created_by",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="created_by",
+ ),
+ ),
+ ("caption", models.CharField(blank=True, max_length=225, null=True)),
+ ("client_id", models.CharField(blank=True, max_length=50, null=True)),
+ ],
+ options={
+ "verbose_name": "dref file",
+ "verbose_name_plural": "dref files",
+ },
+ ),
+ migrations.CreateModel(
+ name="PlannedInterventionIndicators",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=255, verbose_name="Title")),
+ ("target", models.IntegerField(blank=True, null=True, verbose_name="Target")),
+ ("actual", models.IntegerField(blank=True, null=True, verbose_name="Actual")),
+ ],
+ options={
+ "verbose_name": "planned intervention indicator",
+ "verbose_name_plural": "planned intervention indicators",
+ },
+ ),
+ migrations.CreateModel(
+ name="PlannedIntervention",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "title",
+ models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ (
+ "risk_reduction_climate_adaptation_and_recovery_",
+ "Risk Reduction, Climate Adaptation And Recovery",
+ ),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ ("description", models.TextField(blank=True, null=True, verbose_name="description")),
+ ("budget", models.IntegerField(blank=True, null=True, verbose_name="budget")),
+ ("person_targeted", models.IntegerField(blank=True, null=True, verbose_name="person targeted")),
+ ("female", models.IntegerField(blank=True, null=True, verbose_name="female")),
+ ("male", models.IntegerField(blank=True, null=True, verbose_name="male")),
+ ("progress_towards_outcome", models.TextField(blank=True, null=True, verbose_name="Progress Towards Outcome")),
+ (
+ "indicators",
+ models.ManyToManyField(blank=True, to="dref.plannedinterventionindicators", verbose_name="Indicators"),
+ ),
+ ("challenges", models.TextField(blank=True, null=True, verbose_name="Challenges")),
+ ("lessons_learnt", models.TextField(blank=True, null=True, verbose_name="Lessons learnt")),
+ (
+ "narrative_description_of_achievements",
+ models.TextField(blank=True, null=True, verbose_name="Narrative description of achievements"),
+ ),
+ ("person_assisted", models.IntegerField(blank=True, null=True, verbose_name="person assisted")),
+ ],
+ options={
+ "verbose_name": "planned intervention",
+ "verbose_name_plural": "planned interventions",
+ },
+ ),
+ migrations.CreateModel(
+ name="RiskSecurity",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("client_id", models.CharField(blank=True, max_length=50, null=True, verbose_name="client_id")),
+ ("mitigation", models.TextField(blank=True, null=True, verbose_name="Mitigation")),
+ ("risk", models.TextField(blank=True, null=True, verbose_name="Risk")),
+ ],
+ ),
+ migrations.CreateModel(
+ name="Dref",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified at")),
+ ("title", models.CharField(max_length=255, verbose_name="title")),
+ ("title_en", models.CharField(max_length=255, null=True, verbose_name="title")),
+ ("title_es", models.CharField(max_length=255, null=True, verbose_name="title")),
+ ("title_fr", models.CharField(max_length=255, null=True, verbose_name="title")),
+ ("title_ar", models.CharField(max_length=255, null=True, verbose_name="title")),
+ (
+ "type_of_onset",
+ models.IntegerField(
+ blank=True, choices=[(0, "Imminent"), (1, "Slow"), (2, "Sudden")], null=True, verbose_name="onset type"
+ ),
+ ),
+ (
+ "disaster_category",
+ models.IntegerField(
+ blank=True,
+ choices=[(0, "Yellow"), (1, "Orange"), (2, "Red")],
+ null=True,
+ verbose_name="disaster category",
+ ),
+ ),
+ (
+ "status",
+ models.IntegerField(
+ blank=True, choices=[(0, "In Progress"), (1, "Completed")], null=True, verbose_name="status"
+ ),
+ ),
+ ("num_assisted", models.IntegerField(blank=True, null=True, verbose_name="number of assisted")),
+ ("num_affected", models.IntegerField(blank=True, null=True, verbose_name="number of affected")),
+ ("amount_requested", models.IntegerField(blank=True, null=True, verbose_name="amount requested")),
+ (
+ "emergency_appeal_planned",
+ models.BooleanField(blank=True, null=True, verbose_name="emergency appeal planned "),
+ ),
+ (
+ "event_date",
+ models.DateField(
+ blank=True, help_text="Date of event/Approximate date of impact", null=True, verbose_name="event date"
+ ),
+ ),
+ ("event_text", models.TextField(blank=True, null=True, verbose_name="event text")),
+ (
+ "ns_respond_date",
+ models.DateField(
+ blank=True,
+ help_text="NS anticipatory actions started/NS response",
+ null=True,
+ verbose_name="ns respond date",
+ ),
+ ),
+ (
+ "affect_same_area",
+ models.BooleanField(
+ blank=True, help_text="Has a similar event affected the same areas in the past?", null=True
+ ),
+ ),
+ (
+ "affect_same_population",
+ models.BooleanField(blank=True, help_text="Did it affect the same population?", null=True),
+ ),
+ (
+ "affect_same_population_text",
+ models.TextField(blank=True, null=True, verbose_name="affect same population text"),
+ ),
+ ("ns_respond", models.BooleanField(blank=True, default=False, help_text="Did NS respond", null=True)),
+ (
+ "ns_request_fund",
+ models.BooleanField(blank=True, default=False, help_text="Did the NS request funding from DREF?", null=True),
+ ),
+ ("ns_request_text", models.TextField(blank=True, null=True, verbose_name="ns request text")),
+ ("dref_recurrent_text", models.TextField(blank=True, null=True, verbose_name="dref recurrent text")),
+ ("lessons_learned", models.TextField(blank=True, null=True, verbose_name="lessons learned")),
+ ("event_description", models.TextField(blank=True, null=True, verbose_name="event description")),
+ (
+ "anticipatory_actions",
+ models.TextField(
+ blank=True,
+ help_text="Description of anticipatory actions or imminent disaster",
+ null=True,
+ verbose_name="anticipatory actions",
+ ),
+ ),
+ (
+ "event_scope",
+ models.TextField(blank=True, help_text="Scope and scale of event", null=True, verbose_name="event scope"),
+ ),
+ (
+ "government_requested_assistance",
+ models.BooleanField(blank=True, help_text="Has government requested assistance", null=True),
+ ),
+ (
+ "government_requested_assistance_date",
+ models.DateField(blank=True, null=True, verbose_name="government requested assistance date"),
+ ),
+ ("national_authorities", models.TextField(blank=True, null=True, verbose_name="national authorities")),
+ ("ifrc", models.TextField(blank=True, null=True, verbose_name="ifrc")),
+ ("icrc", models.TextField(blank=True, null=True, verbose_name="icrc")),
+ ("partner_national_society", models.TextField(blank=True, null=True, verbose_name="partner national society")),
+ ("un_or_other_actor", models.TextField(blank=True, null=True, verbose_name="un or other")),
+ (
+ "major_coordination_mechanism",
+ models.TextField(
+ blank=True,
+ help_text="List major coordination mechanisms in place",
+ null=True,
+ verbose_name="major coordination mechanism",
+ ),
+ ),
+ (
+ "identified_gaps",
+ models.TextField(
+ blank=True,
+ help_text="Any identified gaps/limitations in the assessment",
+ null=True,
+ verbose_name="identified gaps",
+ ),
+ ),
+ ("people_assisted", models.TextField(blank=True, null=True, verbose_name="people assisted")),
+ (
+ "selection_criteria",
+ models.TextField(
+ blank=True,
+ help_text="Selection criteria for affected people",
+ null=True,
+ verbose_name="selection criteria",
+ ),
+ ),
+ (
+ "entity_affected",
+ models.TextField(
+ blank=True,
+ help_text="Protection, gender, Inclusion affected in this process",
+ null=True,
+ verbose_name="entity affected",
+ ),
+ ),
+ (
+ "community_involved",
+ models.TextField(
+ blank=True,
+ help_text="Community been involved in the analysis of the process",
+ null=True,
+ verbose_name="community involved",
+ ),
+ ),
+ ("women", models.IntegerField(blank=True, null=True, verbose_name="women")),
+ ("men", models.IntegerField(blank=True, null=True, verbose_name="men")),
+ ("girls", models.IntegerField(blank=True, help_text="Girls under 18", null=True, verbose_name="girls")),
+ ("boys", models.IntegerField(blank=True, help_text="Boys under 18", null=True, verbose_name="boys")),
+ (
+ "disability_people_per",
+ models.DecimalField(
+ blank=True,
+ decimal_places=2,
+ help_text="Estimated % people disability",
+ max_digits=5,
+ null=True,
+ verbose_name="disability people per",
+ ),
+ ),
+ (
+ "people_per_urban",
+ models.DecimalField(
+ blank=True,
+ decimal_places=2,
+ help_text="Estimated % people Urban",
+ max_digits=5,
+ null=True,
+ verbose_name="people per urban",
+ ),
+ ),
+ (
+ "people_per_local",
+ models.DecimalField(
+ blank=True,
+ decimal_places=2,
+ help_text="Estimated % people Rural",
+ max_digits=5,
+ null=True,
+ verbose_name="people per local",
+ ),
+ ),
+ (
+ "people_targeted_with_early_actions",
+ models.IntegerField(
+ blank=True,
+ help_text="Number of persons targeted with early actions",
+ null=True,
+ verbose_name="people targeted with early actions",
+ ),
+ ),
+ (
+ "displaced_people",
+ models.IntegerField(
+ blank=True, help_text="Estimated number of displaced people", null=True, verbose_name="displaced people"
+ ),
+ ),
+ (
+ "operation_objective",
+ models.TextField(
+ blank=True, help_text="Overall objective of the operation", null=True, verbose_name="operation objective"
+ ),
+ ),
+ ("response_strategy", models.TextField(blank=True, null=True, verbose_name="response strategy")),
+ ("ns_request_date", models.DateField(blank=True, null=True, verbose_name="ns request date")),
+ ("submission_to_geneva", models.DateField(blank=True, null=True, verbose_name="submission to geneva")),
+ ("date_of_approval", models.DateField(blank=True, null=True, verbose_name="date of approval")),
+ ("end_date", models.DateField(blank=True, null=True, verbose_name="end date")),
+ ("publishing_date", models.DateField(blank=True, null=True, verbose_name="publishing date")),
+ ("operation_timeframe", models.IntegerField(blank=True, null=True, verbose_name="operation timeframe")),
+ ("appeal_code", models.CharField(blank=True, max_length=255, null=True, verbose_name="appeal code")),
+ ("glide_code", models.CharField(blank=True, max_length=255, null=True, verbose_name="glide number")),
+ (
+ "ifrc_appeal_manager_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc appeal manager name"),
+ ),
+ (
+ "ifrc_appeal_manager_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc appeal manager email"),
+ ),
+ (
+ "ifrc_appeal_manager_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc appeal manager title"),
+ ),
+ (
+ "ifrc_appeal_manager_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="ifrc appeal manager phone number"),
+ ),
+ (
+ "ifrc_project_manager_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc project manager name"),
+ ),
+ (
+ "ifrc_project_manager_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc project manager email"),
+ ),
+ (
+ "ifrc_project_manager_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc project manager title"),
+ ),
+ (
+ "ifrc_project_manager_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="ifrc project manager phone number"),
+ ),
+ (
+ "national_society_contact_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="national society contact name"),
+ ),
+ (
+ "national_society_contact_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="national society contact email"),
+ ),
+ (
+ "national_society_contact_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="national society contact title"),
+ ),
+ (
+ "national_society_contact_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="national society contact phone number"),
+ ),
+ (
+ "media_contact_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="media contact name"),
+ ),
+ (
+ "media_contact_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="media contact email"),
+ ),
+ (
+ "media_contact_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="media contact title"),
+ ),
+ (
+ "media_contact_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="media_contact phone number"),
+ ),
+ (
+ "ifrc_emergency_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc emergency name"),
+ ),
+ (
+ "ifrc_emergency_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc emergency email"),
+ ),
+ (
+ "ifrc_emergency_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc emergency title"),
+ ),
+ (
+ "ifrc_emergency_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="ifrc emergency phone number"),
+ ),
+ ("originator_name", models.CharField(blank=True, max_length=255, null=True, verbose_name="originator name")),
+ ("originator_email", models.CharField(blank=True, max_length=255, null=True, verbose_name="originator email")),
+ ("originator_title", models.CharField(blank=True, max_length=255, null=True, verbose_name="originator title")),
+ (
+ "originator_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="originator phone number"),
+ ),
+ (
+ "human_resource",
+ models.TextField(
+ blank=True,
+ help_text="how many volunteers and staff involved in the response?",
+ null=True,
+ verbose_name="human resource",
+ ),
+ ),
+ (
+ "surge_personnel_deployed",
+ models.TextField(
+ blank=True,
+ help_text="Will a Surge personnel be deployed?",
+ null=True,
+ verbose_name="surge personnel deployed",
+ ),
+ ),
+ (
+ "logistic_capacity_of_ns",
+ models.TextField(
+ blank=True,
+ help_text="what is the logistics capacity of the National Society?",
+ null=True,
+ verbose_name="logistic capacity of ns",
+ ),
+ ),
+ (
+ "safety_concerns",
+ models.TextField(
+ blank=True,
+ help_text="Are there any safety/security concerns which may impact the implementation of this operation?",
+ null=True,
+ verbose_name="safety concerns",
+ ),
+ ),
+ (
+ "pmer",
+ models.TextField(blank=True, help_text="Does the NS have PMER capacity?", null=True, verbose_name="pmer"),
+ ),
+ (
+ "communication",
+ models.TextField(
+ blank=True, help_text="Does the NS have Communications capacity?", null=True, verbose_name="organization"
+ ),
+ ),
+ (
+ "budget_file_preview",
+ models.FileField(blank=True, null=True, upload_to="dref/images/", verbose_name="budget file preview"),
+ ),
+ (
+ "budget_file",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="budget_file_dref",
+ to="dref.dreffile",
+ verbose_name="budget file",
+ ),
+ ),
+ (
+ "cover_image",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="cover_image_dref",
+ to="dref.dreffile",
+ verbose_name="cover image",
+ ),
+ ),
+ (
+ "created_by",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="created_by_dref",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="created by",
+ ),
+ ),
+ (
+ "disaster_type",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.disastertype",
+ verbose_name="disaster type",
+ ),
+ ),
+ (
+ "event_map",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="event_map_dref",
+ to="dref.dreffile",
+ verbose_name="event map",
+ ),
+ ),
+ (
+ "field_report",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="field_report_dref",
+ to="api.fieldreport",
+ verbose_name="field report",
+ ),
+ ),
+ (
+ "images",
+ models.ManyToManyField(blank=True, related_name="image_dref", to="dref.dreffile", verbose_name="images"),
+ ),
+ (
+ "modified_by",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="modified_by_dref",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="modified by",
+ ),
+ ),
+ (
+ "national_society",
+ models.ForeignKey(
+ default=1, on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="national_society"
+ ),
+ ),
+ (
+ "national_society_actions",
+ models.ManyToManyField(blank=True, to="dref.nationalsocietyaction", verbose_name="national society actions"),
+ ),
+ (
+ "needs_identified",
+ models.ManyToManyField(blank=True, to="dref.identifiedneed", verbose_name="needs identified"),
+ ),
+ (
+ "planned_interventions",
+ models.ManyToManyField(blank=True, to="dref.plannedintervention", verbose_name="planned intervention"),
+ ),
+ (
+ "users",
+ models.ManyToManyField(
+ blank=True, related_name="user_dref", to=settings.AUTH_USER_MODEL, verbose_name="users"
+ ),
+ ),
+ (
+ "total_targeted_population",
+ models.IntegerField(
+ blank=True,
+ help_text="Estimated number of targeted people",
+ null=True,
+ verbose_name="total targeted population",
+ ),
+ ),
+ ("is_published", models.BooleanField(default=False, verbose_name="Is published")),
+ ("is_final_report_created", models.BooleanField(default=False, verbose_name="Is final report created")),
+ (
+ "assessment_report",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="dref_assessment_report",
+ to="dref.dreffile",
+ verbose_name="Assessment Report",
+ ),
+ ),
+ (
+ "country",
+ models.ForeignKey(
+ blank=True,
+ help_text="Affected County",
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="dref_country",
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ ("district", models.ManyToManyField(blank=True, to="api.district", verbose_name="district")),
+ (
+ "is_surge_personnel_deployed",
+ models.BooleanField(blank=True, null=True, verbose_name="Is surge personnel deployed"),
+ ),
+ ("risk_security", models.ManyToManyField(blank=True, to="dref.risksecurity", verbose_name="Risk Security")),
+ (
+ "is_there_major_coordination_mechanism",
+ models.BooleanField(blank=True, null=True, verbose_name="Is major coordination mechanism"),
+ ),
+ ("did_national_society", models.BooleanField(blank=True, null=True, verbose_name="Did National Society")),
+ ("title_prefix", models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix")),
+ ("risk_security_concern", models.TextField(blank=True, null=True, verbose_name="Risk Security Concern")),
+ (
+ "supporting_document",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="dref_supporting_document",
+ to="dref.dreffile",
+ verbose_name="Supporting Document",
+ ),
+ ),
+ ("people_in_need", models.IntegerField(blank=True, null=True, verbose_name="people in need")),
+ ("is_assessment_report", models.BooleanField(default=False, verbose_name="Is assessment Report")),
+ ("is_man_made_event", models.BooleanField(blank=True, null=True, verbose_name="Is Man-made Event")),
+ (
+ "type_of_dref",
+ models.IntegerField(
+ blank=True,
+ choices=[(0, "Imminent"), (1, "Assessment"), (2, "Response")],
+ null=True,
+ verbose_name="dref type",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "dref",
+ "verbose_name_plural": "drefs",
+ },
+ ),
+ migrations.CreateModel(
+ name="DrefOperationalUpdate",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified at")),
+ ("title", models.CharField(blank=True, max_length=255, null=True, verbose_name="title")),
+ (
+ "type_of_onset",
+ models.IntegerField(
+ blank=True, choices=[(0, "Imminent"), (1, "Slow"), (2, "Sudden")], null=True, verbose_name="onset type"
+ ),
+ ),
+ (
+ "disaster_category",
+ models.IntegerField(
+ blank=True,
+ choices=[(0, "Yellow"), (1, "Orange"), (2, "Red")],
+ null=True,
+ verbose_name="disaster category",
+ ),
+ ),
+ (
+ "number_of_people_affected",
+ models.IntegerField(blank=True, null=True, verbose_name="number of people affected"),
+ ),
+ ("dref_allocated_so_far", models.IntegerField(blank=True, null=True, verbose_name="Dref allocated so far")),
+ ("additional_allocation", models.IntegerField(blank=True, null=True, verbose_name="Additional allocation")),
+ ("total_dref_allocation", models.IntegerField(blank=True, null=True, verbose_name="Total dref allocation")),
+ (
+ "emergency_appeal_planned",
+ models.BooleanField(blank=True, null=True, verbose_name="emergency appeal planned "),
+ ),
+ (
+ "operational_update_number",
+ models.IntegerField(blank=True, null=True, verbose_name="Operational Update Number"),
+ ),
+ ("reporting_timeframe", models.DateField(blank=True, null=True, verbose_name="Reporting Timeframe")),
+ ("update_date", models.DateField(blank=True, null=True, verbose_name="Update Date")),
+ (
+ "is_timeframe_extension_required",
+ models.BooleanField(blank=True, null=True, verbose_name="Is Timeframe Extension Required"),
+ ),
+ ("new_operational_end_date", models.DateField(blank=True, null=True, verbose_name="New Operation End Date")),
+ (
+ "total_operation_timeframe",
+ models.IntegerField(blank=True, null=True, verbose_name="Total Operation Timeframe"),
+ ),
+ ("appeal_code", models.CharField(blank=True, max_length=255, null=True, verbose_name="appeal code")),
+ ("glide_code", models.CharField(blank=True, max_length=255, null=True, verbose_name="glide number")),
+ (
+ "ifrc_appeal_manager_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc appeal manager name"),
+ ),
+ (
+ "ifrc_appeal_manager_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc appeal manager email"),
+ ),
+ (
+ "ifrc_appeal_manager_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc appeal manager title"),
+ ),
+ (
+ "ifrc_appeal_manager_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="ifrc appeal manager phone number"),
+ ),
+ (
+ "ifrc_project_manager_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc project manager name"),
+ ),
+ (
+ "ifrc_project_manager_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc project manager email"),
+ ),
+ (
+ "ifrc_project_manager_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc project manager title"),
+ ),
+ (
+ "ifrc_project_manager_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="ifrc project manager phone number"),
+ ),
+ (
+ "national_society_contact_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="national society contact name"),
+ ),
+ (
+ "national_society_contact_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="national society contact email"),
+ ),
+ (
+ "national_society_contact_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="national society contact title"),
+ ),
+ (
+ "national_society_contact_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="national society contact phone number"),
+ ),
+ (
+ "media_contact_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="media contact name"),
+ ),
+ (
+ "media_contact_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="media contact email"),
+ ),
+ (
+ "media_contact_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="media contact title"),
+ ),
+ (
+ "media_contact_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="media_contact phone number"),
+ ),
+ (
+ "ifrc_emergency_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc emergency name"),
+ ),
+ (
+ "ifrc_emergency_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc emergency email"),
+ ),
+ (
+ "ifrc_emergency_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc emergency title"),
+ ),
+ (
+ "ifrc_emergency_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="ifrc emergency phone number"),
+ ),
+ (
+ "changing_timeframe_operation",
+ models.BooleanField(blank=True, null=True, verbose_name="Changing time operation"),
+ ),
+ (
+ "changing_operation_strategy",
+ models.BooleanField(blank=True, null=True, verbose_name="Changing operation strategy"),
+ ),
+ (
+ "changing_target_population_of_operation",
+ models.BooleanField(blank=True, null=True, verbose_name="Changing target population of operation"),
+ ),
+ (
+ "changing_geographic_location",
+ models.BooleanField(blank=True, null=True, verbose_name="Changing geographic location"),
+ ),
+ ("changing_budget", models.BooleanField(blank=True, null=True, verbose_name="Changing budget")),
+ (
+ "request_for_second_allocation",
+ models.BooleanField(blank=True, null=True, verbose_name="Request for second allocation"),
+ ),
+ ("summary_of_change", models.TextField(blank=True, null=True, verbose_name="Summary of change")),
+ ("ifrc", models.TextField(blank=True, null=True, verbose_name="ifrc")),
+ ("icrc", models.TextField(blank=True, null=True, verbose_name="icrc")),
+ ("partner_national_society", models.TextField(blank=True, null=True, verbose_name="partner national society")),
+ (
+ "government_requested_assistance",
+ models.BooleanField(blank=True, help_text="Has government requested assistance", null=True),
+ ),
+ ("national_authorities", models.TextField(blank=True, null=True, verbose_name="national authorities")),
+ ("un_or_other_actor", models.TextField(blank=True, null=True, verbose_name="un or other")),
+ (
+ "major_coordination_mechanism",
+ models.TextField(blank=True, null=True, verbose_name="major coordination mechanism"),
+ ),
+ ("people_assisted", models.TextField(blank=True, null=True, verbose_name="people assisted")),
+ (
+ "selection_criteria",
+ models.TextField(
+ blank=True,
+ help_text="Selection criteria for affected people",
+ null=True,
+ verbose_name="selection criteria",
+ ),
+ ),
+ (
+ "community_involved",
+ models.TextField(
+ blank=True,
+ help_text="Community been involved in the analysis of the process",
+ null=True,
+ verbose_name="community involved",
+ ),
+ ),
+ ("women", models.IntegerField(blank=True, null=True, verbose_name="women")),
+ ("men", models.IntegerField(blank=True, null=True, verbose_name="men")),
+ ("girls", models.IntegerField(blank=True, help_text="Girls under 18", null=True, verbose_name="girls")),
+ ("boys", models.IntegerField(blank=True, help_text="Boys under 18", null=True, verbose_name="boys")),
+ (
+ "disability_people_per",
+ models.DecimalField(
+ blank=True, decimal_places=2, max_digits=5, null=True, verbose_name="disability people per"
+ ),
+ ),
+ (
+ "people_per_urban",
+ models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name="people per urban"),
+ ),
+ (
+ "people_per_local",
+ models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name="people per local"),
+ ),
+ (
+ "people_targeted_with_early_actions",
+ models.IntegerField(blank=True, null=True, verbose_name="people targeted with early actions"),
+ ),
+ ("displaced_people", models.IntegerField(blank=True, null=True, verbose_name="displaced people")),
+ ("operation_objective", models.TextField(blank=True, null=True, verbose_name="operation objective")),
+ ("response_strategy", models.TextField(blank=True, null=True, verbose_name="response strategy")),
+ ("is_published", models.BooleanField(default=False, verbose_name="Is published")),
+ (
+ "created_by",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="created_by_dref_operational_update",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="created by",
+ ),
+ ),
+ (
+ "disaster_type",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.disastertype",
+ verbose_name="disaster type",
+ ),
+ ),
+ ("dref", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="dref.dref", verbose_name="Dref")),
+ (
+ "images",
+ models.ManyToManyField(
+ blank=True, related_name="image_dref_operational_update", to="dref.dreffile", verbose_name="images"
+ ),
+ ),
+ (
+ "modified_by",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="modified_by_dref_operational_update",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="modified by",
+ ),
+ ),
+ (
+ "national_society",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="national_society_operational_update",
+ to="api.country",
+ verbose_name="national_society",
+ ),
+ ),
+ (
+ "national_society_actions",
+ models.ManyToManyField(blank=True, to="dref.nationalsocietyaction", verbose_name="national society actions"),
+ ),
+ (
+ "needs_identified",
+ models.ManyToManyField(blank=True, to="dref.identifiedneed", verbose_name="needs identified"),
+ ),
+ (
+ "planned_interventions",
+ models.ManyToManyField(blank=True, to="dref.plannedintervention", verbose_name="planned intervention"),
+ ),
+ (
+ "number_of_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="Number of people targeted"),
+ ),
+ (
+ "entity_affected",
+ models.TextField(
+ blank=True,
+ help_text="Protection, gender, Inclusion affected in this process",
+ null=True,
+ verbose_name="entity affected",
+ ),
+ ),
+ ("new_operational_start_date", models.DateField(blank=True, null=True, verbose_name="New Operation Start Date")),
+ ("anticipatory_actions", models.TextField(blank=True, null=True, verbose_name="Anticipatory actions")),
+ (
+ "budget_file",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="budget_file_dref_operational_update",
+ to="dref.dreffile",
+ verbose_name="budget file",
+ ),
+ ),
+ (
+ "cover_image",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="cover_image_dref_operational_update",
+ to="dref.dreffile",
+ verbose_name="cover image",
+ ),
+ ),
+ ("event_description", models.TextField(blank=True, null=True, verbose_name="Event description")),
+ ("event_scope", models.TextField(blank=True, null=True, verbose_name="Event scope")),
+ ("has_change_since_request", models.BooleanField(blank=True, null=True, verbose_name="Has change since request")),
+ (
+ "photos",
+ models.ManyToManyField(
+ blank=True, related_name="photos_dref_operational_update", to="dref.dreffile", verbose_name="images"
+ ),
+ ),
+ (
+ "assessment_report",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="dref_operational_update_assessment_report",
+ to="dref.dreffile",
+ verbose_name="Assessment Report",
+ ),
+ ),
+ (
+ "country",
+ models.ForeignKey(
+ blank=True,
+ help_text="Affected County",
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="operational_update_country",
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ ("district", models.ManyToManyField(blank=True, to="api.district", verbose_name="district")),
+ (
+ "is_there_major_coordination_mechanism",
+ models.BooleanField(blank=True, help_text="Is there major coordinate mechanism", null=True),
+ ),
+ (
+ "is_there_un_or_other_actor",
+ models.BooleanField(blank=True, null=True, verbose_name="Is there un_or_other_actor"),
+ ),
+ ("title_prefix", models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix")),
+ (
+ "anticipatory_to_response",
+ models.TextField(
+ blank=True,
+ null=True,
+ verbose_name="Please explain how is the operation is transitioning from Anticipatory to Response",
+ ),
+ ),
+ (
+ "event_map",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="event_map_dref_operational_update",
+ to="dref.dreffile",
+ verbose_name="event map",
+ ),
+ ),
+ (
+ "has_forecasted_event_materialize",
+ models.BooleanField(blank=True, null=True, verbose_name="Has Forecasted Event Materialize"),
+ ),
+ ("risk_security", models.ManyToManyField(blank=True, to="dref.risksecurity", verbose_name="Risk Security")),
+ ("risk_security_concern", models.TextField(blank=True, null=True, verbose_name="Risk Security Concern")),
+ ("specified_trigger_met", models.TextField(blank=True, null=True, verbose_name="Specified Trigger Met")),
+ (
+ "users",
+ models.ManyToManyField(
+ blank=True, related_name="user_dref_operational_update", to=settings.AUTH_USER_MODEL, verbose_name="users"
+ ),
+ ),
+ ("is_assessment_report", models.BooleanField(blank=True, null=True, verbose_name="Is assessment Report")),
+ ("event_date", models.DateField(blank=True, null=True, verbose_name="event date")),
+ ("ns_respond", models.BooleanField(blank=True, default=False, help_text="Did NS respond", null=True)),
+ ("ns_respond_date", models.DateField(blank=True, null=True, verbose_name="ns respond date")),
+ ("people_in_need", models.IntegerField(blank=True, null=True, verbose_name="people in need")),
+ ("reporting_end_date", models.DateField(blank=True, null=True, verbose_name="Reporting Time End Date")),
+ ("reporting_start_date", models.DateField(blank=True, null=True, verbose_name="Reporting Time Start Date")),
+ (
+ "total_targeted_population",
+ models.IntegerField(blank=True, null=True, verbose_name="total targeted population"),
+ ),
+ (
+ "communication",
+ models.TextField(
+ blank=True, help_text="Does the NS have Communications capacity?", null=True, verbose_name="organization"
+ ),
+ ),
+ (
+ "human_resource",
+ models.TextField(
+ blank=True,
+ help_text="how many volunteers and staff involved in the response?",
+ null=True,
+ verbose_name="human resource",
+ ),
+ ),
+ (
+ "is_surge_personnel_deployed",
+ models.BooleanField(blank=True, null=True, verbose_name="Is surge personnel deployed"),
+ ),
+ (
+ "logistic_capacity_of_ns",
+ models.TextField(
+ blank=True,
+ help_text="what is the logistics capacity of the National Society?",
+ null=True,
+ verbose_name="logistic capacity of ns",
+ ),
+ ),
+ (
+ "pmer",
+ models.TextField(blank=True, help_text="Does the NS have PMER capacity?", null=True, verbose_name="pmer"),
+ ),
+ (
+ "safety_concerns",
+ models.TextField(
+ blank=True,
+ help_text="Are there any safety/security concerns which may impact the implementation of this operation?",
+ null=True,
+ verbose_name="safety concerns",
+ ),
+ ),
+ (
+ "surge_personnel_deployed",
+ models.TextField(
+ blank=True,
+ help_text="Will a Surge personnel be deployed?",
+ null=True,
+ verbose_name="surge personnel deployed",
+ ),
+ ),
+ ("has_event_occurred", models.BooleanField(blank=True, help_text="Has Event occurred", null=True)),
+ ],
+ options={
+ "verbose_name": "Dref Operational Update",
+ "verbose_name_plural": "Dref Operational Updates",
+ },
+ ),
+ migrations.CreateModel(
+ name="DrefFinalReport",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified at")),
+ ("title", models.CharField(blank=True, max_length=255, null=True, verbose_name="title")),
+ (
+ "type_of_onset",
+ models.IntegerField(
+ blank=True, choices=[(0, "Imminent"), (1, "Slow"), (2, "Sudden")], null=True, verbose_name="onset type"
+ ),
+ ),
+ (
+ "disaster_category",
+ models.IntegerField(
+ blank=True,
+ choices=[(0, "Yellow"), (1, "Orange"), (2, "Red")],
+ null=True,
+ verbose_name="disaster category",
+ ),
+ ),
+ (
+ "number_of_people_targeted",
+ models.IntegerField(blank=True, null=True, verbose_name="Number of people targeted"),
+ ),
+ ("total_dref_allocation", models.IntegerField(blank=True, null=True, verbose_name="Total dref allocation")),
+ ("date_of_publication", models.DateField(blank=True, null=True, verbose_name="Date of publication")),
+ (
+ "total_operation_timeframe",
+ models.IntegerField(blank=True, null=True, verbose_name="Total Operation Timeframe"),
+ ),
+ ("operation_start_date", models.DateField(blank=True, null=True, verbose_name="Operation Start Date")),
+ ("appeal_code", models.CharField(blank=True, max_length=255, null=True, verbose_name="appeal code")),
+ ("glide_code", models.CharField(blank=True, max_length=255, null=True, verbose_name="glide number")),
+ (
+ "ifrc_appeal_manager_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc appeal manager name"),
+ ),
+ (
+ "ifrc_appeal_manager_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc appeal manager email"),
+ ),
+ (
+ "ifrc_appeal_manager_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc appeal manager title"),
+ ),
+ (
+ "ifrc_appeal_manager_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="ifrc appeal manager phone number"),
+ ),
+ (
+ "ifrc_project_manager_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc project manager name"),
+ ),
+ (
+ "ifrc_project_manager_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc project manager email"),
+ ),
+ (
+ "ifrc_project_manager_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc project manager title"),
+ ),
+ (
+ "ifrc_project_manager_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="ifrc project manager phone number"),
+ ),
+ (
+ "national_society_contact_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="national society contact name"),
+ ),
+ (
+ "national_society_contact_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="national society contact email"),
+ ),
+ (
+ "national_society_contact_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="national society contact title"),
+ ),
+ (
+ "national_society_contact_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="national society contact phone number"),
+ ),
+ (
+ "ifrc_emergency_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc emergency name"),
+ ),
+ (
+ "ifrc_emergency_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc emergency email"),
+ ),
+ (
+ "ifrc_emergency_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="ifrc emergency title"),
+ ),
+ (
+ "ifrc_emergency_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="ifrc emergency phone number"),
+ ),
+ (
+ "media_contact_name",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="media contact name"),
+ ),
+ (
+ "media_contact_email",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="media contact email"),
+ ),
+ (
+ "media_contact_title",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="media contact title"),
+ ),
+ (
+ "media_contact_phone_number",
+ models.CharField(blank=True, max_length=100, null=True, verbose_name="media_contact phone number"),
+ ),
+ ("event_description", models.TextField(blank=True, null=True, verbose_name="Event description")),
+ ("anticipatory_actions", models.TextField(blank=True, null=True, verbose_name="Anticipatory actions")),
+ ("event_scope", models.TextField(blank=True, null=True, verbose_name="Event scope")),
+ ("ifrc", models.TextField(blank=True, null=True, verbose_name="ifrc")),
+ ("icrc", models.TextField(blank=True, null=True, verbose_name="icrc")),
+ ("partner_national_society", models.TextField(blank=True, null=True, verbose_name="partner national society")),
+ (
+ "government_requested_assistance",
+ models.BooleanField(blank=True, help_text="Has government requested assistance", null=True),
+ ),
+ ("national_authorities", models.TextField(blank=True, null=True, verbose_name="national authorities")),
+ ("un_or_other_actor", models.TextField(blank=True, null=True, verbose_name="un or other")),
+ (
+ "major_coordination_mechanism",
+ models.TextField(blank=True, null=True, verbose_name="major coordination mechanism"),
+ ),
+ ("people_assisted", models.TextField(blank=True, null=True, verbose_name="people assisted")),
+ (
+ "selection_criteria",
+ models.TextField(
+ blank=True,
+ help_text="Selection criteria for affected people",
+ null=True,
+ verbose_name="selection criteria",
+ ),
+ ),
+ (
+ "community_involved",
+ models.TextField(
+ blank=True,
+ help_text="Community been involved in the analysis of the process",
+ null=True,
+ verbose_name="community involved",
+ ),
+ ),
+ (
+ "entity_affected",
+ models.TextField(
+ blank=True,
+ help_text="Protection, gender, Inclusion affected in this process",
+ null=True,
+ verbose_name="entity affected",
+ ),
+ ),
+ (
+ "change_in_operational_strategy",
+ models.BooleanField(default=False, verbose_name="Change in operational strategy"),
+ ),
+ (
+ "change_in_operational_strategy_text",
+ models.TextField(blank=True, null=True, verbose_name="Change in operational strategy"),
+ ),
+ ("women", models.IntegerField(blank=True, null=True, verbose_name="women")),
+ ("men", models.IntegerField(blank=True, null=True, verbose_name="men")),
+ ("girls", models.IntegerField(blank=True, help_text="Girls under 18", null=True, verbose_name="girls")),
+ ("boys", models.IntegerField(blank=True, help_text="Boys under 18", null=True, verbose_name="boys")),
+ (
+ "disability_people_per",
+ models.DecimalField(
+ blank=True, decimal_places=2, max_digits=5, null=True, verbose_name="disability people per"
+ ),
+ ),
+ (
+ "people_per_urban",
+ models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name="people per urban"),
+ ),
+ (
+ "people_per_local",
+ models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name="people per local"),
+ ),
+ (
+ "people_targeted_with_early_actions",
+ models.IntegerField(blank=True, null=True, verbose_name="people targeted with early actions"),
+ ),
+ ("displaced_people", models.IntegerField(blank=True, null=True, verbose_name="displaced people")),
+ ("operation_objective", models.TextField(blank=True, null=True, verbose_name="operation objective")),
+ ("response_strategy", models.TextField(blank=True, null=True, verbose_name="response strategy")),
+ ("want_to_report", models.BooleanField(default=False, verbose_name="Want to report")),
+ (
+ "additional_national_society_actions",
+ models.TextField(blank=True, null=True, verbose_name="Additional National Societies Actions"),
+ ),
+ (
+ "created_by",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="created_by_dref_final_report",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="created by",
+ ),
+ ),
+ (
+ "disaster_type",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.disastertype",
+ verbose_name="disaster type",
+ ),
+ ),
+ ("dref", models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to="dref.dref", verbose_name="Dref")),
+ (
+ "event_map",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="event_map_dref_final_report",
+ to="dref.dreffile",
+ verbose_name="event map",
+ ),
+ ),
+ (
+ "modified_by",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="modified_by_dref_final_report",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="modified by",
+ ),
+ ),
+ (
+ "national_society",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="national_society_final_report",
+ to="api.country",
+ verbose_name="national_society",
+ ),
+ ),
+ (
+ "needs_identified",
+ models.ManyToManyField(blank=True, to="dref.identifiedneed", verbose_name="needs identified"),
+ ),
+ (
+ "photos",
+ models.ManyToManyField(
+ blank=True, related_name="photos_dref_final_report", to="dref.dreffile", verbose_name="images"
+ ),
+ ),
+ (
+ "planned_interventions",
+ models.ManyToManyField(blank=True, to="dref.plannedintervention", verbose_name="planned intervention"),
+ ),
+ ("is_published", models.BooleanField(default=False, verbose_name="Is Published")),
+ (
+ "number_of_people_affected",
+ models.IntegerField(blank=True, null=True, verbose_name="number of people affected"),
+ ),
+ (
+ "assessment_report",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="dref_final_report_assessment_report",
+ to="dref.dreffile",
+ verbose_name="Assessment Report",
+ ),
+ ),
+ (
+ "country",
+ models.ForeignKey(
+ blank=True,
+ help_text="Affected County",
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="final_report_country",
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ ("district", models.ManyToManyField(blank=True, to="api.district", verbose_name="district")),
+ ("title_prefix", models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix")),
+ (
+ "cover_image",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="cover_image_dref_final_report",
+ to="dref.dreffile",
+ verbose_name="cover image",
+ ),
+ ),
+ (
+ "images",
+ models.ManyToManyField(
+ blank=True, related_name="image_dref_final_report", to="dref.dreffile", verbose_name="images"
+ ),
+ ),
+ ("is_assessment_report", models.BooleanField(blank=True, null=True, verbose_name="Is assessment Report")),
+ (
+ "is_there_major_coordination_mechanism",
+ models.BooleanField(blank=True, help_text="Is there major coordinate mechanism", null=True),
+ ),
+ ("risk_security", models.ManyToManyField(blank=True, to="dref.risksecurity", verbose_name="Risk Security")),
+ ("risk_security_concern", models.TextField(blank=True, null=True, verbose_name="Risk Security Concern")),
+ (
+ "total_targeted_population",
+ models.IntegerField(blank=True, null=True, verbose_name="total targeted population"),
+ ),
+ (
+ "users",
+ models.ManyToManyField(
+ blank=True, related_name="user_dref_final_report", to=settings.AUTH_USER_MODEL, verbose_name="users"
+ ),
+ ),
+ (
+ "event_date",
+ models.DateField(
+ blank=True, help_text="Date of event/Approximate date of impact", null=True, verbose_name="event date"
+ ),
+ ),
+ (
+ "national_society_actions",
+ models.ManyToManyField(blank=True, to="dref.nationalsocietyaction", verbose_name="national society actions"),
+ ),
+ ("people_in_need", models.IntegerField(blank=True, null=True, verbose_name="people in need")),
+ ("did_national_society", models.BooleanField(blank=True, null=True, verbose_name="Did National Society")),
+ ("event_text", models.TextField(blank=True, null=True, verbose_name="event text")),
+ (
+ "ns_respond_date",
+ models.DateField(
+ blank=True,
+ help_text="NS anticipatory actions started/NS response",
+ null=True,
+ verbose_name="ns respond date",
+ ),
+ ),
+ (
+ "financial_report",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="financial_report_dref_final_report",
+ to="dref.dreffile",
+ verbose_name="financial report",
+ ),
+ ),
+ (
+ "financial_report_description",
+ models.TextField(blank=True, null=True, verbose_name="Financial Report Description"),
+ ),
+ (
+ "has_national_society_conducted",
+ models.BooleanField(blank=True, null=True, verbose_name="Has national society conducted any intervention"),
+ ),
+ (
+ "national_society_conducted_description",
+ models.TextField(blank=True, null=True, verbose_name="National Society conducted description"),
+ ),
+ ("num_assisted", models.IntegerField(blank=True, null=True, verbose_name="number of assisted")),
+ ],
+ options={
+ "verbose_name": "Dref Final Report",
+ "verbose_name_plural": "Dref Final Reports",
+ },
+ ),
+ migrations.RunSQL(
+ sql=[
+ "update dref_dref set type_of_dref = 2",
+ "update dref_dref set type_of_dref = 0 where type_of_onset=0",
+ "update dref_dref set type_of_dref = 1 where is_assessment_report",
+ ],
+ reverse_sql=["update dref_dref set type_of_dref = NULL"],
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="type_of_dref",
+ field=models.IntegerField(
+ blank=True, choices=[(0, "Imminent"), (1, "Assessment"), (2, "Response")], null=True, verbose_name="dref type"
+ ),
+ ),
+ migrations.RunSQL(
+ sql=[
+ "update dref_drefoperationalupdate set type_of_dref = 2",
+ "update dref_drefoperationalupdate set type_of_dref = 0 where type_of_onset=0",
+ "update dref_drefoperationalupdate set type_of_dref = 1 where is_assessment_report",
+ ],
+ reverse_sql=["update dref_drefoperationalupdate set type_of_dref = NULL"],
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="type_of_dref",
+ field=models.IntegerField(
+ blank=True, choices=[(0, "Imminent"), (1, "Assessment"), (2, "Response")], null=True, verbose_name="dref type"
+ ),
+ ),
+ migrations.RunSQL(
+ sql=[
+ "update dref_dreffinalreport set type_of_dref = 2",
+ "update dref_dreffinalreport set type_of_dref = 0 where type_of_onset=0",
+ "update dref_dreffinalreport set type_of_dref = 1 where is_assessment_report",
+ ],
+ reverse_sql=["update dref_dreffinalreport set type_of_dref = NULL"],
+ ),
+ migrations.RenameField(
+ model_name="dref",
+ old_name="affect_same_area",
+ new_name="did_it_affect_same_area",
+ ),
+ migrations.RenameField(
+ model_name="dref",
+ old_name="affect_same_population",
+ new_name="did_it_affect_same_population",
+ ),
+ migrations.RenameField(
+ model_name="dref",
+ old_name="ns_request_fund",
+ new_name="did_ns_request_fund",
+ ),
+ migrations.RenameField(
+ model_name="dref",
+ old_name="ns_respond",
+ new_name="did_ns_respond",
+ ),
+ migrations.RenameField(
+ model_name="drefoperationalupdate",
+ old_name="ns_respond",
+ new_name="did_ns_respond",
+ ),
+ migrations.RemoveField(
+ model_name="dref",
+ name="is_assessment_report",
+ ),
+ migrations.RemoveField(
+ model_name="dreffinalreport",
+ name="is_assessment_report",
+ ),
+ migrations.RemoveField(
+ model_name="drefoperationalupdate",
+ name="is_assessment_report",
+ ),
+ migrations.AlterField(
+ model_name="dref",
+ name="type_of_onset",
+ field=models.IntegerField(blank=True, choices=[(1, "Slow"), (2, "Sudden")], null=True, verbose_name="onset type"),
+ ),
+ migrations.AlterField(
+ model_name="dreffinalreport",
+ name="type_of_onset",
+ field=models.IntegerField(blank=True, choices=[(1, "Slow"), (2, "Sudden")], null=True, verbose_name="onset type"),
+ ),
+ migrations.AlterField(
+ model_name="drefoperationalupdate",
+ name="type_of_onset",
+ field=models.IntegerField(blank=True, choices=[(1, "Slow"), (2, "Sudden")], null=True, verbose_name="onset type"),
+ ),
+ migrations.AlterField(
+ model_name="dref",
+ name="type_of_dref",
+ field=models.IntegerField(
+ blank=True,
+ choices=[(0, "Imminent"), (1, "Assessment"), (2, "Response"), (3, "Loan")],
+ null=True,
+ verbose_name="dref type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="dreffinalreport",
+ name="type_of_dref",
+ field=models.IntegerField(
+ blank=True,
+ choices=[(0, "Imminent"), (1, "Assessment"), (2, "Response"), (3, "Loan")],
+ null=True,
+ verbose_name="dref type",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="drefoperationalupdate",
+ name="type_of_dref",
+ field=models.IntegerField(
+ blank=True,
+ choices=[(0, "Imminent"), (1, "Assessment"), (2, "Response"), (3, "Loan")],
+ null=True,
+ verbose_name="dref type",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="date_of_approval",
+ field=models.DateField(blank=True, null=True, verbose_name="Date of Approval"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="ns_request_date",
+ field=models.DateField(blank=True, null=True, verbose_name="Ns request date"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="regional_focal_point_email",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="regional focal point email"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="regional_focal_point_name",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="regional focal point name"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="regional_focal_point_phone_number",
+ field=models.CharField(blank=True, max_length=100, null=True, verbose_name="regional focal point phone number"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="regional_focal_point_title",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="regional focal point title"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="regional_focal_point_email",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="regional focal point email"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="regional_focal_point_name",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="regional focal point name"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="regional_focal_point_phone_number",
+ field=models.CharField(blank=True, max_length=100, null=True, verbose_name="regional focal point phone number"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="regional_focal_point_title",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="regional focal point title"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="status",
+ field=models.IntegerField(
+ blank=True, choices=[(0, "In Progress"), (1, "Completed")], null=True, verbose_name="status"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="status",
+ field=models.IntegerField(
+ blank=True, choices=[(0, "In Progress"), (1, "Completed")], null=True, verbose_name="status"
+ ),
+ ),
+ # migrations.RunPython(
+ # code=dref.migrations.0058_auto_20230529_0806.Migration.update_dref_status,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="identified_gaps",
+ field=models.TextField(
+ blank=True,
+ help_text="Any identified gaps/limitations in the assessment",
+ null=True,
+ verbose_name="identified gaps",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="date_of_approval",
+ field=models.DateField(blank=True, null=True, verbose_name="Date of Approval"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="anticipatory_actions_ar",
+ field=models.TextField(
+ blank=True,
+ help_text="Description of anticipatory actions or imminent disaster",
+ null=True,
+ verbose_name="anticipatory actions",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="anticipatory_actions_en",
+ field=models.TextField(
+ blank=True,
+ help_text="Description of anticipatory actions or imminent disaster",
+ null=True,
+ verbose_name="anticipatory actions",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="anticipatory_actions_es",
+ field=models.TextField(
+ blank=True,
+ help_text="Description of anticipatory actions or imminent disaster",
+ null=True,
+ verbose_name="anticipatory actions",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="anticipatory_actions_fr",
+ field=models.TextField(
+ blank=True,
+ help_text="Description of anticipatory actions or imminent disaster",
+ null=True,
+ verbose_name="anticipatory actions",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="communication_ar",
+ field=models.TextField(
+ blank=True, help_text="Does the NS have Communications capacity?", null=True, verbose_name="organization"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="communication_en",
+ field=models.TextField(
+ blank=True, help_text="Does the NS have Communications capacity?", null=True, verbose_name="organization"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="communication_es",
+ field=models.TextField(
+ blank=True, help_text="Does the NS have Communications capacity?", null=True, verbose_name="organization"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="communication_fr",
+ field=models.TextField(
+ blank=True, help_text="Does the NS have Communications capacity?", null=True, verbose_name="organization"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="dref_recurrent_text_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="dref recurrent text"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="dref_recurrent_text_en",
+ field=models.TextField(blank=True, null=True, verbose_name="dref recurrent text"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="dref_recurrent_text_es",
+ field=models.TextField(blank=True, null=True, verbose_name="dref recurrent text"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="dref_recurrent_text_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="dref recurrent text"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="event_description_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="event description"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="event_description_en",
+ field=models.TextField(blank=True, null=True, verbose_name="event description"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="event_description_es",
+ field=models.TextField(blank=True, null=True, verbose_name="event description"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="event_description_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="event description"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="event_scope_ar",
+ field=models.TextField(blank=True, help_text="Scope and scale of event", null=True, verbose_name="event scope"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="event_scope_en",
+ field=models.TextField(blank=True, help_text="Scope and scale of event", null=True, verbose_name="event scope"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="event_scope_es",
+ field=models.TextField(blank=True, help_text="Scope and scale of event", null=True, verbose_name="event scope"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="event_scope_fr",
+ field=models.TextField(blank=True, help_text="Scope and scale of event", null=True, verbose_name="event scope"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="event_text_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="event text"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="event_text_en",
+ field=models.TextField(blank=True, null=True, verbose_name="event text"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="event_text_es",
+ field=models.TextField(blank=True, null=True, verbose_name="event text"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="event_text_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="event text"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="human_resource_ar",
+ field=models.TextField(
+ blank=True,
+ help_text="how many volunteers and staff involved in the response?",
+ null=True,
+ verbose_name="human resource",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="human_resource_en",
+ field=models.TextField(
+ blank=True,
+ help_text="how many volunteers and staff involved in the response?",
+ null=True,
+ verbose_name="human resource",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="human_resource_es",
+ field=models.TextField(
+ blank=True,
+ help_text="how many volunteers and staff involved in the response?",
+ null=True,
+ verbose_name="human resource",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="human_resource_fr",
+ field=models.TextField(
+ blank=True,
+ help_text="how many volunteers and staff involved in the response?",
+ null=True,
+ verbose_name="human resource",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="icrc_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="icrc"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="icrc_en",
+ field=models.TextField(blank=True, null=True, verbose_name="icrc"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="icrc_es",
+ field=models.TextField(blank=True, null=True, verbose_name="icrc"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="icrc_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="icrc"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="identified_gaps_ar",
+ field=models.TextField(
+ blank=True,
+ help_text="Any identified gaps/limitations in the assessment",
+ null=True,
+ verbose_name="identified gaps",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="identified_gaps_en",
+ field=models.TextField(
+ blank=True,
+ help_text="Any identified gaps/limitations in the assessment",
+ null=True,
+ verbose_name="identified gaps",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="identified_gaps_es",
+ field=models.TextField(
+ blank=True,
+ help_text="Any identified gaps/limitations in the assessment",
+ null=True,
+ verbose_name="identified gaps",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="identified_gaps_fr",
+ field=models.TextField(
+ blank=True,
+ help_text="Any identified gaps/limitations in the assessment",
+ null=True,
+ verbose_name="identified gaps",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="ifrc_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="ifrc"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="ifrc_en",
+ field=models.TextField(blank=True, null=True, verbose_name="ifrc"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="ifrc_es",
+ field=models.TextField(blank=True, null=True, verbose_name="ifrc"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="ifrc_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="ifrc"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="lessons_learned_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="lessons learned"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="lessons_learned_en",
+ field=models.TextField(blank=True, null=True, verbose_name="lessons learned"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="lessons_learned_es",
+ field=models.TextField(blank=True, null=True, verbose_name="lessons learned"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="lessons_learned_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="lessons learned"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="logistic_capacity_of_ns_ar",
+ field=models.TextField(
+ blank=True,
+ help_text="what is the logistics capacity of the National Society?",
+ null=True,
+ verbose_name="logistic capacity of ns",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="logistic_capacity_of_ns_en",
+ field=models.TextField(
+ blank=True,
+ help_text="what is the logistics capacity of the National Society?",
+ null=True,
+ verbose_name="logistic capacity of ns",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="logistic_capacity_of_ns_es",
+ field=models.TextField(
+ blank=True,
+ help_text="what is the logistics capacity of the National Society?",
+ null=True,
+ verbose_name="logistic capacity of ns",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="logistic_capacity_of_ns_fr",
+ field=models.TextField(
+ blank=True,
+ help_text="what is the logistics capacity of the National Society?",
+ null=True,
+ verbose_name="logistic capacity of ns",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="major_coordination_mechanism_ar",
+ field=models.TextField(
+ blank=True,
+ help_text="List major coordination mechanisms in place",
+ null=True,
+ verbose_name="major coordination mechanism",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="major_coordination_mechanism_en",
+ field=models.TextField(
+ blank=True,
+ help_text="List major coordination mechanisms in place",
+ null=True,
+ verbose_name="major coordination mechanism",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="major_coordination_mechanism_es",
+ field=models.TextField(
+ blank=True,
+ help_text="List major coordination mechanisms in place",
+ null=True,
+ verbose_name="major coordination mechanism",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="major_coordination_mechanism_fr",
+ field=models.TextField(
+ blank=True,
+ help_text="List major coordination mechanisms in place",
+ null=True,
+ verbose_name="major coordination mechanism",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="national_authorities_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="national authorities"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="national_authorities_en",
+ field=models.TextField(blank=True, null=True, verbose_name="national authorities"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="national_authorities_es",
+ field=models.TextField(blank=True, null=True, verbose_name="national authorities"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="national_authorities_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="national authorities"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="ns_request_text_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="ns request text"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="ns_request_text_en",
+ field=models.TextField(blank=True, null=True, verbose_name="ns request text"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="ns_request_text_es",
+ field=models.TextField(blank=True, null=True, verbose_name="ns request text"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="ns_request_text_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="ns request text"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="operation_objective_ar",
+ field=models.TextField(
+ blank=True, help_text="Overall objective of the operation", null=True, verbose_name="operation objective"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="operation_objective_en",
+ field=models.TextField(
+ blank=True, help_text="Overall objective of the operation", null=True, verbose_name="operation objective"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="operation_objective_es",
+ field=models.TextField(
+ blank=True, help_text="Overall objective of the operation", null=True, verbose_name="operation objective"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="operation_objective_fr",
+ field=models.TextField(
+ blank=True, help_text="Overall objective of the operation", null=True, verbose_name="operation objective"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="partner_national_society_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="partner national society"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="partner_national_society_en",
+ field=models.TextField(blank=True, null=True, verbose_name="partner national society"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="partner_national_society_es",
+ field=models.TextField(blank=True, null=True, verbose_name="partner national society"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="partner_national_society_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="partner national society"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="people_assisted_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="people assisted"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="people_assisted_en",
+ field=models.TextField(blank=True, null=True, verbose_name="people assisted"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="people_assisted_es",
+ field=models.TextField(blank=True, null=True, verbose_name="people assisted"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="people_assisted_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="people assisted"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="pmer_ar",
+ field=models.TextField(blank=True, help_text="Does the NS have PMER capacity?", null=True, verbose_name="pmer"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="pmer_en",
+ field=models.TextField(blank=True, help_text="Does the NS have PMER capacity?", null=True, verbose_name="pmer"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="pmer_es",
+ field=models.TextField(blank=True, help_text="Does the NS have PMER capacity?", null=True, verbose_name="pmer"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="pmer_fr",
+ field=models.TextField(blank=True, help_text="Does the NS have PMER capacity?", null=True, verbose_name="pmer"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="response_strategy_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="response strategy"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="response_strategy_en",
+ field=models.TextField(blank=True, null=True, verbose_name="response strategy"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="response_strategy_es",
+ field=models.TextField(blank=True, null=True, verbose_name="response strategy"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="response_strategy_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="response strategy"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="risk_security_concern_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk Security Concern"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="risk_security_concern_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk Security Concern"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="risk_security_concern_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk Security Concern"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="risk_security_concern_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk Security Concern"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="selection_criteria_ar",
+ field=models.TextField(
+ blank=True, help_text="Selection criteria for affected people", null=True, verbose_name="selection criteria"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="selection_criteria_en",
+ field=models.TextField(
+ blank=True, help_text="Selection criteria for affected people", null=True, verbose_name="selection criteria"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="selection_criteria_es",
+ field=models.TextField(
+ blank=True, help_text="Selection criteria for affected people", null=True, verbose_name="selection criteria"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="selection_criteria_fr",
+ field=models.TextField(
+ blank=True, help_text="Selection criteria for affected people", null=True, verbose_name="selection criteria"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="surge_personnel_deployed_ar",
+ field=models.TextField(
+ blank=True, help_text="Will a Surge personnel be deployed?", null=True, verbose_name="surge personnel deployed"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="surge_personnel_deployed_en",
+ field=models.TextField(
+ blank=True, help_text="Will a Surge personnel be deployed?", null=True, verbose_name="surge personnel deployed"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="surge_personnel_deployed_es",
+ field=models.TextField(
+ blank=True, help_text="Will a Surge personnel be deployed?", null=True, verbose_name="surge personnel deployed"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="surge_personnel_deployed_fr",
+ field=models.TextField(
+ blank=True, help_text="Will a Surge personnel be deployed?", null=True, verbose_name="surge personnel deployed"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="title_prefix_ar",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="title_prefix_en",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="title_prefix_es",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="title_prefix_fr",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="un_or_other_actor_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="un or other"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="un_or_other_actor_en",
+ field=models.TextField(blank=True, null=True, verbose_name="un or other"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="un_or_other_actor_es",
+ field=models.TextField(blank=True, null=True, verbose_name="un or other"),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="un_or_other_actor_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="un or other"),
+ ),
+ migrations.AddField(
+ model_name="dreffile",
+ name="caption_ar",
+ field=models.CharField(blank=True, max_length=225, null=True),
+ ),
+ migrations.AddField(
+ model_name="dreffile",
+ name="caption_en",
+ field=models.CharField(blank=True, max_length=225, null=True),
+ ),
+ migrations.AddField(
+ model_name="dreffile",
+ name="caption_es",
+ field=models.CharField(blank=True, max_length=225, null=True),
+ ),
+ migrations.AddField(
+ model_name="dreffile",
+ name="caption_fr",
+ field=models.CharField(blank=True, max_length=225, null=True),
+ ),
+ migrations.AddField(
+ model_name="dreffile",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dreffile",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="anticipatory_actions_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Anticipatory actions"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="anticipatory_actions_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Anticipatory actions"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="anticipatory_actions_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Anticipatory actions"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="anticipatory_actions_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Anticipatory actions"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="event_description_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Event description"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="event_description_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Event description"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="event_description_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Event description"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="event_description_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Event description"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="event_scope_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Event scope"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="event_scope_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Event scope"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="event_scope_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Event scope"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="event_scope_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Event scope"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="event_text_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="event text"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="event_text_en",
+ field=models.TextField(blank=True, null=True, verbose_name="event text"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="event_text_es",
+ field=models.TextField(blank=True, null=True, verbose_name="event text"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="event_text_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="event text"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="financial_report_description_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Financial Report Description"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="financial_report_description_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Financial Report Description"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="financial_report_description_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Financial Report Description"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="financial_report_description_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Financial Report Description"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="icrc_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="icrc"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="icrc_en",
+ field=models.TextField(blank=True, null=True, verbose_name="icrc"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="icrc_es",
+ field=models.TextField(blank=True, null=True, verbose_name="icrc"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="icrc_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="icrc"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="ifrc_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="ifrc"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="ifrc_en",
+ field=models.TextField(blank=True, null=True, verbose_name="ifrc"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="ifrc_es",
+ field=models.TextField(blank=True, null=True, verbose_name="ifrc"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="ifrc_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="ifrc"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="major_coordination_mechanism_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="major coordination mechanism"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="major_coordination_mechanism_en",
+ field=models.TextField(blank=True, null=True, verbose_name="major coordination mechanism"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="major_coordination_mechanism_es",
+ field=models.TextField(blank=True, null=True, verbose_name="major coordination mechanism"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="major_coordination_mechanism_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="major coordination mechanism"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="national_authorities_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="national authorities"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="national_authorities_en",
+ field=models.TextField(blank=True, null=True, verbose_name="national authorities"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="national_authorities_es",
+ field=models.TextField(blank=True, null=True, verbose_name="national authorities"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="national_authorities_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="national authorities"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="national_society_conducted_description_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="National Society conducted description"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="national_society_conducted_description_en",
+ field=models.TextField(blank=True, null=True, verbose_name="National Society conducted description"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="national_society_conducted_description_es",
+ field=models.TextField(blank=True, null=True, verbose_name="National Society conducted description"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="national_society_conducted_description_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="National Society conducted description"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="operation_objective_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="operation objective"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="operation_objective_en",
+ field=models.TextField(blank=True, null=True, verbose_name="operation objective"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="operation_objective_es",
+ field=models.TextField(blank=True, null=True, verbose_name="operation objective"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="operation_objective_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="operation objective"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="partner_national_society_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="partner national society"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="partner_national_society_en",
+ field=models.TextField(blank=True, null=True, verbose_name="partner national society"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="partner_national_society_es",
+ field=models.TextField(blank=True, null=True, verbose_name="partner national society"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="partner_national_society_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="partner national society"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="response_strategy_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="response strategy"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="response_strategy_en",
+ field=models.TextField(blank=True, null=True, verbose_name="response strategy"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="response_strategy_es",
+ field=models.TextField(blank=True, null=True, verbose_name="response strategy"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="response_strategy_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="response strategy"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="risk_security_concern_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk Security Concern"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="risk_security_concern_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk Security Concern"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="risk_security_concern_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk Security Concern"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="risk_security_concern_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk Security Concern"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="selection_criteria_ar",
+ field=models.TextField(
+ blank=True, help_text="Selection criteria for affected people", null=True, verbose_name="selection criteria"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="selection_criteria_en",
+ field=models.TextField(
+ blank=True, help_text="Selection criteria for affected people", null=True, verbose_name="selection criteria"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="selection_criteria_es",
+ field=models.TextField(
+ blank=True, help_text="Selection criteria for affected people", null=True, verbose_name="selection criteria"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="selection_criteria_fr",
+ field=models.TextField(
+ blank=True, help_text="Selection criteria for affected people", null=True, verbose_name="selection criteria"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="title_ar",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="title_en",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="title_es",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="title_fr",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="title_prefix_ar",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="title_prefix_en",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="title_prefix_es",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="title_prefix_fr",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="un_or_other_actor_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="un or other"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="un_or_other_actor_en",
+ field=models.TextField(blank=True, null=True, verbose_name="un or other"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="un_or_other_actor_es",
+ field=models.TextField(blank=True, null=True, verbose_name="un or other"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="un_or_other_actor_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="un or other"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="anticipatory_actions_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Anticipatory actions"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="anticipatory_actions_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Anticipatory actions"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="anticipatory_actions_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Anticipatory actions"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="anticipatory_actions_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Anticipatory actions"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="anticipatory_to_response_ar",
+ field=models.TextField(
+ blank=True,
+ null=True,
+ verbose_name="Please explain how is the operation is transitioning from Anticipatory to Response",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="anticipatory_to_response_en",
+ field=models.TextField(
+ blank=True,
+ null=True,
+ verbose_name="Please explain how is the operation is transitioning from Anticipatory to Response",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="anticipatory_to_response_es",
+ field=models.TextField(
+ blank=True,
+ null=True,
+ verbose_name="Please explain how is the operation is transitioning from Anticipatory to Response",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="anticipatory_to_response_fr",
+ field=models.TextField(
+ blank=True,
+ null=True,
+ verbose_name="Please explain how is the operation is transitioning from Anticipatory to Response",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="communication_ar",
+ field=models.TextField(
+ blank=True, help_text="Does the NS have Communications capacity?", null=True, verbose_name="organization"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="communication_en",
+ field=models.TextField(
+ blank=True, help_text="Does the NS have Communications capacity?", null=True, verbose_name="organization"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="communication_es",
+ field=models.TextField(
+ blank=True, help_text="Does the NS have Communications capacity?", null=True, verbose_name="organization"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="communication_fr",
+ field=models.TextField(
+ blank=True, help_text="Does the NS have Communications capacity?", null=True, verbose_name="organization"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="event_description_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Event description"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="event_description_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Event description"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="event_description_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Event description"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="event_description_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Event description"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="event_scope_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Event scope"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="event_scope_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Event scope"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="event_scope_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Event scope"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="event_scope_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Event scope"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="human_resource_ar",
+ field=models.TextField(
+ blank=True,
+ help_text="how many volunteers and staff involved in the response?",
+ null=True,
+ verbose_name="human resource",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="human_resource_en",
+ field=models.TextField(
+ blank=True,
+ help_text="how many volunteers and staff involved in the response?",
+ null=True,
+ verbose_name="human resource",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="human_resource_es",
+ field=models.TextField(
+ blank=True,
+ help_text="how many volunteers and staff involved in the response?",
+ null=True,
+ verbose_name="human resource",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="human_resource_fr",
+ field=models.TextField(
+ blank=True,
+ help_text="how many volunteers and staff involved in the response?",
+ null=True,
+ verbose_name="human resource",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="icrc_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="icrc"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="icrc_en",
+ field=models.TextField(blank=True, null=True, verbose_name="icrc"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="icrc_es",
+ field=models.TextField(blank=True, null=True, verbose_name="icrc"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="icrc_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="icrc"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="ifrc_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="ifrc"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="ifrc_en",
+ field=models.TextField(blank=True, null=True, verbose_name="ifrc"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="ifrc_es",
+ field=models.TextField(blank=True, null=True, verbose_name="ifrc"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="ifrc_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="ifrc"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="logistic_capacity_of_ns_ar",
+ field=models.TextField(
+ blank=True,
+ help_text="what is the logistics capacity of the National Society?",
+ null=True,
+ verbose_name="logistic capacity of ns",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="logistic_capacity_of_ns_en",
+ field=models.TextField(
+ blank=True,
+ help_text="what is the logistics capacity of the National Society?",
+ null=True,
+ verbose_name="logistic capacity of ns",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="logistic_capacity_of_ns_es",
+ field=models.TextField(
+ blank=True,
+ help_text="what is the logistics capacity of the National Society?",
+ null=True,
+ verbose_name="logistic capacity of ns",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="logistic_capacity_of_ns_fr",
+ field=models.TextField(
+ blank=True,
+ help_text="what is the logistics capacity of the National Society?",
+ null=True,
+ verbose_name="logistic capacity of ns",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="major_coordination_mechanism_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="major coordination mechanism"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="major_coordination_mechanism_en",
+ field=models.TextField(blank=True, null=True, verbose_name="major coordination mechanism"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="major_coordination_mechanism_es",
+ field=models.TextField(blank=True, null=True, verbose_name="major coordination mechanism"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="major_coordination_mechanism_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="major coordination mechanism"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="national_authorities_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="national authorities"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="national_authorities_en",
+ field=models.TextField(blank=True, null=True, verbose_name="national authorities"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="national_authorities_es",
+ field=models.TextField(blank=True, null=True, verbose_name="national authorities"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="national_authorities_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="national authorities"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="operation_objective_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="operation objective"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="operation_objective_en",
+ field=models.TextField(blank=True, null=True, verbose_name="operation objective"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="operation_objective_es",
+ field=models.TextField(blank=True, null=True, verbose_name="operation objective"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="operation_objective_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="operation objective"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="partner_national_society_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="partner national society"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="partner_national_society_en",
+ field=models.TextField(blank=True, null=True, verbose_name="partner national society"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="partner_national_society_es",
+ field=models.TextField(blank=True, null=True, verbose_name="partner national society"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="partner_national_society_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="partner national society"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="people_assisted_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="people assisted"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="people_assisted_en",
+ field=models.TextField(blank=True, null=True, verbose_name="people assisted"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="people_assisted_es",
+ field=models.TextField(blank=True, null=True, verbose_name="people assisted"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="people_assisted_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="people assisted"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="pmer_ar",
+ field=models.TextField(blank=True, help_text="Does the NS have PMER capacity?", null=True, verbose_name="pmer"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="pmer_en",
+ field=models.TextField(blank=True, help_text="Does the NS have PMER capacity?", null=True, verbose_name="pmer"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="pmer_es",
+ field=models.TextField(blank=True, help_text="Does the NS have PMER capacity?", null=True, verbose_name="pmer"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="pmer_fr",
+ field=models.TextField(blank=True, help_text="Does the NS have PMER capacity?", null=True, verbose_name="pmer"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="response_strategy_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="response strategy"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="response_strategy_en",
+ field=models.TextField(blank=True, null=True, verbose_name="response strategy"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="response_strategy_es",
+ field=models.TextField(blank=True, null=True, verbose_name="response strategy"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="response_strategy_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="response strategy"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="risk_security_concern_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk Security Concern"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="risk_security_concern_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk Security Concern"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="risk_security_concern_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk Security Concern"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="risk_security_concern_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk Security Concern"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="selection_criteria_ar",
+ field=models.TextField(
+ blank=True, help_text="Selection criteria for affected people", null=True, verbose_name="selection criteria"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="selection_criteria_en",
+ field=models.TextField(
+ blank=True, help_text="Selection criteria for affected people", null=True, verbose_name="selection criteria"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="selection_criteria_es",
+ field=models.TextField(
+ blank=True, help_text="Selection criteria for affected people", null=True, verbose_name="selection criteria"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="selection_criteria_fr",
+ field=models.TextField(
+ blank=True, help_text="Selection criteria for affected people", null=True, verbose_name="selection criteria"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="surge_personnel_deployed_ar",
+ field=models.TextField(
+ blank=True, help_text="Will a Surge personnel be deployed?", null=True, verbose_name="surge personnel deployed"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="surge_personnel_deployed_en",
+ field=models.TextField(
+ blank=True, help_text="Will a Surge personnel be deployed?", null=True, verbose_name="surge personnel deployed"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="surge_personnel_deployed_es",
+ field=models.TextField(
+ blank=True, help_text="Will a Surge personnel be deployed?", null=True, verbose_name="surge personnel deployed"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="surge_personnel_deployed_fr",
+ field=models.TextField(
+ blank=True, help_text="Will a Surge personnel be deployed?", null=True, verbose_name="surge personnel deployed"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="title_ar",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="title_en",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="title_es",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="title_fr",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="title_prefix_ar",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="title_prefix_en",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="title_prefix_es",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="title_prefix_fr",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="title prefix"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="un_or_other_actor_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="un or other"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="un_or_other_actor_en",
+ field=models.TextField(blank=True, null=True, verbose_name="un or other"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="un_or_other_actor_es",
+ field=models.TextField(blank=True, null=True, verbose_name="un or other"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="un_or_other_actor_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="un or other"),
+ ),
+ migrations.AddField(
+ model_name="identifiedneed",
+ name="description_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="identifiedneed",
+ name="description_en",
+ field=models.TextField(blank=True, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="identifiedneed",
+ name="description_es",
+ field=models.TextField(blank=True, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="identifiedneed",
+ name="description_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="identifiedneed",
+ name="title_ar",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("shelter_cluster_coordination", "Shelter Cluster Coordination"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AddField(
+ model_name="identifiedneed",
+ name="title_en",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("shelter_cluster_coordination", "Shelter Cluster Coordination"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AddField(
+ model_name="identifiedneed",
+ name="title_es",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("shelter_cluster_coordination", "Shelter Cluster Coordination"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AddField(
+ model_name="identifiedneed",
+ name="title_fr",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("shelter_cluster_coordination", "Shelter Cluster Coordination"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AddField(
+ model_name="identifiedneed",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="identifiedneed",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="nationalsocietyaction",
+ name="description_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="nationalsocietyaction",
+ name="description_en",
+ field=models.TextField(blank=True, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="nationalsocietyaction",
+ name="description_es",
+ field=models.TextField(blank=True, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="nationalsocietyaction",
+ name="description_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="nationalsocietyaction",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="nationalsocietyaction",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="challenges_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Challenges"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="challenges_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Challenges"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="challenges_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Challenges"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="challenges_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Challenges"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="description_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="description_en",
+ field=models.TextField(blank=True, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="description_es",
+ field=models.TextField(blank=True, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="description_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="description"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="lessons_learnt_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Lessons learnt"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="lessons_learnt_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Lessons learnt"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="lessons_learnt_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Lessons learnt"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="lessons_learnt_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Lessons learnt"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="narrative_description_of_achievements_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Narrative description of achievements"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="narrative_description_of_achievements_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Narrative description of achievements"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="narrative_description_of_achievements_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Narrative description of achievements"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="narrative_description_of_achievements_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Narrative description of achievements"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="progress_towards_outcome_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Progress Towards Outcome"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="progress_towards_outcome_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Progress Towards Outcome"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="progress_towards_outcome_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Progress Towards Outcome"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="progress_towards_outcome_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Progress Towards Outcome"),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="title_ar",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="title_en",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="title_es",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="title_fr",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="plannedintervention",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="plannedinterventionindicators",
+ name="title_ar",
+ field=models.CharField(max_length=255, null=True, verbose_name="Title"),
+ ),
+ migrations.AddField(
+ model_name="plannedinterventionindicators",
+ name="title_en",
+ field=models.CharField(max_length=255, null=True, verbose_name="Title"),
+ ),
+ migrations.AddField(
+ model_name="plannedinterventionindicators",
+ name="title_es",
+ field=models.CharField(max_length=255, null=True, verbose_name="Title"),
+ ),
+ migrations.AddField(
+ model_name="plannedinterventionindicators",
+ name="title_fr",
+ field=models.CharField(max_length=255, null=True, verbose_name="Title"),
+ ),
+ migrations.AddField(
+ model_name="plannedinterventionindicators",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="plannedinterventionindicators",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="risksecurity",
+ name="mitigation_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Mitigation"),
+ ),
+ migrations.AddField(
+ model_name="risksecurity",
+ name="mitigation_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Mitigation"),
+ ),
+ migrations.AddField(
+ model_name="risksecurity",
+ name="mitigation_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Mitigation"),
+ ),
+ migrations.AddField(
+ model_name="risksecurity",
+ name="mitigation_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Mitigation"),
+ ),
+ migrations.AddField(
+ model_name="risksecurity",
+ name="risk_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk"),
+ ),
+ migrations.AddField(
+ model_name="risksecurity",
+ name="risk_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk"),
+ ),
+ migrations.AddField(
+ model_name="risksecurity",
+ name="risk_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk"),
+ ),
+ migrations.AddField(
+ model_name="risksecurity",
+ name="risk_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Risk"),
+ ),
+ migrations.AddField(
+ model_name="risksecurity",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="risksecurity",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="is_active",
+ field=models.BooleanField(blank=True, null=True, verbose_name="Is Active"),
+ ),
+ # migrations.RunPython(
+ # code=dref.migrations.0062_auto_20230619_0931.Migration.update_dref,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="financial_report_preview",
+ field=models.FileField(blank=True, null=True, upload_to="dref/images/", verbose_name="financial preview"),
+ ),
+ migrations.AlterField(
+ model_name="dref",
+ name="modified_at",
+ field=models.DateTimeField(default=django.utils.timezone.now, null=True, verbose_name="modified at"),
+ ),
+ migrations.AlterField(
+ model_name="dreffinalreport",
+ name="modified_at",
+ field=models.DateTimeField(default=django.utils.timezone.now, null=True, verbose_name="modified at"),
+ ),
+ migrations.AlterField(
+ model_name="drefoperationalupdate",
+ name="modified_at",
+ field=models.DateTimeField(default=django.utils.timezone.now, null=True, verbose_name="modified at"),
+ ),
+ migrations.AlterField(
+ model_name="dref",
+ name="disability_people_per",
+ field=models.FloatField(
+ blank=True, help_text="Estimated % people disability", null=True, verbose_name="disability people per"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="dref",
+ name="people_per_local",
+ field=models.FloatField(blank=True, help_text="Estimated % people Rural", null=True, verbose_name="people per local"),
+ ),
+ migrations.AlterField(
+ model_name="dref",
+ name="people_per_urban",
+ field=models.FloatField(blank=True, help_text="Estimated % people Urban", null=True, verbose_name="people per urban"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="main_donors",
+ field=models.TextField(blank=True, null=True, verbose_name="Main Donors"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="did_national_society",
+ field=models.BooleanField(blank=True, null=True, verbose_name="Did National Society"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="event_text",
+ field=models.TextField(blank=True, null=True, verbose_name="event text"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="is_man_made_event",
+ field=models.BooleanField(blank=True, null=True, verbose_name="Is Man-made Event"),
+ ),
+ migrations.AlterField(
+ model_name="drefoperationalupdate",
+ name="disability_people_per",
+ field=models.FloatField(
+ blank=True, help_text="Estimated % people disability", null=True, verbose_name="disability people per"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="drefoperationalupdate",
+ name="people_per_local",
+ field=models.FloatField(blank=True, help_text="Estimated % people Rural", null=True, verbose_name="people per local"),
+ ),
+ migrations.AlterField(
+ model_name="drefoperationalupdate",
+ name="people_per_urban",
+ field=models.FloatField(blank=True, help_text="Estimated % people Urban", null=True, verbose_name="people per urban"),
+ ),
+ migrations.AlterField(
+ model_name="dreffinalreport",
+ name="disability_people_per",
+ field=models.FloatField(blank=True, null=True, verbose_name="disability people per"),
+ ),
+ migrations.AlterField(
+ model_name="dreffinalreport",
+ name="people_per_local",
+ field=models.FloatField(blank=True, null=True, verbose_name="people per local"),
+ ),
+ migrations.AlterField(
+ model_name="dreffinalreport",
+ name="people_per_urban",
+ field=models.FloatField(blank=True, null=True, verbose_name="people per urban"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="operation_end_date",
+ field=models.DateField(blank=True, null=True, verbose_name="Operation End Date"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="regional_focal_point_email",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="regional focal point email"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="regional_focal_point_name",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="regional focal point name"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="regional_focal_point_phone_number",
+ field=models.CharField(blank=True, max_length=100, null=True, verbose_name="regional focal point phone number"),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="regional_focal_point_title",
+ field=models.CharField(blank=True, max_length=255, null=True, verbose_name="regional focal point title"),
+ ),
+ migrations.CreateModel(
+ name="SourceInformation",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("client_id", models.CharField(blank=True, max_length=50, null=True, verbose_name="client_id")),
+ ("source_name", models.CharField(blank=True, max_length=255, null=True, verbose_name="Source Name")),
+ ("source_link", models.CharField(blank=True, max_length=255, null=True, verbose_name="Source Link")),
+ ],
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="disaster_category_analysis",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="dref_disaster_category_file",
+ to="dref.dreffile",
+ verbose_name="If available please upload Disaster categorization Analysis",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="has_child_safeguarding_risk_analysis_assessment",
+ field=models.BooleanField(
+ blank=True, null=True, verbose_name="Has the child safeguarding risk analysis assessment been completed?"
+ ),
+ ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="has_child_safeguarding_risk_analysis_assessment",
+ field=models.BooleanField(
+ blank=True, null=True, verbose_name="Has the child safeguarding risk analysis assessment been completed?"
+ ),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="budget_file_preview",
+ field=models.FileField(blank=True, null=True, upload_to="dref-op-update/images/", verbose_name="budget file preview"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="has_child_safeguarding_risk_analysis_assessment",
+ field=models.BooleanField(
+ blank=True, null=True, verbose_name="Has the child safeguarding risk analysis assessment been completed?"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="drefoperationalupdate",
+ name="reporting_end_date",
+ field=models.DateField(blank=True, null=True, verbose_name="Reporting End Date"),
+ ),
+ migrations.AlterField(
+ model_name="drefoperationalupdate",
+ name="reporting_start_date",
+ field=models.DateField(blank=True, null=True, verbose_name="Reporting Start Date"),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("shelter_cluster_coordination", "Shelter Cluster Coordination"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_ar",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("shelter_cluster_coordination", "Shelter Cluster Coordination"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_en",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("shelter_cluster_coordination", "Shelter Cluster Coordination"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_es",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("shelter_cluster_coordination", "Shelter Cluster Coordination"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_fr",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("shelter_cluster_coordination", "Shelter Cluster Coordination"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="nationalsocietyaction",
+ name="title",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter, Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("coordination", "Coordination"),
+ ("national_society_readiness", "National Society Readiness"),
+ ("assessment", "Assessment"),
+ ("resource_mobilization", "Resource Mobilization"),
+ ("activation_of_contingency_plans", "Activation Of Contingency Plans"),
+ ("national_society_eoc", "National Society EOC"),
+ ("other", "Other"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_ar",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_en",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_es",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_fr",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="source_information",
+ field=models.ManyToManyField(blank=True, to="dref.sourceinformation", verbose_name="Source Information"),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_ar",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_en",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_es",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_fr",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration", "Migration"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AddField(
+ model_name="dref",
+ name="targeting_strategy_support_file",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="dref_targeting_strategy_support_file",
+ to="dref.dreffile",
+ verbose_name="If available please upload additional support documentation for targeting strategy",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_ar",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_en",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_es",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_fr",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="nationalsocietyaction",
+ name="title",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter, Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and _accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability ", "Environment Sustainability"),
+ ("coordination", "Coordination"),
+ ("national_society_readiness", "National Society Readiness"),
+ ("assessment", "Assessment"),
+ ("resource_mobilization", "Resource Mobilization"),
+ ("activation_of_contingency_plans", "Activation Of Contingency Plans"),
+ ("national_society_eoc", "National Society EOC"),
+ ("other", "Other"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_ar",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_en",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_es",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_fr",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery_", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability", "Environment Sustainability"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_ar",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability", "Environment Sustainability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_en",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability", "Environment Sustainability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_es",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability", "Environment Sustainability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="identifiedneed",
+ name="title_fr",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash_grants", "Multi purpose cash grants"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability", "Environment Sustainability"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="nationalsocietyaction",
+ name="title",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter, Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability", "Environment Sustainability"),
+ ("coordination", "Coordination"),
+ ("national_society_readiness", "National Society Readiness"),
+ ("assessment", "Assessment"),
+ ("resource_mobilization", "Resource Mobilization"),
+ ("activation_of_contingency_plans", "Activation Of Contingency Plans"),
+ ("national_society_eoc", "National Society EOC"),
+ ("other", "Other"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_ar",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_en",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_es",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_fr",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi-purpose_cash", "Multi-purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="nationalsocietyaction",
+ name="title",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter, Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash", "Multi Purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environment_sustainability", "Environment Sustainability"),
+ ("coordination", "Coordination"),
+ ("national_society_readiness", "National Society Readiness"),
+ ("assessment", "Assessment"),
+ ("resource_mobilization", "Resource Mobilization"),
+ ("activation_of_contingency_plans", "Activation Of Contingency Plans"),
+ ("national_society_eoc", "National Society EOC"),
+ ("other", "Other"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash", "Multi Purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_ar",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash", "Multi Purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_en",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash", "Multi Purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_es",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash", "Multi Purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="plannedintervention",
+ name="title_fr",
+ field=models.CharField(
+ choices=[
+ ("shelter_housing_and_settlements", "Shelter Housing And Settlements"),
+ ("livelihoods_and_basic_needs", "Livelihoods And Basic Needs"),
+ ("multi_purpose_cash", "Multi Purpose Cash"),
+ ("health", "Health"),
+ ("water_sanitation_and_hygiene", "Water, Sanitation And Hygiene"),
+ ("protection_gender_and_inclusion", "Protection, Gender And Inclusion"),
+ ("education", "Education"),
+ ("migration_and_displacement", "Migration And Displacement"),
+ ("risk_reduction_climate_adaptation_and_recovery", "Risk Reduction, Climate Adaptation And Recovery"),
+ ("community_engagement_and_accountability", "Community Engagement And Accountability"),
+ ("environmental_sustainability", "Environmental Sustainability"),
+ ("coordination_and_partnerships", "Coordination And Partnerships"),
+ ("secretariat_services", "Secretariat Services"),
+ ("national_society_strengthening", "National Society Strengthening"),
+ ],
+ max_length=255,
+ null=True,
+ verbose_name="title",
+ ),
+ ),
+ # migrations.RunPython(
+ # code=dref.migrations.0073_auto_20231214_0358.Migration.update_dref_sectors,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AddField(
+ model_name="dreffinalreport",
+ name="source_information",
+ field=models.ManyToManyField(blank=True, to="dref.sourceinformation", verbose_name="Source Information"),
+ ),
+ migrations.AddField(
+ model_name="drefoperationalupdate",
+ name="source_information",
+ field=models.ManyToManyField(blank=True, to="dref.sourceinformation", verbose_name="Source Information"),
+ ),
+ ]
diff --git a/dref/migrations/0072_auto_20231117_0602_squashed_0077_auto_20231211_0426.py b/dref/migrations/0072_auto_20231117_0602_squashed_0077_auto_20231211_0426.py
index c7d277c79..17774c0fe 100644
--- a/dref/migrations/0072_auto_20231117_0602_squashed_0077_auto_20231211_0426.py
+++ b/dref/migrations/0072_auto_20231117_0602_squashed_0077_auto_20231211_0426.py
@@ -6,15 +6,6 @@
class Migration(migrations.Migration):
- replaces = [
- ("dref", "0072_auto_20231117_0602"),
- ("dref", "0073_auto_20231120_0944"),
- ("dref", "0074_dref_targeting_strategy_support_file"),
- ("dref", "0075_auto_20231208_0654"),
- ("dref", "0076_auto_20231208_1006"),
- ("dref", "0077_auto_20231211_0426"),
- ]
-
dependencies = [
("dref", "0071_auto_20230912_0438"),
]
diff --git a/dref/migrations/0075_alter_dref_national_society.py b/dref/migrations/0075_alter_dref_national_society.py
new file mode 100644
index 000000000..833d0c9df
--- /dev/null
+++ b/dref/migrations/0075_alter_dref_national_society.py
@@ -0,0 +1,22 @@
+# Generated by Django 4.2.15 on 2024-09-18 04:24
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("api", "0001_squashed_0213_merge_20240807_1001"),
+ ("dref", "0001_squashed_0074_auto_20240129_0909"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="dref",
+ name="national_society",
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="national_society"
+ ),
+ ),
+ ]
diff --git a/flash_update/migrations/0001_squashed_0012_auto_20230410_0720.py b/flash_update/migrations/0001_squashed_0012_auto_20230410_0720.py
new file mode 100644
index 000000000..9199ebb00
--- /dev/null
+++ b/flash_update/migrations/0001_squashed_0012_auto_20230410_0720.py
@@ -0,0 +1,393 @@
+# Generated by Django 4.2.15 on 2024-09-13 15:21
+
+import django.contrib.postgres.fields
+import django.db.models.deletion
+import tinymce.models
+from django.conf import settings
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ replaces = [
+ ("flash_update", "0001_initial"),
+ ("flash_update", "0002_auto_20220228_0544"),
+ ("flash_update", "0003_flashupdateshare"),
+ ("flash_update", "0004_auto_20220303_0633"),
+ ("flash_update", "0005_auto_20220303_0834"),
+ ("flash_update", "0006_auto_20220303_0906"),
+ ("flash_update", "0007_auto_20220303_1116"),
+ ("flash_update", "0008_auto_20220311_1023"),
+ ("flash_update", "0009_auto_20220513_0633"),
+ ("flash_update", "0010_auto_20220607_1157"),
+ ("flash_update", "0011_auto_20220805_1047"),
+ ("flash_update", "0012_auto_20230410_0720"),
+ ]
+
+ initial = True
+
+ dependencies = [
+ ("api", "0145_auto_20220218_1338"),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ("auth", "0011_update_proxy_permissions"),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name="FlashAction",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=400, verbose_name="name")),
+ (
+ "organizations",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(
+ choices=[
+ ("NTLS", "National Society"),
+ ("PNS", "RCRC"),
+ ("FDRN", "Federation"),
+ ("GOV", "Government"),
+ ],
+ max_length=4,
+ ),
+ blank=True,
+ default=list,
+ size=None,
+ verbose_name="organizations",
+ ),
+ ),
+ (
+ "flash_update_types",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(
+ choices=[("EVT", "Event"), ("EW", "Early Warning"), ("EPI", "Epidemic"), ("COVID", "COVID-19")],
+ max_length=16,
+ ),
+ default=list,
+ size=None,
+ verbose_name="flash update types",
+ ),
+ ),
+ (
+ "category",
+ models.CharField(
+ choices=[
+ ("General", "General"),
+ ("Health", "Health"),
+ ("NS Institutional Strengthening", "NS Institutional Strengthening"),
+ ("Socioeconomic Interventions", "Socioeconomic Interventions"),
+ ],
+ default="General",
+ max_length=255,
+ verbose_name="category",
+ ),
+ ),
+ ("is_disabled", models.BooleanField(default=False, help_text="Disable in form", verbose_name="is disabled?")),
+ ("tooltip_text", models.TextField(blank="true", null=True, verbose_name="tooltip text")),
+ ("client_id", models.CharField(blank=True, max_length=50, null=True)),
+ ],
+ options={
+ "verbose_name": "flash action",
+ "verbose_name_plural": "flash actions",
+ },
+ ),
+ migrations.CreateModel(
+ name="FlashGraphicMap",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("file", models.FileField(upload_to="flash_update/images/", verbose_name="file")),
+ ("caption", models.CharField(blank=True, max_length=225, null=True)),
+ ("client_id", models.CharField(blank=True, max_length=50, null=True)),
+ (
+ "created_by",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="created_by",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "flash graphic map",
+ "verbose_name_plural": "flash graphic maps",
+ },
+ ),
+ migrations.CreateModel(
+ name="FlashReferences",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("date", models.DateField(blank=True, verbose_name="date")),
+ ("source_description", models.CharField(blank=True, max_length=225, verbose_name="Name or Source Description")),
+ ("url", models.TextField(blank=True)),
+ ("client_id", models.CharField(blank=True, max_length=50, null=True)),
+ (
+ "document",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="flash_document",
+ to="flash_update.flashgraphicmap",
+ verbose_name="document",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "flash reference",
+ "verbose_name_plural": "flash references",
+ },
+ ),
+ migrations.CreateModel(
+ name="FlashUpdate",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="updated at")),
+ ("title", models.CharField(max_length=300)),
+ ("title_en", models.CharField(max_length=300, null=True)),
+ ("title_es", models.CharField(max_length=300, null=True)),
+ ("title_fr", models.CharField(max_length=300, null=True)),
+ ("title_ar", models.CharField(max_length=300, null=True)),
+ ("situational_overview", tinymce.models.HTMLField(blank=True, default="", verbose_name="Situational Overview")),
+ (
+ "situational_overview_en",
+ tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="Situational Overview"),
+ ),
+ (
+ "situational_overview_es",
+ tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="Situational Overview"),
+ ),
+ (
+ "situational_overview_fr",
+ tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="Situational Overview"),
+ ),
+ (
+ "situational_overview_ar",
+ tinymce.models.HTMLField(blank=True, default="", null=True, verbose_name="Situational Overview"),
+ ),
+ ("originator_name", models.CharField(blank=True, max_length=100, null=True, verbose_name="originator_name")),
+ ("originator_title", models.CharField(blank=True, max_length=300, null=True, verbose_name="originator_title")),
+ ("originator_email", models.CharField(blank=True, max_length=300, null=True, verbose_name="originator_email")),
+ ("originator_phone", models.CharField(blank=True, max_length=50, null=True, verbose_name="originator_phone")),
+ ("ifrc_name", models.CharField(blank=True, max_length=100, null=True, verbose_name="ifrc_name")),
+ ("ifrc_title", models.CharField(blank=True, max_length=300, null=True, verbose_name="ifrc_title")),
+ ("ifrc_email", models.CharField(blank=True, max_length=300, null=True, verbose_name="ifrc_email")),
+ ("ifrc_phone", models.CharField(blank=True, max_length=50, null=True, verbose_name="ifrc_phone")),
+ (
+ "share_with",
+ models.CharField(
+ blank=True,
+ choices=[("ifrc_secretariat", "IFRC Secretariat")],
+ default="ifrc_secretariat",
+ max_length=50,
+ null=True,
+ verbose_name="share with",
+ ),
+ ),
+ (
+ "created_by",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="flash_update_created_by",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="created by",
+ ),
+ ),
+ (
+ "graphics",
+ models.ManyToManyField(
+ blank=True, related_name="flash_graphics", to="flash_update.flashgraphicmap", verbose_name="graphics"
+ ),
+ ),
+ (
+ "hazard_type",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="flash_update_hazard_type",
+ to="api.disastertype",
+ verbose_name="hazard type",
+ ),
+ ),
+ (
+ "map",
+ models.ManyToManyField(
+ blank=True, related_name="flash_map", to="flash_update.flashgraphicmap", verbose_name="map"
+ ),
+ ),
+ (
+ "modified_by",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="flash_update_modified_by",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="modified by",
+ ),
+ ),
+ ("references", models.ManyToManyField(blank=True, to="flash_update.flashreferences", verbose_name="references")),
+ ("extracted_at", models.DateTimeField(blank=True, null=True, verbose_name="extracted at")),
+ (
+ "extracted_file",
+ models.FileField(blank=True, null=True, upload_to="flash_update/pdf/", verbose_name="extracted file"),
+ ),
+ (
+ "translation_module_original_language",
+ models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ (
+ "translation_module_skip_auto_translation",
+ models.BooleanField(
+ default=False,
+ help_text="Skip auto translation operation for this entity?",
+ verbose_name="Skip auto translation",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "Flash update",
+ "verbose_name_plural": "Flash updates",
+ },
+ ),
+ migrations.CreateModel(
+ name="DonorGroup",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=255, verbose_name="name")),
+ ],
+ ),
+ migrations.CreateModel(
+ name="Donors",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("organization_name", models.CharField(blank=True, max_length=500, null=True)),
+ ("first_name", models.CharField(blank=True, max_length=300, null=True)),
+ ("last_name", models.CharField(blank=True, max_length=300, null=True)),
+ ("email", models.EmailField(blank=True, max_length=254, null=True)),
+ ("position", models.CharField(blank=True, max_length=300, null=True)),
+ ("groups", models.ManyToManyField(blank=True, to="flash_update.donorgroup", verbose_name="donor group")),
+ ],
+ options={
+ "verbose_name": "donor",
+ },
+ ),
+ migrations.CreateModel(
+ name="FlashUpdateShare",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("donor_groups", models.ManyToManyField(blank=True, to="flash_update.donorgroup")),
+ ("donors", models.ManyToManyField(blank=True, to="flash_update.donors")),
+ (
+ "flash_update",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="flash_update_share",
+ to="flash_update.flashupdate",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="FlashActionsTaken",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "organization",
+ models.CharField(
+ choices=[("NTLS", "National Society"), ("PNS", "RCRC"), ("FDRN", "Federation"), ("GOV", "Government")],
+ max_length=16,
+ verbose_name="organization",
+ ),
+ ),
+ ("summary", models.TextField(blank=True, null=True, verbose_name="summary")),
+ ("client_id", models.CharField(blank=True, max_length=50, null=True)),
+ ("actions", models.ManyToManyField(blank=True, to="flash_update.flashaction", verbose_name="actions")),
+ (
+ "flash_update",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="actions_taken_flash",
+ to="flash_update.flashupdate",
+ verbose_name="flash update",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "actions taken flash",
+ "verbose_name_plural": "all actions taken flash",
+ },
+ ),
+ migrations.CreateModel(
+ name="FlashEmailSubscriptions",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "share_with",
+ models.CharField(
+ choices=[("ifrc_secretariat", "IFRC Secretariat")],
+ default="ifrc_secretariat",
+ max_length=50,
+ verbose_name="share with",
+ ),
+ ),
+ (
+ "group",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="flash_email_subscription",
+ to="auth.group",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "flash email subscription",
+ },
+ ),
+ migrations.CreateModel(
+ name="FlashCountryDistrict",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("client_id", models.CharField(blank=True, max_length=50, null=True)),
+ (
+ "country",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="flash_country",
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ (
+ "district",
+ models.ManyToManyField(blank=True, related_name="flash_district", to="api.district", verbose_name="district"),
+ ),
+ (
+ "flash_update",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="flash_country_district",
+ to="flash_update.flashupdate",
+ verbose_name="Flash update",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "flash country district",
+ "verbose_name_plural": "flash countries districts",
+ "unique_together": {("flash_update", "country")},
+ },
+ ),
+ ]
diff --git a/notifications/migrations/0001_squashed_0015_rename_molnix_status_surgealert_molnix_status_old.py b/notifications/migrations/0001_squashed_0015_rename_molnix_status_surgealert_molnix_status_old.py
new file mode 100644
index 000000000..a67ef7a02
--- /dev/null
+++ b/notifications/migrations/0001_squashed_0015_rename_molnix_status_surgealert_molnix_status_old.py
@@ -0,0 +1,255 @@
+# Generated by Django 4.2.15 on 2024-09-13 15:02
+
+import django.db.migrations.operations.special
+import django.db.models.deletion
+from django.conf import settings
+from django.db import migrations, models
+
+# Functions from the following migrations need manual copying.
+# Move them and any dependencies into this file, then update the
+# RunPython operations to refer to the local versions:
+# notifications.migrations.0012_surgealert_is_stood_down - NOT REQUIRED
+
+
+class Migration(migrations.Migration):
+
+ replaces = [
+ ("notifications", "0001_initial"),
+ ("notifications", "0002_subscription_event"),
+ ("notifications", "0003_notificationguid"),
+ ("notifications", "0004_auto_20200618_1017"),
+ ("notifications", "0004_auto_20200618_0904"),
+ ("notifications", "0005_merge_20200619_0724"),
+ ("notifications", "0006_auto_20200623_0704"),
+ ("notifications", "0007_auto_20200810_1116"),
+ ("notifications", "0008_auto_20201104_0352"),
+ ("notifications", "0009_surgealert_is_active"),
+ ("notifications", "0010_surgealert_molnix_status"),
+ ("notifications", "0011_surgealert_country"),
+ ("notifications", "0012_surgealert_is_stood_down"),
+ ("notifications", "0013_auto_20230410_0720"),
+ ("notifications", "0014_surgealert_status"),
+ ("notifications", "0015_rename_molnix_status_surgealert_molnix_status_old"),
+ ]
+
+ initial = True
+
+ dependencies = [
+ ("api", "0017_auto_20190424_1508"),
+ ("api", "0001_initial"),
+ ("deployments", "0033_molnixtag"),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name="Subscription",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("stype", models.IntegerField(choices=[(0, "new"), (1, "edit")], default=0, verbose_name="subscription type")),
+ (
+ "rtype",
+ models.IntegerField(
+ choices=[
+ (0, "event"),
+ (1, "appeal"),
+ (2, "field report"),
+ (3, "surge alert"),
+ (4, "country"),
+ (5, "region"),
+ (6, "disaster type"),
+ (7, "per due date"),
+ (8, "followed event"),
+ (9, "surge deployment messages"),
+ (10, "surge approaching end of mission"),
+ (11, "weekly digest"),
+ (12, "new emergencies"),
+ (13, "new operations"),
+ (14, "general announcements"),
+ ],
+ default=0,
+ verbose_name="record type",
+ ),
+ ),
+ ("lookup_id", models.CharField(blank=True, editable=False, max_length=20, null=True, verbose_name="lookup id")),
+ (
+ "country",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ (
+ "dtype",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.disastertype",
+ verbose_name="disaster type",
+ ),
+ ),
+ (
+ "region",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.region",
+ verbose_name="region",
+ ),
+ ),
+ (
+ "user",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="subscription",
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="user",
+ ),
+ ),
+ (
+ "event",
+ models.ForeignKey(
+ blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.event", verbose_name="event"
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "Subscription",
+ "verbose_name_plural": "Subscriptions",
+ },
+ ),
+ migrations.CreateModel(
+ name="NotificationGUID",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(auto_now_add=True)),
+ (
+ "api_guid",
+ models.CharField(
+ help_text="Can be used to do a GET request to check on the email sender API side.", max_length=200
+ ),
+ ),
+ ("email_type", models.CharField(blank=True, max_length=600, null=True)),
+ ("to_list", models.TextField(blank=True, null=True)),
+ ],
+ ),
+ migrations.CreateModel(
+ name="SurgeAlert",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "atype",
+ models.IntegerField(
+ choices=[
+ (0, "fact"),
+ (1, "SIMS"),
+ (2, "ERU"),
+ (3, "DHEOPS"),
+ (4, "HEOPS"),
+ (5, "surge"),
+ (6, "rapid response"),
+ ],
+ default=0,
+ verbose_name="alert type",
+ ),
+ ),
+ (
+ "category",
+ models.IntegerField(
+ choices=[(0, "information"), (1, "deployment"), (2, "alert"), (3, "shelter"), (4, "stand down")],
+ default=0,
+ verbose_name="category",
+ ),
+ ),
+ ("operation", models.CharField(max_length=100, verbose_name="operation")),
+ ("message", models.TextField(verbose_name="message")),
+ ("deployment_needed", models.BooleanField(default=False, verbose_name="deployment needed")),
+ ("is_private", models.BooleanField(default=False, verbose_name="is private?")),
+ ("created_at", models.DateTimeField(verbose_name="created at")),
+ (
+ "event",
+ models.ForeignKey(
+ blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="api.event", verbose_name="event"
+ ),
+ ),
+ ("message_ar", models.TextField(null=True, verbose_name="message")),
+ ("message_en", models.TextField(null=True, verbose_name="message")),
+ ("message_es", models.TextField(null=True, verbose_name="message")),
+ ("message_fr", models.TextField(null=True, verbose_name="message")),
+ ("operation_ar", models.CharField(max_length=100, null=True, verbose_name="operation")),
+ ("operation_en", models.CharField(max_length=100, null=True, verbose_name="operation")),
+ ("operation_es", models.CharField(max_length=100, null=True, verbose_name="operation")),
+ ("operation_fr", models.CharField(max_length=100, null=True, verbose_name="operation")),
+ ("closes", models.DateTimeField(blank=True, null=True)),
+ ("end", models.DateTimeField(blank=True, null=True)),
+ ("molnix_id", models.IntegerField(blank=True, null=True)),
+ ("molnix_tags", models.ManyToManyField(blank=True, to="deployments.molnixtag")),
+ ("opens", models.DateTimeField(blank=True, null=True)),
+ ("start", models.DateTimeField(blank=True, null=True)),
+ ("is_active", models.BooleanField(default=True)),
+ ("molnix_status", models.CharField(blank=True, max_length=32, null=True)),
+ (
+ "country",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ ("is_stood_down", models.BooleanField(default=False, verbose_name="is stood down?")),
+ ],
+ options={
+ "ordering": ["-created_at"],
+ "verbose_name": "Surge Alert",
+ "verbose_name_plural": "Surge Alerts",
+ },
+ ),
+ # migrations.RunPython(
+ # code=notifications.migrations.0012_surgealert_is_stood_down.update_stood_down,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AddField(
+ model_name="surgealert",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="surgealert",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.RemoveField(
+ model_name="surgealert",
+ name="molnix_status",
+ ),
+ migrations.AddField(
+ model_name="surgealert",
+ name="molnix_status",
+ field=models.IntegerField(
+ choices=[(0, "Open"), (1, "Stood Down"), (2, "Closed")], default=0, verbose_name="alert status"
+ ),
+ ),
+ migrations.RemoveField(
+ model_name="surgealert",
+ name="is_active",
+ ),
+ migrations.RemoveField(
+ model_name="surgealert",
+ name="is_stood_down",
+ ),
+ ]
diff --git a/per/migrations/0001_squashed_0120_alter_formcomponent_status.py b/per/migrations/0001_squashed_0120_alter_formcomponent_status.py
new file mode 100644
index 000000000..0959a4660
--- /dev/null
+++ b/per/migrations/0001_squashed_0120_alter_formcomponent_status.py
@@ -0,0 +1,1789 @@
+# Generated by Django 4.2.15 on 2024-09-13 15:17
+
+import django.db.migrations.operations.special
+import django.db.models.deletion
+import django.utils.timezone
+import tinymce.models
+from django.conf import settings
+from django.db import migrations, models
+
+import per.models
+
+# Functions from the following migrations need manual copying.
+# Move them and any dependencies into this file, then update the
+# RunPython operations to refer to the local versions:
+# per.migrations.0086_migrate_old_form
+# per.migrations.0087_update_phase
+# per.migrations.0088_update_assessment_method
+# per.migrations.0090_auto_20231030_1505
+# per.migrations.0094_update_supported_by_organization_type
+# per.migrations.0096_migrate_formdata_notes
+# per.migrations.0098_auto_20240118_0552
+# per.migrations.0098_fix_reversion_data_20240208_0502
+# per.migrations.0099_migrate_notes
+# per.migrations.0100_auto_20240130_0851
+# per.migrations.0100_migrate_all_notes
+# per.migrations.0106_auto_20240314_1059
+# per.migrations.0108_auto_20240320_0801
+# per.migrations.0109_auto_20240320_0804
+# per.migrations.0110_auto_20240325_0611
+# per.migrations.0112_auto_20240426_0522
+
+
+class Migration(migrations.Migration):
+
+ replaces = [
+ ("per", "0001_initial"),
+ ("per", "0002_form_ns"),
+ ("per", "0003_auto_20190416_1021"),
+ ("per", "0004_auto_20190520_1436"),
+ ("per", "0005_auto_20190603_1703"),
+ ("per", "0006_draft"),
+ ("per", "0007_nsphase"),
+ ("per", "0008_erureadiness"),
+ ("per", "0009_auto_20190709_0835"),
+ ("per", "0010_workplan"),
+ ("per", "0011_auto_20190711_0757"),
+ ("per", "0012_auto_20190711_0859"),
+ ("per", "0013_remove_workplan_form"),
+ ("per", "0014_overview"),
+ ("per", "0015_auto_20190711_1236"),
+ ("per", "0016_auto_20190711_1305"),
+ ("per", "0017_nicedocument"),
+ ("per", "0018_draft_country"),
+ ("per", "0019_auto_20190716_1422"),
+ ("per", "0020_auto_20200618_0904"),
+ ("per", "0021_auto_20200903_0843"),
+ ("per", "0022_auto_20201012_1225"),
+ ("per", "0023_auto_20201012_1241"),
+ ("per", "0024_formcomponent_component_letter"),
+ ("per", "0025_auto_20201028_1606"),
+ ("per", "0026_auto_20201029_0851"),
+ ("per", "0027_auto_20201030_1539"),
+ ("per", "0028_auto_20201102_1154"),
+ ("per", "0029_auto_20201105_1529"),
+ ("per", "0030_auto_20201106_1205"),
+ ("per", "0031_auto_20201106_1222"),
+ ("per", "0032_remove_form_country"),
+ ("per", "0033_auto_20201116_1521"),
+ ("per", "0034_auto_20201119_1502"),
+ ("per", "0035_overview_assessment_number"),
+ ("per", "0036_auto_20201123_1055"),
+ ("per", "0037_formquestion_description"),
+ ("per", "0038_auto_20201130_1417"),
+ ("per", "0039_auto_20201208_1348"),
+ ("per", "0040_auto_20201214_1255"),
+ ("per", "0041_auto_20230417_0402"),
+ ("per", "0042_auto_20230502_0611"),
+ ("per", "0043_auto_20230505_0826"),
+ ("per", "0044_auto_20230508_0535"),
+ ("per", "0045_auto_20230508_0839"),
+ ("per", "0046_form_is_draft"),
+ ("per", "0047_auto_20230510_0527"),
+ ("per", "0048_auto_20230608_0615"),
+ ("per", "0049_auto_20230608_0621"),
+ ("per", "0050_alter_perassessment_overview"),
+ ("per", "0051_rename_area_response_perassessment_area_responses"),
+ ("per", "0052_auto_20230608_0837"),
+ ("per", "0053_auto_20230608_0919"),
+ ("per", "0054_auto_20230608_1022"),
+ ("per", "0055_auto_20230609_0516"),
+ ("per", "0056_perfile"),
+ ("per", "0057_remove_overview_orientation_document"),
+ ("per", "0058_overview_orientation_document"),
+ ("per", "0059_auto_20230614_0820"),
+ ("per", "0060_perassessment_is_draft"),
+ ("per", "0061_overview_phase"),
+ ("per", "0062_alter_overview_phase"),
+ ("per", "0063_perworkplancomponent_supported_by"),
+ ("per", "0064_overview_is_draft"),
+ ("per", "0065_rename_status_formcomponentresponse_rating"),
+ ("per", "0066_remove_formcomponentresponse_rating"),
+ ("per", "0067_auto_20230621_1003"),
+ ("per", "0068_auto_20230622_0420"),
+ ("per", "0069_auto_20230622_0426"),
+ ("per", "0070_auto_20230622_0531"),
+ ("per", "0071_remove_arearesponse_is_draft"),
+ ("per", "0072_remove_overview_orientation_document"),
+ ("per", "0073_overview_orientation_documents"),
+ ("per", "0074_auto_20230628_0541"),
+ ("per", "0075_auto_20230628_0552"),
+ ("per", "0041_auto_20230410_0720"),
+ ("per", "0076_merge_0041_auto_20230410_0720_0075_auto_20230628_0552"),
+ ("per", "0077_alter_formanswer_options"),
+ ("per", "0078_auto_20230711_0938"),
+ ("per", "0079_auto_20230712_0627"),
+ ("per", "0080_formcomponentresponse_notes"),
+ ("per", "0081_auto_20230731_1426"),
+ ("per", "0082_auto_20230822_0833"),
+ ("per", "0083_auto_20230828_0403"),
+ ("per", "0084_alter_overview_date_of_assessment"),
+ ("per", "0085_alter_overview_assessment_method"),
+ ("per", "0086_migrate_old_form"),
+ ("per", "0087_update_phase"),
+ ("per", "0088_update_assessment_method"),
+ ("per", "0089_alter_overview_type_of_previous_assessment"),
+ ("per", "0090_auto_20231030_1505"),
+ ("per", "0091_opslearning"),
+ ("per", "0092_auto_20240109_1950"),
+ ("per", "0093_perworkplancomponent_supported_by_organization_type"),
+ ("per", "0094_update_supported_by_organization_type"),
+ ("per", "0095_perdocumentupload"),
+ ("per", "0096_migrate_formdata_notes"),
+ ("per", "0097_formcomponent_is_parent"),
+ ("per", "0098_auto_20240118_0552"),
+ ("per", "0099_auto_20240130_0850"),
+ ("per", "0100_auto_20240130_0851"),
+ ("per", "0093_auto_20240116_1739"),
+ ("per", "0094_auto_20240116_1845"),
+ ("per", "0095_opslearning_appeal_document_id"),
+ ("per", "0096_alter_opslearning_appeal_code"),
+ ("per", "0097_alter_opslearning_appeal_code"),
+ ("per", "0101_merge_20240202_1004"),
+ ("per", "0098_fix_reversion_data_20240208_0502"),
+ ("per", "0102_merge_20240216_0447"),
+ ("per", "0099_migrate_notes"),
+ ("per", "0100_migrate_all_notes"),
+ ("per", "0103_merge_0100_migrate_all_notes_0102_merge_20240216_0447"),
+ ("per", "0104_alter_overview_phase"),
+ ("per", "0105_formcomponent_has_question_group"),
+ ("per", "0106_auto_20240314_1059"),
+ ("per", "0107_customperworkplancomponent_supported_by_organization_type"),
+ ("per", "0108_auto_20240320_0801"),
+ ("per", "0109_auto_20240320_0804"),
+ ("per", "0110_auto_20240325_0611"),
+ ("per", "0111_perdocumentupload_per"),
+ ("per", "0112_auto_20240426_0522"),
+ ("per", "0113_auto_20240521_0611"),
+ ("per", "0114_auto_20240521_0801"),
+ ("per", "0115_auto_20240521_0813"),
+ ("per", "0116_auto_20240521_0815"),
+ ("per", "0117_auto_20240522_0529"),
+ ("per", "0118_percomponentrating_title_ar_and_more"),
+ ("per", "0118_customperworkplancomponent_actions_ar_and_more"),
+ ("per", "0119_merge_20240524_0548"),
+ ("per", "0120_alter_formcomponent_status"),
+ ]
+
+ initial = True
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ("api", "0020_auto_20190703_0614"),
+ ("contenttypes", "0002_remove_content_type_name"),
+ ("api", "0019_auto_20190626_1420"),
+ ("deployments", "0088_alter_project_visibility"),
+ ("api", "0017_auto_20190424_1508"),
+ ("api", "0187_auto_20231218_0508"),
+ ("api", "0188_auto_20240109_0508"),
+ ("reversion", "0001_squashed_0004_auto_20160611_1202"),
+ ("api", "0169_auto_20230425_1120"),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name="NSPhase",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "phase",
+ models.IntegerField(
+ choices=[
+ (0, "baseline"),
+ (1, "orientation"),
+ (2, "assessment"),
+ (3, "prioritization"),
+ (4, "plan of action"),
+ (5, "action and accountability"),
+ ],
+ default=0,
+ ),
+ ),
+ ("updated_at", models.DateTimeField(auto_now=True)),
+ ("country", models.OneToOneField(default=1, on_delete=django.db.models.deletion.CASCADE, to="api.country")),
+ ],
+ options={
+ "verbose_name": "NS PER Process Phase",
+ "verbose_name_plural": "NS-es PER Process Phase",
+ "ordering": ("updated_at", "country"),
+ },
+ ),
+ migrations.CreateModel(
+ name="WorkPlan",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "prioritization",
+ models.IntegerField(
+ choices=[(0, "low"), (1, "medium"), (2, "high")], default=0, verbose_name="prioritization"
+ ),
+ ),
+ ("components", models.CharField(blank=True, max_length=900, null=True, verbose_name="components")),
+ ("benchmark", models.CharField(blank=True, max_length=900, null=True, verbose_name="benchmark")),
+ ("actions", models.CharField(blank=True, max_length=900, null=True, verbose_name="actions")),
+ ("comments", models.CharField(blank=True, max_length=900, null=True, verbose_name="comments")),
+ ("timeline", models.DateTimeField(verbose_name="timeline")),
+ (
+ "status",
+ models.IntegerField(
+ choices=[
+ (0, "standby"),
+ (1, "ongoing"),
+ (2, "cancelled"),
+ (3, "delayed"),
+ (4, "pending"),
+ (5, "need improvements"),
+ (6, "finished"),
+ (7, "approved"),
+ (8, "closed"),
+ ],
+ default=0,
+ verbose_name="status",
+ ),
+ ),
+ ("support_required", models.BooleanField(default=False, verbose_name="support required")),
+ ("focal_point", models.CharField(blank=True, max_length=90, null=True, verbose_name="focal point")),
+ ("code", models.CharField(blank=True, max_length=10, null=True, verbose_name="code")),
+ (
+ "country",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ ("question_id", models.CharField(blank=True, max_length=10, null=True, verbose_name="question id")),
+ (
+ "user",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="user",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "PER Work Plan",
+ "verbose_name_plural": "PER Work Plans",
+ "ordering": ("prioritization", "country"),
+ },
+ ),
+ migrations.CreateModel(
+ name="NiceDocument",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("name", models.CharField(max_length=100, verbose_name="name")),
+ (
+ "document",
+ models.FileField(blank=True, null=True, upload_to=per.models.nice_document_path, verbose_name="document"),
+ ),
+ ("document_url", models.URLField(blank=True, verbose_name="document url")),
+ (
+ "visibility",
+ models.IntegerField(choices=[(0, "hidden"), (1, "visible")], default=1, verbose_name="visibility"),
+ ),
+ (
+ "country",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="perdoc_country",
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "PER Document",
+ "verbose_name_plural": "PER Documents",
+ "ordering": ("visibility", "country"),
+ },
+ ),
+ migrations.CreateModel(
+ name="FormAnswer",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("text", models.CharField(max_length=40, verbose_name="text")),
+ ("text_ar", models.CharField(max_length=40, null=True, verbose_name="text")),
+ ("text_en", models.CharField(max_length=40, null=True, verbose_name="text")),
+ ("text_es", models.CharField(max_length=40, null=True, verbose_name="text")),
+ ("text_fr", models.CharField(max_length=40, null=True, verbose_name="text")),
+ (
+ "translation_module_original_language",
+ models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ (
+ "translation_module_skip_auto_translation",
+ models.BooleanField(
+ default=False,
+ help_text="Skip auto translation operation for this entity?",
+ verbose_name="Skip auto translation",
+ ),
+ ),
+ ],
+ options={
+ "ordering": ("id",),
+ },
+ ),
+ migrations.CreateModel(
+ name="FormArea",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=250, verbose_name="title")),
+ ("area_num", models.IntegerField(default=1, verbose_name="area number")),
+ ("title_ar", models.CharField(max_length=250, null=True, verbose_name="title")),
+ ("title_en", models.CharField(max_length=250, null=True, verbose_name="title")),
+ ("title_es", models.CharField(max_length=250, null=True, verbose_name="title")),
+ ("title_fr", models.CharField(max_length=250, null=True, verbose_name="title")),
+ (
+ "translation_module_original_language",
+ models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ (
+ "translation_module_skip_auto_translation",
+ models.BooleanField(
+ default=False,
+ help_text="Skip auto translation operation for this entity?",
+ verbose_name="Skip auto translation",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="FormComponent",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=250, verbose_name="title")),
+ ("component_num", models.IntegerField(default=1, verbose_name="component number")),
+ ("description", models.TextField(blank=True, null=True, verbose_name="description")),
+ ("area", models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to="per.formarea", verbose_name="area")),
+ ("component_letter", models.CharField(blank=True, max_length=3, null=True, verbose_name="component letter")),
+ ("description_ar", models.TextField(blank=True, null=True, verbose_name="description")),
+ ("description_en", models.TextField(blank=True, null=True, verbose_name="description")),
+ ("description_es", models.TextField(blank=True, null=True, verbose_name="description")),
+ ("description_fr", models.TextField(blank=True, null=True, verbose_name="description")),
+ ("title_ar", models.CharField(max_length=250, null=True, verbose_name="title")),
+ ("title_en", models.CharField(max_length=250, null=True, verbose_name="title")),
+ ("title_es", models.CharField(max_length=250, null=True, verbose_name="title")),
+ ("title_fr", models.CharField(max_length=250, null=True, verbose_name="title")),
+ (
+ "status",
+ models.CharField(
+ blank=True,
+ choices=[
+ ("high_performance", "High Performance"),
+ ("exists_could_be_strengthened", "Exits Could be Strengthened"),
+ ("needs_improvement", "Needs Improvement"),
+ ("partially_exists", "Partially Exists"),
+ ("does_not_exist", "Does Not Exist"),
+ ],
+ max_length=100,
+ null=True,
+ verbose_name="status",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="FormQuestion",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("question", models.CharField(max_length=500, verbose_name="question")),
+ ("question_num", models.IntegerField(blank=True, null=True, verbose_name="question number")),
+ ("answers", models.ManyToManyField(blank=True, to="per.formanswer", verbose_name="answers")),
+ (
+ "component",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT, to="per.formcomponent", verbose_name="component"
+ ),
+ ),
+ ("question_ar", models.CharField(max_length=500, null=True, verbose_name="question")),
+ ("question_en", models.CharField(max_length=500, null=True, verbose_name="question")),
+ ("question_es", models.CharField(max_length=500, null=True, verbose_name="question")),
+ ("question_fr", models.CharField(max_length=500, null=True, verbose_name="question")),
+ ("description", tinymce.models.HTMLField(blank=True, null=True, verbose_name="description")),
+ ("description_ar", tinymce.models.HTMLField(blank=True, null=True, verbose_name="description")),
+ ("description_en", tinymce.models.HTMLField(blank=True, null=True, verbose_name="description")),
+ ("description_es", tinymce.models.HTMLField(blank=True, null=True, verbose_name="description")),
+ ("description_fr", tinymce.models.HTMLField(blank=True, null=True, verbose_name="description")),
+ (
+ "translation_module_original_language",
+ models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ (
+ "translation_module_skip_auto_translation",
+ models.BooleanField(
+ default=False,
+ help_text="Skip auto translation operation for this entity?",
+ verbose_name="Skip auto translation",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="AssessmentType",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("name", models.CharField(max_length=200, verbose_name="name")),
+ ("name_ar", models.CharField(max_length=200, null=True, verbose_name="name")),
+ ("name_en", models.CharField(max_length=200, null=True, verbose_name="name")),
+ ("name_es", models.CharField(max_length=200, null=True, verbose_name="name")),
+ ("name_fr", models.CharField(max_length=200, null=True, verbose_name="name")),
+ (
+ "translation_module_original_language",
+ models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ (
+ "translation_module_skip_auto_translation",
+ models.BooleanField(
+ default=False,
+ help_text="Skip auto translation operation for this entity?",
+ verbose_name="Skip auto translation",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "PER Assessment Type",
+ "verbose_name_plural": "PER Assessment Types",
+ },
+ ),
+ migrations.CreateModel(
+ name="Overview",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("facilitator_email", models.CharField(blank=True, max_length=90, null=True, verbose_name="facilitator email")),
+ (
+ "country",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="per_overviews",
+ to="api.country",
+ verbose_name="country",
+ ),
+ ),
+ (
+ "user",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="user",
+ ),
+ ),
+ (
+ "created_at",
+ models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now, verbose_name="created at"),
+ ),
+ ("updated_at", models.DateTimeField(auto_now=True, verbose_name="updated at")),
+ ("branches_involved", models.CharField(blank=True, max_length=400, null=True, verbose_name="branches involved")),
+ ("date_of_assessment", models.DateField(verbose_name="date of assessment")),
+ (
+ "facilitator_contact",
+ models.CharField(blank=True, max_length=90, null=True, verbose_name="facilitator other contacts"),
+ ),
+ ("facilitator_name", models.CharField(blank=True, max_length=90, null=True, verbose_name="facilitator name")),
+ ("facilitator_phone", models.CharField(blank=True, max_length=90, null=True, verbose_name="facilitator phone")),
+ (
+ "method_asmt_used",
+ models.CharField(
+ blank=True,
+ choices=[("per", "Per"), ("drce", "Drce"), ("wpns", "WPNS")],
+ max_length=90,
+ null=True,
+ verbose_name="what method has this assessment used",
+ ),
+ ),
+ (
+ "ns_focal_point_email",
+ models.CharField(blank=True, max_length=90, null=True, verbose_name="ns focal point email"),
+ ),
+ (
+ "ns_focal_point_name",
+ models.CharField(blank=True, max_length=90, null=True, verbose_name="ns focal point name"),
+ ),
+ (
+ "ns_focal_point_phone",
+ models.CharField(blank=True, max_length=90, null=True, verbose_name="ns focal point phone"),
+ ),
+ (
+ "partner_focal_point_email",
+ models.CharField(blank=True, max_length=90, null=True, verbose_name="partner focal point email"),
+ ),
+ (
+ "partner_focal_point_name",
+ models.CharField(blank=True, max_length=90, null=True, verbose_name="partner focal point name"),
+ ),
+ (
+ "partner_focal_point_organization",
+ models.CharField(blank=True, max_length=90, null=True, verbose_name="partner focal point organization name"),
+ ),
+ (
+ "partner_focal_point_phone",
+ models.CharField(blank=True, max_length=90, null=True, verbose_name="partner focal point phone"),
+ ),
+ (
+ "type_of_assessment",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="type_of_assessment",
+ to="per.assessmenttype",
+ verbose_name="type of assessment",
+ ),
+ ),
+ ("assessment_number", models.IntegerField(default=1, verbose_name="assessment number")),
+ (
+ "assess_climate_environment_of_country",
+ models.BooleanField(
+ blank=True,
+ null=True,
+ verbose_name="Do you want to assess the climate and environment of your National Society?",
+ ),
+ ),
+ (
+ "assess_preparedness_of_country",
+ models.BooleanField(
+ blank=True,
+ null=True,
+ verbose_name="Do you want to assess the preparedness of your National Society for epidemics and pandemics?",
+ ),
+ ),
+ (
+ "assess_urban_aspect_of_country",
+ models.BooleanField(
+ blank=True, null=True, verbose_name="Do you want to assess the urban aspects of your National Society?"
+ ),
+ ),
+ ("date_of_orientation", models.DateField(blank=True, null=True, verbose_name="Date of Orientation")),
+ (
+ "date_of_previous_assessment",
+ models.DateField(blank=True, null=True, verbose_name="Date of previous assessment"),
+ ),
+ (
+ "type_of_per_assessment",
+ models.CharField(blank=True, max_length=255, null=True, verbose_name="Type of Per Asessement"),
+ ),
+ ("workplan_development_date", models.DateField(blank=True, null=True, verbose_name="Workplan Development Date")),
+ ("workplan_revision_date", models.DateField(blank=True, null=True, verbose_name="Workplan Revision Date")),
+ (
+ "ns_second_focal_point_email",
+ models.CharField(blank=True, max_length=90, null=True, verbose_name="ns second focal point email"),
+ ),
+ (
+ "ns_second_focal_point_name",
+ models.CharField(blank=True, max_length=90, null=True, verbose_name="ns second focal point name"),
+ ),
+ (
+ "ns_second_focal_point_phone",
+ models.CharField(blank=True, max_length=90, null=True, verbose_name="ns second focal point phone"),
+ ),
+ (
+ "phase",
+ models.IntegerField(
+ blank=True,
+ choices=[
+ (1, "Orientation"),
+ (2, "Assessment"),
+ (3, "Prioritisation"),
+ (4, "WorkPlan"),
+ (5, "Action And Accoutability"),
+ ],
+ default=1,
+ null=True,
+ verbose_name="phase",
+ ),
+ ),
+ ("is_draft", models.BooleanField(blank=True, null=True, verbose_name="is draft")),
+ ],
+ options={
+ "verbose_name": "PER General Overview",
+ "verbose_name_plural": "PER General Overviews",
+ "ordering": ("country",),
+ },
+ ),
+ migrations.CreateModel(
+ name="Form",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "user",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="user",
+ ),
+ ),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ ("updated_at", models.DateTimeField(auto_now=True, verbose_name="updated at")),
+ ("comment", models.TextField(blank=True, null=True, verbose_name="comment")),
+ (
+ "area",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.PROTECT, to="per.formarea", verbose_name="area"
+ ),
+ ),
+ (
+ "overview",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="forms",
+ to="per.overview",
+ verbose_name="overview",
+ ),
+ ),
+ ],
+ options={
+ "ordering": ("area", "created_at"),
+ "verbose_name": "Form",
+ "verbose_name_plural": "Forms",
+ },
+ ),
+ migrations.CreateModel(
+ name="FormData",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("notes", models.TextField(blank=True, null=True, verbose_name="notes")),
+ (
+ "form",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, related_name="form_data", to="per.form", verbose_name="form"
+ ),
+ ),
+ (
+ "question",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="per.formquestion", verbose_name="question"
+ ),
+ ),
+ (
+ "selected_answer",
+ models.ForeignKey(
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="per.formanswer", verbose_name="answer"
+ ),
+ ),
+ ("notes_ar", models.TextField(blank=True, null=True, verbose_name="notes")),
+ ("notes_en", models.TextField(blank=True, null=True, verbose_name="notes")),
+ ("notes_es", models.TextField(blank=True, null=True, verbose_name="notes")),
+ ("notes_fr", models.TextField(blank=True, null=True, verbose_name="notes")),
+ (
+ "translation_module_original_language",
+ models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ (
+ "translation_module_skip_auto_translation",
+ models.BooleanField(
+ default=False,
+ help_text="Skip auto translation operation for this entity?",
+ verbose_name="Skip auto translation",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "Form Data",
+ "verbose_name_plural": "Form Data",
+ "ordering": ("form", "question__question_num"),
+ },
+ ),
+ migrations.CreateModel(
+ name="CustomPerWorkPlanComponent",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("actions", models.TextField(blank=True, max_length=900, null=True, verbose_name="Actions")),
+ ("due_date", models.DateField(blank=True, null=True, verbose_name="Due date")),
+ (
+ "status",
+ models.IntegerField(
+ choices=[(0, "Not Started"), (1, "Ongoing"), (2, "Delayed"), (3, "Standby"), (4, "Finished")],
+ default=0,
+ verbose_name="status",
+ ),
+ ),
+ (
+ "supported_by",
+ models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="api.country"),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="FormComponentConsiderations",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("urban_considerations", models.TextField(blank=True, null=True, verbose_name="Urban Considerations")),
+ ("epi_considerations", models.TextField(blank=True, null=True, verbose_name="Epi Considerations")),
+ (
+ "climate_environmental_conisderations",
+ models.TextField(blank=True, null=True, verbose_name="Climate Environmental Considerations"),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="FormComponentQuestionAndAnswer",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("notes", models.TextField(blank=True, null=True, verbose_name="notes")),
+ (
+ "answer",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="per.formanswer",
+ verbose_name="answer",
+ ),
+ ),
+ (
+ "question",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="per.formquestion",
+ verbose_name="question",
+ ),
+ ),
+ ],
+ ),
+ migrations.AddField(
+ model_name="formcomponent",
+ name="question_responses",
+ field=models.ManyToManyField(blank=True, to="per.formcomponentquestionandanswer", verbose_name="Question responses"),
+ ),
+ migrations.CreateModel(
+ name="FormComponentResponse",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "component",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to="per.formcomponent",
+ verbose_name="Form Component",
+ ),
+ ),
+ (
+ "consideration_responses",
+ models.ManyToManyField(
+ blank=True, to="per.formcomponentconsiderations", verbose_name="Consideration responses"
+ ),
+ ),
+ (
+ "question_responses",
+ models.ManyToManyField(
+ blank=True, to="per.formcomponentquestionandanswer", verbose_name="Question responses"
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="AreaResponse",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("area", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="per.formarea", verbose_name="Area")),
+ (
+ "component_response",
+ models.ManyToManyField(blank=True, to="per.formcomponentresponse", verbose_name="Component Response"),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="FormPrioritizationComponent",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("is_prioritized", models.BooleanField(blank=True, null=True, verbose_name="Is prioritized")),
+ ("justification_text", models.TextField(blank=True, null=True, verbose_name="Justification Text")),
+ (
+ "component",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to="per.formcomponent",
+ verbose_name="component",
+ ),
+ ),
+ ],
+ ),
+ migrations.CreateModel(
+ name="PerFile",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("file", models.FileField(upload_to="per/images/", verbose_name="file")),
+ ("caption", models.CharField(blank=True, max_length=225, null=True)),
+ ("client_id", models.CharField(blank=True, max_length=50, null=True)),
+ (
+ "created_by",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="created_by",
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "per file",
+ "verbose_name_plural": "per files",
+ },
+ ),
+ migrations.CreateModel(
+ name="PerComponentRating",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=250, verbose_name="title")),
+ ("value", models.IntegerField(verbose_name="value")),
+ ],
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="rating",
+ field=models.ForeignKey(
+ blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="per.percomponentrating"
+ ),
+ ),
+ migrations.CreateModel(
+ name="PerWorkPlanComponent",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("actions", models.TextField(blank=True, max_length=900, null=True, verbose_name="Actions")),
+ ("due_date", models.DateField(blank=True, null=True, verbose_name="Due date")),
+ (
+ "status",
+ models.IntegerField(
+ choices=[(0, "Not Started"), (1, "Ongoing"), (2, "Delayed"), (3, "Standby"), (4, "Finished")],
+ default=0,
+ verbose_name="status",
+ ),
+ ),
+ (
+ "component",
+ models.ForeignKey(
+ default=85, on_delete=django.db.models.deletion.CASCADE, to="per.formcomponent", verbose_name="Component"
+ ),
+ ),
+ (
+ "supported_by",
+ models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="api.country"),
+ ),
+ ],
+ ),
+ migrations.AddField(
+ model_name="overview",
+ name="orientation_documents",
+ field=models.ManyToManyField(blank=True, to="per.perfile", verbose_name="orientation documents"),
+ ),
+ migrations.CreateModel(
+ name="FormPrioritization",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "prioritized_action_responses",
+ models.ManyToManyField(
+ blank=True, to="per.formprioritizationcomponent", verbose_name="Form prioritization component"
+ ),
+ ),
+ (
+ "overview",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to="per.overview",
+ verbose_name="Overview",
+ ),
+ ),
+ ("is_draft", models.BooleanField(default=True, verbose_name="is draft")),
+ ],
+ ),
+ migrations.CreateModel(
+ name="PerWorkPlan",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ (
+ "overview",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="per.overview",
+ verbose_name="Overview",
+ ),
+ ),
+ (
+ "prioritized_action_responses",
+ models.ManyToManyField(blank=True, to="per.perworkplancomponent", verbose_name="WorkPlan Component"),
+ ),
+ (
+ "additional_action_responses",
+ models.ManyToManyField(
+ blank=True, to="per.customperworkplancomponent", verbose_name="Custom Per-WorkPlan Component"
+ ),
+ ),
+ ("is_draft", models.BooleanField(default=True, verbose_name="is draft")),
+ ],
+ ),
+ migrations.AlterField(
+ model_name="overview",
+ name="is_draft",
+ field=models.BooleanField(default=True, verbose_name="is draft"),
+ ),
+ migrations.CreateModel(
+ name="PerAssessment",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("area_responses", models.ManyToManyField(blank=True, to="per.arearesponse", verbose_name="Area Response")),
+ (
+ "overview",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.PROTECT,
+ to="per.overview",
+ verbose_name="Overview",
+ ),
+ ),
+ (
+ "user",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="user",
+ ),
+ ),
+ ("is_draft", models.BooleanField(default=True, verbose_name="is draft")),
+ ],
+ ),
+ migrations.RemoveField(
+ model_name="formcomponentresponse",
+ name="consideration_responses",
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="climate_environmental_considerations",
+ field=models.TextField(blank=True, null=True, verbose_name="Climate Environmental Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="epi_considerations",
+ field=models.TextField(blank=True, null=True, verbose_name="Epi Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="urban_considerations",
+ field=models.TextField(blank=True, null=True, verbose_name="Urban Considerations"),
+ ),
+ migrations.DeleteModel(
+ name="FormComponentConsiderations",
+ ),
+ migrations.AddField(
+ model_name="formcomponent",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="formcomponent",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.RenameField(
+ model_name="overview",
+ old_name="method_asmt_used",
+ new_name="assessment_method",
+ ),
+ migrations.RemoveField(
+ model_name="overview",
+ name="type_of_per_assessment",
+ ),
+ migrations.AddField(
+ model_name="overview",
+ name="type_of_previous_assessment",
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="type_of_previous_assessment",
+ to="per.assessmenttype",
+ verbose_name="type of previous assessment",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="formcomponentresponse",
+ name="component",
+ field=models.ForeignKey(
+ default=85, on_delete=django.db.models.deletion.CASCADE, to="per.formcomponent", verbose_name="Form Component"
+ ),
+ preserve_default=False,
+ ),
+ migrations.AlterField(
+ model_name="formprioritizationcomponent",
+ name="component",
+ field=models.ForeignKey(
+ default=85, on_delete=django.db.models.deletion.CASCADE, to="per.formcomponent", verbose_name="component"
+ ),
+ preserve_default=False,
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="notes",
+ field=models.TextField(blank=True, null=True, verbose_name="Notes"),
+ ),
+ migrations.AlterField(
+ model_name="overview",
+ name="date_of_assessment",
+ field=models.DateField(blank=True, null=True, verbose_name="date of assessment"),
+ ),
+ migrations.AlterField(
+ model_name="overview",
+ name="assessment_method",
+ field=models.CharField(
+ blank=True,
+ choices=[("per", "PER"), ("drce", "DRCE"), ("wpns", "WPNS")],
+ max_length=90,
+ null=True,
+ verbose_name="what method has this assessment used",
+ ),
+ ),
+ # migrations.RunPython(
+ # code=per.migrations.0086_migrate_old_form.Migration.migrate_data,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ # migrations.RunPython(
+ # code=per.migrations.0087_update_phase.Migration.update_phase,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ # migrations.RunPython(
+ # code=per.migrations.0088_update_assessment_method.Migration.update_overview_assessment_method,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AlterField(
+ model_name="overview",
+ name="type_of_previous_assessment",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="type_of_previous_assessment",
+ to="per.assessmenttype",
+ verbose_name="type of previous assessment",
+ ),
+ ),
+ # migrations.RunPython(
+ # code=per.migrations.0090_auto_20231030_1505.update_question_answer,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.CreateModel(
+ name="OpsLearning",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("learning", models.TextField(blank=True, null=True, verbose_name="learning")),
+ ("learning_validated", models.TextField(blank=True, null=True, verbose_name="learning (validated)")),
+ ("appeal_code", models.CharField(blank=True, max_length=20, null=True, verbose_name="appeal (MDR) code")),
+ ("type", models.IntegerField(choices=[(1, "Lesson learned"), (2, "Challenge")], default=1, verbose_name="type")),
+ (
+ "type_validated",
+ models.IntegerField(
+ choices=[(1, "Lesson learned"), (2, "Challenge")], default=1, verbose_name="type (validated)"
+ ),
+ ),
+ ("is_validated", models.BooleanField(default=False, verbose_name="is validated?")),
+ ("modified_at", models.DateTimeField(auto_now=True, verbose_name="modified_at")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ (
+ "per_component",
+ models.ManyToManyField(
+ blank=True, related_name="components", to="per.formcomponent", verbose_name="PER Components"
+ ),
+ ),
+ (
+ "per_component_validated",
+ models.ManyToManyField(
+ blank=True,
+ related_name="validated_components",
+ to="per.formcomponent",
+ verbose_name="PER Components (validated)",
+ ),
+ ),
+ (
+ "sector",
+ models.ManyToManyField(
+ blank=True, related_name="sectors", to="deployments.sectortag", verbose_name="Sectors"
+ ),
+ ),
+ (
+ "sector_validated",
+ models.ManyToManyField(
+ blank=True,
+ related_name="validated_sectors",
+ to="deployments.sectortag",
+ verbose_name="Sectors (validated)",
+ ),
+ ),
+ (
+ "organization",
+ models.IntegerField(
+ choices=[(1, "Secretariat"), (2, "National Society")], default=1, verbose_name="organization"
+ ),
+ ),
+ (
+ "organization_validated",
+ models.IntegerField(
+ choices=[(1, "Secretariat"), (2, "National Society")], default=1, verbose_name="organization (validated)"
+ ),
+ ),
+ ],
+ options={
+ "verbose_name": "Operational Learning",
+ "verbose_name_plural": "Operational Learnings",
+ "ordering": ("learning",),
+ },
+ ),
+ migrations.AddField(
+ model_name="perworkplancomponent",
+ name="supported_by_organization_type",
+ field=models.IntegerField(
+ blank=True,
+ choices=[(0, "UN Organization"), (1, "Private Sector"), (2, "Government"), (3, "National Society")],
+ null=True,
+ verbose_name="Supported By Organization Type",
+ ),
+ ),
+ # migrations.RunPython(
+ # code=per.migrations.0094_update_supported_by_organization_type.Migration.update_suported_by_oragnization_type,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.CreateModel(
+ name="PerDocumentUpload",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("file", models.FileField(upload_to="per/documents/", verbose_name="file")),
+ ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
+ (
+ "country",
+ models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="api.country", verbose_name="country"),
+ ),
+ (
+ "created_by",
+ models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to=settings.AUTH_USER_MODEL,
+ verbose_name="created_by",
+ ),
+ ),
+ ],
+ ),
+ # migrations.RunPython(
+ # code=per.migrations.0096_migrate_formdata_notes.Migration.migrate_formdata_notes,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AddField(
+ model_name="formcomponent",
+ name="is_parent",
+ field=models.BooleanField(blank=True, null=True, verbose_name="Is parent"),
+ ),
+ # migrations.RunPython(
+ # code=per.migrations.0098_auto_20240118_0552.Migration.update_component_description,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.CreateModel(
+ name="FormQuestionGroup",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=250, verbose_name="title")),
+ ("title_en", models.CharField(max_length=250, null=True, verbose_name="title")),
+ ("title_es", models.CharField(max_length=250, null=True, verbose_name="title")),
+ ("title_fr", models.CharField(max_length=250, null=True, verbose_name="title")),
+ ("title_ar", models.CharField(max_length=250, null=True, verbose_name="title")),
+ ("description", models.TextField(blank=True, null=True, verbose_name="description")),
+ ("description_en", models.TextField(blank=True, null=True, verbose_name="description")),
+ ("description_es", models.TextField(blank=True, null=True, verbose_name="description")),
+ ("description_fr", models.TextField(blank=True, null=True, verbose_name="description")),
+ ("description_ar", models.TextField(blank=True, null=True, verbose_name="description")),
+ (
+ "translation_module_original_language",
+ models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ (
+ "translation_module_skip_auto_translation",
+ models.BooleanField(
+ default=False,
+ help_text="Skip auto translation operation for this entity?",
+ verbose_name="Skip auto translation",
+ ),
+ ),
+ (
+ "component",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.PROTECT, to="per.formcomponent", verbose_name="component"
+ ),
+ ),
+ ],
+ ),
+ migrations.AddField(
+ model_name="formquestion",
+ name="question_group",
+ field=models.ForeignKey(
+ blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="per.formquestiongroup"
+ ),
+ ),
+ # migrations.RunPython(
+ # code=per.migrations.0100_auto_20240130_0851.Migration.migrate_component_to_question_group,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.CreateModel(
+ name="OrganizationTypes",
+ fields=[
+ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
+ ("title", models.CharField(max_length=255, verbose_name="title")),
+ ("is_deprecated", models.BooleanField(default=False, help_text="Is this a deprecated Organization type?")),
+ ("order", models.SmallIntegerField(default=0)),
+ ],
+ options={
+ "verbose_name": "Organization type",
+ "verbose_name_plural": "Organization types",
+ },
+ ),
+ migrations.RemoveField(
+ model_name="opslearning",
+ name="organization",
+ ),
+ migrations.RemoveField(
+ model_name="opslearning",
+ name="organization_validated",
+ ),
+ migrations.AddField(
+ model_name="opslearning",
+ name="organization",
+ field=models.ManyToManyField(
+ blank=True, related_name="organizations", to="per.organizationtypes", verbose_name="Organizations"
+ ),
+ ),
+ migrations.AddField(
+ model_name="opslearning",
+ name="organization_validated",
+ field=models.ManyToManyField(
+ blank=True,
+ related_name="validated_organizations",
+ to="per.organizationtypes",
+ verbose_name="Organizations (validated)",
+ ),
+ ),
+ migrations.AddField(
+ model_name="opslearning",
+ name="appeal_document_id",
+ field=models.IntegerField(blank=True, null=True, verbose_name="Appeal document ID"),
+ ),
+ migrations.AlterField(
+ model_name="opslearning",
+ name="appeal_code",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.appeal",
+ to_field="code",
+ verbose_name="appeal (MDR) code",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="opslearning",
+ name="appeal_code",
+ field=models.ForeignKey(
+ blank=True,
+ db_column="appeal_code",
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="api.appeal",
+ to_field="code",
+ verbose_name="appeal (MDR) code",
+ ),
+ ),
+ # migrations.RunPython(
+ # code=per.migrations.0098_fix_reversion_data_20240208_0502.modify_per_datetime_data_to_date,
+ # reverse_code=per.migrations.0098_fix_reversion_data_20240208_0502.modify_per_date_data_to_datetime,
+ # ),
+ # migrations.RunPython(
+ # code=per.migrations.0099_migrate_notes.migrate_formdata_notes,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ # migrations.RunPython(
+ # code=per.migrations.0100_migrate_all_notes.migrate_formdata_notes,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AlterField(
+ model_name="overview",
+ name="phase",
+ field=models.IntegerField(
+ blank=True,
+ choices=[
+ (1, "Orientation"),
+ (2, "Assessment"),
+ (3, "Prioritisation"),
+ (4, "WorkPlan"),
+ (5, "Action And Accountability"),
+ ],
+ default=1,
+ null=True,
+ verbose_name="phase",
+ ),
+ ),
+ migrations.AddField(
+ model_name="formcomponent",
+ name="has_question_group",
+ field=models.BooleanField(blank=True, null=True, verbose_name="Has Question Group"),
+ ),
+ # migrations.RunPython(
+ # code=per.migrations.0106_auto_20240314_1059.update_component_question_group,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AddField(
+ model_name="customperworkplancomponent",
+ name="supported_by_organization_type",
+ field=models.IntegerField(
+ blank=True,
+ choices=[(0, "UN Organization"), (1, "Private Sector"), (2, "Government"), (3, "National Society")],
+ null=True,
+ verbose_name="Supported By Organization Type",
+ ),
+ ),
+ # migrations.RunPython(
+ # code=per.migrations.0108_auto_20240320_0801.update_suported_by_oragnization_type,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ # migrations.RunPython(
+ # code=per.migrations.0109_auto_20240320_0804.update_description_to_null,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ # migrations.RunPython(
+ # code=per.migrations.0110_auto_20240325_0611.update_description_to_null,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AddField(
+ model_name="perdocumentupload",
+ name="per",
+ field=models.ForeignKey(
+ blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to="per.overview", verbose_name="Per"
+ ),
+ ),
+ # migrations.RunPython(
+ # code=per.migrations.0112_auto_20240426_0522.delete_form_question,
+ # reverse_code=django.db.migrations.operations.special.RunPython.noop,
+ # ),
+ migrations.AddField(
+ model_name="formcomponentquestionandanswer",
+ name="notes_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="notes"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentquestionandanswer",
+ name="notes_en",
+ field=models.TextField(blank=True, null=True, verbose_name="notes"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentquestionandanswer",
+ name="notes_es",
+ field=models.TextField(blank=True, null=True, verbose_name="notes"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentquestionandanswer",
+ name="notes_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="notes"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentquestionandanswer",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="formcomponentquestionandanswer",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="climate_environmental_considerations_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Climate Environmental Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="climate_environmental_considerations_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Climate Environmental Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="climate_environmental_considerations_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Climate Environmental Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="climate_environmental_considerations_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Climate Environmental Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="epi_considerations_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Epi Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="epi_considerations_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Epi Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="epi_considerations_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Epi Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="epi_considerations_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Epi Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="notes_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Notes"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="notes_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Notes"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="notes_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Notes"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="notes_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Notes"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="urban_considerations_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Urban Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="urban_considerations_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Urban Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="urban_considerations_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Urban Considerations"),
+ ),
+ migrations.AddField(
+ model_name="formcomponentresponse",
+ name="urban_considerations_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Urban Considerations"),
+ ),
+ migrations.AddField(
+ model_name="overview",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="overview",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="arearesponse",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="arearesponse",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="perassessment",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="perassessment",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="percomponentrating",
+ name="title_ar",
+ field=models.CharField(max_length=250, null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="percomponentrating",
+ name="title_en",
+ field=models.CharField(max_length=250, null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="percomponentrating",
+ name="title_es",
+ field=models.CharField(max_length=250, null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="percomponentrating",
+ name="title_fr",
+ field=models.CharField(max_length=250, null=True, verbose_name="title"),
+ ),
+ migrations.AddField(
+ model_name="percomponentrating",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="percomponentrating",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="customperworkplancomponent",
+ name="actions_ar",
+ field=models.TextField(blank=True, max_length=900, null=True, verbose_name="Actions"),
+ ),
+ migrations.AddField(
+ model_name="customperworkplancomponent",
+ name="actions_en",
+ field=models.TextField(blank=True, max_length=900, null=True, verbose_name="Actions"),
+ ),
+ migrations.AddField(
+ model_name="customperworkplancomponent",
+ name="actions_es",
+ field=models.TextField(blank=True, max_length=900, null=True, verbose_name="Actions"),
+ ),
+ migrations.AddField(
+ model_name="customperworkplancomponent",
+ name="actions_fr",
+ field=models.TextField(blank=True, max_length=900, null=True, verbose_name="Actions"),
+ ),
+ migrations.AddField(
+ model_name="customperworkplancomponent",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="customperworkplancomponent",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="formprioritizationcomponent",
+ name="justification_text_ar",
+ field=models.TextField(blank=True, null=True, verbose_name="Justification Text"),
+ ),
+ migrations.AddField(
+ model_name="formprioritizationcomponent",
+ name="justification_text_en",
+ field=models.TextField(blank=True, null=True, verbose_name="Justification Text"),
+ ),
+ migrations.AddField(
+ model_name="formprioritizationcomponent",
+ name="justification_text_es",
+ field=models.TextField(blank=True, null=True, verbose_name="Justification Text"),
+ ),
+ migrations.AddField(
+ model_name="formprioritizationcomponent",
+ name="justification_text_fr",
+ field=models.TextField(blank=True, null=True, verbose_name="Justification Text"),
+ ),
+ migrations.AddField(
+ model_name="formprioritizationcomponent",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="formprioritizationcomponent",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AddField(
+ model_name="perworkplancomponent",
+ name="actions_ar",
+ field=models.TextField(blank=True, max_length=900, null=True, verbose_name="Actions"),
+ ),
+ migrations.AddField(
+ model_name="perworkplancomponent",
+ name="actions_en",
+ field=models.TextField(blank=True, max_length=900, null=True, verbose_name="Actions"),
+ ),
+ migrations.AddField(
+ model_name="perworkplancomponent",
+ name="actions_es",
+ field=models.TextField(blank=True, max_length=900, null=True, verbose_name="Actions"),
+ ),
+ migrations.AddField(
+ model_name="perworkplancomponent",
+ name="actions_fr",
+ field=models.TextField(blank=True, max_length=900, null=True, verbose_name="Actions"),
+ ),
+ migrations.AddField(
+ model_name="perworkplancomponent",
+ name="translation_module_original_language",
+ field=models.CharField(
+ choices=[("en", "English"), ("es", "Spanish"), ("fr", "French"), ("ar", "Arabic")],
+ default="en",
+ help_text="Language used to create this entity",
+ max_length=2,
+ verbose_name="Entity Original language",
+ ),
+ ),
+ migrations.AddField(
+ model_name="perworkplancomponent",
+ name="translation_module_skip_auto_translation",
+ field=models.BooleanField(
+ default=False, help_text="Skip auto translation operation for this entity?", verbose_name="Skip auto translation"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="formcomponent",
+ name="status",
+ field=models.CharField(
+ blank=True,
+ choices=[
+ ("high_performance", "High Performance"),
+ ("exists_could_be_strengthened", "Exists – Could be Strengthened"),
+ ("needs_improvement", "Needs Improvement"),
+ ("partially_exists", "Partially Exists"),
+ ("does_not_exist", "Does Not Exist"),
+ ],
+ max_length=100,
+ null=True,
+ verbose_name="status",
+ ),
+ ),
+ ]
diff --git a/per/migrations/0121_alter_overview_created_at_and_more.py b/per/migrations/0121_alter_overview_created_at_and_more.py
new file mode 100644
index 000000000..54a77b221
--- /dev/null
+++ b/per/migrations/0121_alter_overview_created_at_and_more.py
@@ -0,0 +1,26 @@
+# Generated by Django 4.2.15 on 2024-09-18 04:24
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("per", "0001_squashed_0120_alter_formcomponent_status"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="overview",
+ name="created_at",
+ field=models.DateTimeField(auto_now_add=True, verbose_name="created at"),
+ ),
+ migrations.AlterField(
+ model_name="perworkplancomponent",
+ name="component",
+ field=models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE, to="per.formcomponent", verbose_name="Component"
+ ),
+ ),
+ ]