# Generated by Django 5.2.8 on 2026-06-11 13:40 import django.db.models.deletion from django.db import migrations, models def create_initial_assignments(apps, schema_editor): Intervention = apps.get_model('interventions', 'Intervention') InterventionAssignment = apps.get_model('interventions', 'InterventionAssignment') from datetime import timedelta for itv in Intervention.objects.filter(assigned_team__isnull=False): start_dt = itv.planned_begin_time or itv.begin_time or itv.expected_begin_time or itv.creation_time end_dt = itv.planned_end_time or itv.end_time or itv.expected_end_time or start_dt if start_dt: start_date = start_dt.date() end_date = end_dt.date() curr = start_date while curr <= end_date: InterventionAssignment.objects.get_or_create( intervention=itv, date=curr, defaults={ 'team': itv.assigned_team, 'member': itv.assigned_member, 'status': itv.status, } ) curr += timedelta(days=1) class Migration(migrations.Migration): dependencies = [ ('contracts', '0006_companymember_teams_m2m'), ('interventions', '0013_symptom_require_equipment_selection'), ] operations = [ migrations.CreateModel( name='InterventionAssignment', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.CharField(blank=True, choices=[('in_preparation', 'En préparation'), ('to_be_approved', 'A approuver'), ('to_be_planned', 'A planifier'), ('to_be_processed', 'A traiter'), ('assigned', 'Pris en charge'), ('in_progress', 'Démarré'), ('on_pause', 'En pause'), ('finished', 'Terminé'), ('processed', 'Traité'), ('to_be_corrected', 'A corriger'), ('corrected', 'Corrigé'), ('validated', 'Validé'), ('invoiced', 'Comptabilisé'), ('closed', 'Finalisé'), ('canceled', 'Annulé')], max_length=50, null=True, verbose_name='Statut')), ('date', models.DateField(verbose_name="Date d'assignation")), ('created_at', models.DateTimeField(auto_now_add=True)), ('intervention', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='daily_assignments', to='interventions.intervention', verbose_name='Intervention')), ('member', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='daily_assignments', to='contracts.companymember', verbose_name='Membre')), ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='daily_assignments', to='contracts.companyteam', verbose_name='Équipe')), ], options={ 'verbose_name': "Assignation quotidienne d'intervention", 'verbose_name_plural': "Assignations quotidiennes d'interventions", 'ordering': ['date', 'team'], 'unique_together': {('intervention', 'date')}, }, ), migrations.RunPython( create_initial_assignments, reverse_code=migrations.RunPython.noop ), ]