Skip to content

Commit

Permalink
Ajout évènement aux fiches zones sans évènement associé
Browse files Browse the repository at this point in the history
- Crée une migration pour associer un évènement aux fiches zones qui n'en ont pas
- Réutilise le numéro de la fiche zone si elle en a un, sinon en génère un nouveau
- Migration exécutée dans une transaction pour garantir la cohérence des données
  • Loading branch information
alanzirek committed Jan 24, 2025
1 parent 4d25fb5 commit a80030e
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions sv/migrations/0070_fix_fiche_zone_without_evenement.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Generated by Django 5.1.4 on 2025-01-24 09:21
from datetime import datetime
from django.db import migrations, transaction


def get_next_numero(NumeroFiche):
annee_courante = datetime.now().year
last_fiche = NumeroFiche.objects.filter(annee=annee_courante).order_by("-numero").first()
numero = last_fiche.numero + 1 if last_fiche else 1
new_fiche = NumeroFiche(annee=annee_courante, numero=numero)
new_fiche.save()
return new_fiche


def create_missing_evenements(apps, schema_editor):
FicheZoneDelimitee = apps.get_model("sv", "FicheZoneDelimitee")
Evenement = apps.get_model("sv", "Evenement")
NumeroFiche = apps.get_model("sv", "NumeroFiche")
OrganismeNuisible = apps.get_model("sv", "OrganismeNuisible")
StatutReglementaire = apps.get_model("sv", "StatutReglementaire")

with transaction.atomic():
fiches_zones = FicheZoneDelimitee.objects.filter(evenement__isnull=True)
organisme_nuisible = OrganismeNuisible.objects.first()
statut_reglementaire = StatutReglementaire.objects.first()

for fiche in fiches_zones:
numero = fiche.numero if fiche.numero else get_next_numero(NumeroFiche)
Evenement.objects.create(
numero=numero,
createur=fiche.createur,
date_creation=fiche.date_creation,
organisme_nuisible=organisme_nuisible,
statut_reglementaire=statut_reglementaire,
fiche_zone_delimitee=fiche,
)


class Migration(migrations.Migration):
dependencies = [
("sv", "0069_position_chaine_distribution_data_update"),
]

operations = [
migrations.RunPython(create_missing_evenements, reverse_code=migrations.RunPython.noop),
]

0 comments on commit a80030e

Please sign in to comment.