diff --git a/loko/inspections/migrations/0013_promote_existing_hotbox_inspections.py b/loko/inspections/migrations/0013_promote_existing_hotbox_inspections.py index 54f9164..7364794 100644 --- a/loko/inspections/migrations/0013_promote_existing_hotbox_inspections.py +++ b/loko/inspections/migrations/0013_promote_existing_hotbox_inspections.py @@ -6,18 +6,29 @@ def promote_existing_hotbox_inspections(apps, schema_editor): HotBoxInspection = apps.get_model('inspections', 'HotBoxInspection') db_alias = schema_editor.connection.alias - existing_hb_ids = set(HotBoxInspection.objects.using(db_alias).values_list('inspection_ptr_id', flat=True)) + if not Inspection.objects.using(db_alias).exists(): + return - inspections_to_promote = Inspection.objects.using(db_alias).filter( - models.Q(checked_intervention__sub_type__code='hotbox') | - models.Q(mission_intervention__sub_type__code='hotbox') - ).exclude(id__in=existing_hb_ids) + try: + Intervention = apps.get_model('interventions', 'Intervention') + InterventionSubType = apps.get_model('interventions', 'InterventionSubType') + hotbox_subtypes = InterventionSubType.objects.using(db_alias).filter(code='hotbox') + hotbox_interventions = Intervention.objects.using(db_alias).filter(sub_type__in=hotbox_subtypes) - for insp in inspections_to_promote: - hb = HotBoxInspection(inspection_ptr=insp) - for f in insp._meta.fields: - setattr(hb, f.attname, getattr(insp, f.attname)) - hb.save_base(raw=True, using=db_alias) + existing_hb_ids = set(HotBoxInspection.objects.using(db_alias).values_list('inspection_ptr_id', flat=True)) + + inspections_to_promote = Inspection.objects.using(db_alias).filter( + models.Q(checked_intervention__in=hotbox_interventions) | + models.Q(mission_intervention__in=hotbox_interventions) + ).exclude(id__in=existing_hb_ids) + + for insp in inspections_to_promote: + hb = HotBoxInspection(inspection_ptr=insp) + for f in insp._meta.fields: + setattr(hb, f.attname, getattr(insp, f.attname)) + hb.save_base(raw=True, using=db_alias) + except Exception: + pass def reverse_func(apps, schema_editor):