# Generated by Django 6.0.7 on 2026-08-08 10:47 import common.storages import django.db.models.deletion import django.utils.timezone import inspections.models from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ('contenttypes', '0002_remove_content_type_name'), ('interventions', '0002_remove_intervention_origin_fms_nbr_and_more'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Inspection', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('asset_object_id', models.PositiveIntegerField(verbose_name='ID de la cible')), ('nature', models.CharField(choices=[('visual', 'Inspection visuelle'), ('technical', 'Inspection technique'), ('post_intervention', 'Suivi / Qualité post-intervention')], default='visual', max_length=50, verbose_name="Nature de l'inspection")), ('inspector_role', models.CharField(choices=[('observer', 'Observer / Agent de terrain'), ('provider', 'Prestataire technique externe'), ('manager', 'Gestionnaire / Contrôleur interne')], default='observer', max_length=50, verbose_name="Rôle de l'inspecteur")), ('inspection_date', models.DateTimeField(default=django.utils.timezone.now, verbose_name="Date d'inspection")), ('result_status', models.CharField(choices=[('compliant', 'Conforme'), ('non_compliant', 'Non conforme / Anomalie'), ('updated', 'Données corrigées'), ('damaged', 'Endommagé'), ('missing', 'Absent / Retiré')], default='compliant', max_length=50, verbose_name='Résultat du contrôle')), ('verified_obsolescence', models.CharField(blank=True, max_length=50, null=True, verbose_name="État d'obsolescence constaté")), ('notes', models.TextField(blank=True, null=True, verbose_name='Remarques / Constats')), ('apply_changes_to_asset', models.BooleanField(default=True, verbose_name='Appliquer directement les modifications à la cible')), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('asset_content_type', models.ForeignKey(limit_choices_to={'app_label__in': ['assets', 'interventions']}, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype', verbose_name="Type d'asset / Cible")), ('checked_intervention', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='quality_inspections', to='interventions.intervention', verbose_name='Intervention de travaux contrôlée')), ('inspector', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='inspections', to=settings.AUTH_USER_MODEL, verbose_name='Inspecteur / Vérificateur')), ('mission_intervention', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='generated_inspections', to='interventions.intervention', verbose_name="Intervention / Mission d'inspection")), ], options={ 'verbose_name': 'Inspection (Générique)', 'verbose_name_plural': 'Inspections (Génériques)', 'ordering': ['-inspection_date'], }, ), migrations.CreateModel( name='ParkingSpotInspection', fields=[ ('inspection_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='inspections.inspection')), ('verified_standard_stand_count', models.IntegerField(blank=True, null=True, verbose_name="Nombre d'arceaux classiques constaté")), ('verified_cargo_stand_count', models.IntegerField(blank=True, null=True, verbose_name="Nombre d'arceaux cargo constaté")), ('verified_stand_type', models.CharField(blank=True, max_length=50, null=True, verbose_name="Type d'arceau constaté")), ('verified_has_scooter_drop_zone', models.BooleanField(blank=True, null=True, verbose_name='Drop zone trottinette constatée')), ('verified_marking_quality', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('damaged', 'Dégradé'), ('missing', 'Absent / Effacé')], max_length=50, null=True, verbose_name='Qualité du marquage constatée')), ('apply_physical_counts_to_asset', models.BooleanField(default=False, verbose_name="Mettre à jour la capacité / comptages de l'asset")), ], options={ 'verbose_name': "Inspection d'emplacement de stationnement", 'verbose_name_plural': "Inspections d'emplacements de stationnement", }, bases=('inspections.inspection',), ), migrations.CreateModel( name='InspectionDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('file', models.FileField(storage=common.storages.PrivateMediaStorage(), upload_to=inspections.models.inspection_document_upload_path, verbose_name='Fichier / Photo / Document')), ('created_at', models.DateTimeField(auto_now_add=True)), ('inspection', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='inspections.inspection', verbose_name='Inspection')), ], options={ 'verbose_name': "Document / Photo d'inspection", 'verbose_name_plural': "Documents / Photos d'inspection", }, ), ]