diff --git a/src/hct_mis_api/apps/grievance/migrations/0007_migration.py b/src/hct_mis_api/apps/grievance/migrations/0007_migration.py new file mode 100644 index 0000000000..553670de05 --- /dev/null +++ b/src/hct_mis_api/apps/grievance/migrations/0007_migration.py @@ -0,0 +1,25 @@ +# Generated by Django 3.2.25 on 2024-12-27 12:53 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('household', '0006_migration'), + ('grievance', '0006_migration'), + ] + + operations = [ + migrations.AlterField( + model_name='tickethouseholddataupdatedetails', + name='household', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='household_data_update_ticket_details', to='household.household'), + ), + migrations.AlterField( + model_name='ticketindividualdataupdatedetails', + name='individual', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='individual_data_update_ticket_details', to='household.individual'), + ), + ] diff --git a/src/hct_mis_api/apps/grievance/models.py b/src/hct_mis_api/apps/grievance/models.py index d9ef387ca3..644251afac 100644 --- a/src/hct_mis_api/apps/grievance/models.py +++ b/src/hct_mis_api/apps/grievance/models.py @@ -11,7 +11,7 @@ from django.core.validators import MinValueValidator from django.db import models from django.db.models import JSONField, Q, QuerySet, UniqueConstraint -from django.db.models.signals import post_save +from django.db.models.signals import post_delete, post_save from django.dispatch import receiver from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ @@ -690,7 +690,6 @@ class TicketHouseholdDataUpdateDetails(TimeStampedUUIDModel): "household.Household", related_name="household_data_update_ticket_details", on_delete=models.CASCADE, - null=True, ) household_data = JSONField(null=True) @@ -698,6 +697,14 @@ class Meta: verbose_name_plural = "Ticket Household Data Update Details" +@receiver(post_delete, sender=TicketHouseholdDataUpdateDetails) +def delete_grievance_ticket_on_household_details_update_delete( + sender: TicketHouseholdDataUpdateDetails, instance: TicketHouseholdDataUpdateDetails, **kwargs: Any +) -> None: + if hasattr(instance, "ticket"): # pragma: no cover + instance.ticket.delete() + + class TicketIndividualDataUpdateDetails(TimeStampedUUIDModel): STATUS_FLOW = GENERAL_STATUS_FLOW @@ -710,7 +717,6 @@ class TicketIndividualDataUpdateDetails(TimeStampedUUIDModel): "household.Individual", related_name="individual_data_update_ticket_details", on_delete=models.CASCADE, - null=True, ) individual_data = JSONField(null=True) role_reassign_data = JSONField(default=dict) @@ -723,6 +729,14 @@ class Meta: verbose_name_plural = "Ticket Individual Data Update Details" +@receiver(post_delete, sender=TicketIndividualDataUpdateDetails) +def delete_grievance_ticket_on_individual_details_update_delete( + sender: TicketIndividualDataUpdateDetails, instance: TicketIndividualDataUpdateDetails, **kwargs: Any +) -> None: + if hasattr(instance, "ticket"): # pragma: no cover + instance.ticket.delete() + + class TicketAddIndividualDetails(TimeStampedUUIDModel): STATUS_FLOW = GENERAL_STATUS_FLOW