loko/streetup/inspections/migrations/0001_initial.py

77 lines
5.9 KiB
Python

# 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",
},
),
]