77 lines
5.9 KiB
Python
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",
|
|
},
|
|
),
|
|
]
|