From 2e3b4a899fd1654ae540c745b4faf4b3f4011a2c Mon Sep 17 00:00:00 2001 From: thenav56 Date: Fri, 13 Sep 2024 21:38:02 +0545 Subject: [PATCH 1/2] Squash migrations --- .../0001_squashed_0213_merge_20240807_1001.py | 6740 +++++++++++++++++ ...calculated_world_bank_gdp_year_and_more.py | 589 ++ ...001_squashed_0035_personnel_molnix_tags.py | 1369 ++++ ...d_0089_alter_emergencyproject_districts.py | 1089 +++ .../0001_squashed_0074_auto_20240129_0909.py | 5195 +++++++++++++ ...7_0602_squashed_0077_auto_20231211_0426.py | 9 - .../0001_squashed_0012_auto_20230410_0720.py | 393 + ...nix_status_surgealert_molnix_status_old.py | 255 + ...quashed_0120_alter_formcomponent_status.py | 1789 +++++ 9 files changed, 17419 insertions(+), 9 deletions(-) create mode 100644 api/migrations/0001_squashed_0213_merge_20240807_1001.py create mode 100644 databank/migrations/0001_squashed_0026_countryoverview_calculated_world_bank_gdp_year_and_more.py create mode 100644 deployments/migrations/0001_squashed_0035_personnel_molnix_tags.py create mode 100644 deployments/migrations/0036_auto_20201118_0812_squashed_0089_alter_emergencyproject_districts.py create mode 100644 dref/migrations/0001_squashed_0074_auto_20240129_0909.py create mode 100644 flash_update/migrations/0001_squashed_0012_auto_20230410_0720.py create mode 100644 notifications/migrations/0001_squashed_0015_rename_molnix_status_surgealert_molnix_status_old.py create mode 100644 per/migrations/0001_squashed_0120_alter_formcomponent_status.py 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/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/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", + ), + ), + ] From c52e52161110d2002f88aeb5403cbfc5cc308803 Mon Sep 17 00:00:00 2001 From: thenav56 Date: Wed, 18 Sep 2024 10:16:06 +0545 Subject: [PATCH 2/2] Add Missed migrations --- .../0090_alter_emergencyproject_country.py | 22 ++++++++++++++++ .../0075_alter_dref_national_society.py | 22 ++++++++++++++++ ...0121_alter_overview_created_at_and_more.py | 26 +++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 deployments/migrations/0090_alter_emergencyproject_country.py create mode 100644 dref/migrations/0075_alter_dref_national_society.py create mode 100644 per/migrations/0121_alter_overview_created_at_and_more.py 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/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/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" + ), + ), + ]