Skip to content

Commit c3edbf0

Browse files
committed
feat(eap): Add full eap export pdf
- Add full eap export test cases
1 parent 88542e2 commit c3edbf0

4 files changed

Lines changed: 67 additions & 1 deletion

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Generated by Django 4.2.26 on 2025-11-26 10:03
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("api", "0227_alter_export_export_type"),
9+
]
10+
11+
operations = [
12+
migrations.AlterField(
13+
model_name="export",
14+
name="export_type",
15+
field=models.CharField(
16+
choices=[
17+
("dref-applications", "DREF Application"),
18+
("dref-operational-updates", "DREF Operational Update"),
19+
("dref-final-reports", "DREF Final Report"),
20+
("old-dref-final-reports", "Old DREF Final Report"),
21+
("per", "Per"),
22+
("simplified-eap", "Simplified EAP"),
23+
("full-eap", "Full EAP"),
24+
],
25+
max_length=255,
26+
verbose_name="Export Type",
27+
),
28+
),
29+
]

api/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2561,6 +2561,7 @@ class ExportType(models.TextChoices):
25612561
OLD_FINAL_REPORT = "old-dref-final-reports", _("Old DREF Final Report")
25622562
PER = "per", _("Per")
25632563
SIMPLIFIED_EAP = "simplified-eap", _("Simplified EAP")
2564+
FULL_EAP = "full-eap", _("Full EAP")
25642565

25652566
export_id = models.IntegerField(verbose_name=_("Export Id"))
25662567
export_type = models.CharField(verbose_name=_("Export Type"), max_length=255, choices=ExportType.choices)

api/serializers.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from api.utils import CountryValidator, RegionValidator
1616
from deployments.models import EmergencyProject, Personnel, PersonnelDeployment
1717
from dref.models import Dref, DrefFinalReport, DrefOperationalUpdate
18-
from eap.models import SimplifiedEAP
18+
from eap.models import FullEAP, SimplifiedEAP
1919
from lang.models import String
2020
from lang.serializers import ModelSerializer
2121
from local_units.models import DelegationOffice
@@ -2573,6 +2573,9 @@ def create(self, validated_data):
25732573
title = (
25742574
f"{simplified_eap.eap_registration.national_society.name}-{simplified_eap.eap_registration.disaster_type.name}"
25752575
)
2576+
elif export_type == Export.ExportType.FULL_EAP:
2577+
full_eap = FullEAP.objects.filter(id=export_id).first()
2578+
title = f"{full_eap.eap_registration.national_society.name}-{full_eap.eap_registration.disaster_type.name}"
25762579
else:
25772580
title = "Export"
25782581
user = self.context["request"].user

eap/test_views.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,6 +1272,39 @@ def test_simplified_eap_export(self, mock_generate_url):
12721272
django_get_language(),
12731273
)
12741274

1275+
@mock.patch("api.serializers.generate_url.delay")
1276+
def test_full_eap_export(self, mock_generate_url):
1277+
self.full_eap = FullEAPFactory.create(
1278+
eap_registration=self.eap_registration,
1279+
created_by=self.user,
1280+
modified_by=self.user,
1281+
)
1282+
data = {
1283+
"export_type": Export.ExportType.FULL_EAP,
1284+
"export_id": self.full_eap.id,
1285+
"is_pga": False,
1286+
}
1287+
1288+
self.authenticate(self.user)
1289+
1290+
with self.capture_on_commit_callbacks(execute=True):
1291+
response = self.client.post(self.url, data, format="json")
1292+
self.assert_201(response)
1293+
self.assertIsNotNone(response.data["id"], response.data)
1294+
expected_url = f"{settings.GO_WEB_INTERNAL_URL}/{Export.ExportType.FULL_EAP}/{self.full_eap.id}/export/"
1295+
self.assertEqual(response.data["url"], expected_url)
1296+
self.assertEqual(response.data["status"], Export.ExportStatus.PENDING)
1297+
1298+
self.assertEqual(mock_generate_url.called, True)
1299+
title = f"{self.national_society.name}-{self.disaster_type.name}"
1300+
mock_generate_url.assert_called_once_with(
1301+
expected_url,
1302+
response.data["id"],
1303+
self.user.id,
1304+
title,
1305+
django_get_language(),
1306+
)
1307+
12751308

12761309
class EAPFullTestCase(APITestCase):
12771310
def setUp(self):

0 commit comments

Comments
 (0)