# Generated by Django 6.0.7 on 2026-07-22 13:42 import assets.models.controlcenters import assets.models.its import assets.models.nature import assets.models.roads import assets.models.sign import assets.models.structures import common.storages import django.contrib.gis.db.models.fields import django.contrib.postgres.fields import django.utils.timezone from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='ArtworkFountain', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('artist', models.CharField(blank=True, max_length=200, null=True)), ('fountain_type', models.CharField(blank=True, choices=[('monumental_artistic_fountain', 'Fontaine artistique monumentale'), ('artistic_fountain', 'Fontaine artistique'), ('monumental_fountain', 'Fontaine monumentale'), ('artistic_play_fountain', 'Fontaine ludique artistique'), ('play_fountain', 'Fontaine artistique'), ('monumental_play_fountain', 'Fontaine ludique monumentale')], max_length=100, null=True)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('location_fr', models.CharField(blank=True, max_length=500, null=True)), ('location_nl', models.CharField(blank=True, max_length=500, null=True)), ('description_fr', models.TextField(blank=True, null=True)), ('description_nl', models.TextField(blank=True, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='ArtworkFountainDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('file', models.FileField(max_length=255, storage=common.storages.PrivateMediaStorage(), upload_to='assets_documents/artworks/fountains/', verbose_name='Fichier')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, storage=common.storages.PrivateMediaStorage(), upload_to='assets_documents/artworks/fountains/')), ], options={ 'ordering': ['upload_date'], 'abstract': False, }, ), migrations.CreateModel( name='ArtworkMonument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('artist', models.CharField(blank=True, max_length=200, null=True)), ('artwork_type', models.CharField(blank=True, choices=[('bench', 'Banc public'), ('construction', 'Construction'), ('metal_structure', 'Structure métalique'), ('monument', 'Monument'), ('monumental_structure', 'Structure monumentale'), ('pole', 'Poteau'), ('sculpture', 'Sculpture'), ('statue', 'Statue'), ('structure', 'Structure')], max_length=100, null=True)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('location_fr', models.CharField(blank=True, max_length=500, null=True)), ('location_nl', models.CharField(blank=True, max_length=500, null=True)), ('water', models.BooleanField(blank=True, default=False, null=True)), ('description_fr', models.TextField(blank=True, null=True)), ('description_nl', models.TextField(blank=True, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='ArtworkMonumentDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('file', models.FileField(max_length=255, storage=common.storages.PrivateMediaStorage(), upload_to='assets_documents/artworks/fountains/', verbose_name='Fichier')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, storage=common.storages.PrivateMediaStorage(), upload_to='assets_documents/artworks/fountains/')), ], options={ 'ordering': ['upload_date'], 'abstract': False, }, ), migrations.CreateModel( name='ArtworkStreet', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ('road_code', models.CharField(blank=True, max_length=50, null=True)), ('section_code', models.CharField(blank=True, max_length=50, null=True)), ('street_level', models.CharField(blank=True, max_length=50, null=True)), ], options={ 'ordering': ['code'], 'abstract': False, }, ), migrations.CreateModel( name='AssetCategory', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=200)), ('name_fr', models.CharField(max_length=255)), ('name_nl', models.CharField(max_length=255)), ], options={ 'ordering': ['thematic', 'name_fr'], }, ), migrations.CreateModel( name='AssetHistory', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('object_id', models.PositiveIntegerField(verbose_name="ID de l'asset")), ('timestamp', models.DateTimeField(db_index=True, default=django.utils.timezone.now, verbose_name='Date de modification')), ('field_name', models.CharField(max_length=100, verbose_name='Champ modifié')), ('old_value', models.TextField(blank=True, null=True, verbose_name='Ancienne valeur')), ('new_value', models.TextField(blank=True, null=True, verbose_name='Nouvelle valeur')), ('action_type', models.CharField(choices=[('create', 'Création'), ('update', 'Modification'), ('delete', 'Suppression'), ('status_change', 'Changement de statut')], default='update', max_length=50, verbose_name="Type d'action")), ], options={ 'verbose_name': "Historique d'asset", 'verbose_name_plural': "Historiques d'assets", 'ordering': ['-timestamp'], }, ), migrations.CreateModel( name='CleanGlassContainer', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('glass_type', models.CharField(blank=True, choices=[('clear', 'Clear glass'), ('colored', 'Coloured glass'), ('mixed', 'Mixed')], max_length=50, null=True, verbose_name='Accepted glass type')), ('capacity', models.FloatField(blank=True, null=True, verbose_name='Capacity (litres)')), ('is_underground', models.BooleanField(default=False, verbose_name='Underground')), ('nb_openings', models.IntegerField(blank=True, null=True, verbose_name='Number of openings')), ('color', models.CharField(blank=True, max_length=100, null=True, verbose_name='Colour')), ('material', models.CharField(blank=True, max_length=200, null=True, verbose_name='Material')), ('emptying_frequency', models.CharField(blank=True, max_length=200, null=True, verbose_name='Emptying frequency')), ('operator', models.CharField(blank=True, max_length=255, null=True, verbose_name='Operator / manager')), ('remarks', models.TextField(blank=True, null=True, verbose_name='Remarks')), ], options={ 'verbose_name': 'Glass container', 'verbose_name_plural': 'Glass containers', }, ), migrations.CreateModel( name='CleanGlassContainerModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('color', models.CharField(blank=True, max_length=100, null=True, verbose_name='Colour')), ('ral', models.CharField(blank=True, max_length=20, null=True, verbose_name='RAL code')), ('material', models.CharField(blank=True, max_length=200, null=True, verbose_name='Material')), ('capacity', models.FloatField(blank=True, null=True, verbose_name='Capacity (litres)')), ('is_underground', models.BooleanField(default=False, verbose_name='Underground')), ('nb_openings', models.IntegerField(blank=True, null=True, verbose_name='Number of openings')), ], options={ 'verbose_name': 'Glass container model', 'verbose_name_plural': 'Glass container models', 'ordering': ['code'], }, ), migrations.CreateModel( name='CleanLitterBin', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('fixation_type', models.CharField(blank=True, choices=[('cemented', 'Cemented to ground'), ('bolted', 'Bolted to ground'), ('pole_mounted', 'Pole-mounted'), ('wall_mounted', 'Wall-mounted'), ('freestanding', 'Freestanding'), ('other', 'Other')], max_length=50, null=True, verbose_name='Fixation type')), ('color', models.CharField(blank=True, max_length=100, null=True, verbose_name='Colour')), ('material', models.CharField(blank=True, max_length=200, null=True, verbose_name='Material')), ('volume', models.FloatField(blank=True, null=True, verbose_name='Volume (litres)')), ('has_cover', models.BooleanField(default=False, verbose_name='Cover')), ('has_ashtray', models.BooleanField(default=False, verbose_name='Built-in ashtray')), ('has_extinguisher', models.BooleanField(default=False, verbose_name='Built-in extinguisher stub (éteignoir)')), ('emptying_frequency', models.CharField(blank=True, max_length=200, null=True, verbose_name='Emptying frequency')), ('collection_route', models.CharField(blank=True, max_length=200, null=True, verbose_name='Collection route (tournée)')), ('external_id', models.IntegerField(blank=True, null=True, verbose_name='External ID (source system)')), ('remarks', models.TextField(blank=True, null=True, verbose_name='Remarks')), ], options={ 'verbose_name': 'Litter bin', 'verbose_name_plural': 'Litter bins', }, ), migrations.CreateModel( name='CleanLitterBinModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('color', models.CharField(blank=True, max_length=100, null=True, verbose_name='Colour')), ('ral', models.CharField(blank=True, max_length=20, null=True, verbose_name='RAL code')), ('material', models.CharField(blank=True, max_length=200, null=True, verbose_name='Material')), ('volume', models.FloatField(blank=True, null=True, verbose_name='Volume (litres)')), ('has_cover', models.BooleanField(default=False, verbose_name='Cover')), ('has_ashtray', models.BooleanField(default=False, verbose_name='Built-in ashtray')), ], options={ 'verbose_name': 'Litter bin model', 'verbose_name_plural': 'Litter bin models', 'ordering': ['code'], }, ), migrations.CreateModel( name='CleanLitterBinObservation', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('observation_datetime', models.DateTimeField(blank=True, null=True, verbose_name='Observation date/time')), ('observer_note', models.TextField(blank=True, null=True, verbose_name='Observer notes')), ('sol_pente_trop_forte', models.BooleanField(default=False, verbose_name='Slope too steep')), ('sol_instable', models.BooleanField(default=False, verbose_name='Unstable ground')), ('sol_reflechissant', models.BooleanField(default=False, verbose_name='Reflective surface')), ('sol_glissant', models.BooleanField(default=False, verbose_name='Slippery surface')), ('sol_fentes', models.BooleanField(default=False, verbose_name='Cracks in ground')), ('sol_entrave', models.BooleanField(default=False, verbose_name='Ground obstacle')), ('sol_dalles_podo', models.BooleanField(default=False, verbose_name='Tactile paving (dalles podotactiles)')), ('sol_pente_transversale', models.FloatField(blank=True, null=True, verbose_name='Transversal slope (%)')), ('sol_pente_longitudinale', models.FloatField(blank=True, null=True, verbose_name='Longitudinal slope (%)')), ('sol_remarque', models.TextField(blank=True, null=True, verbose_name='Ground remarks')), ('acc_type_quartier', models.CharField(blank=True, choices=[('importante_ponctuelle', 'Important – ponctuel'), ('importante_continue', 'Important – continu'), ('faible', 'Faible'), ('autre', 'Autre')], max_length=50, null=True, verbose_name='Neighbourhood type')), ('acc_densite_flux_pieton', models.CharField(blank=True, choices=[('high', 'Élevée'), ('medium', 'Moyenne'), ('low', 'Faible')], max_length=50, null=True, verbose_name='Pedestrian flow density')), ('acc_point_interet', models.JSONField(blank=True, default=list, verbose_name='Points of interest')), ('acc_approche_2m', models.BooleanField(default=False, verbose_name='Clear 2 m approach')), ('acc_voirie_a_traverser', models.BooleanField(default=False, verbose_name='Road to cross')), ('acc_poubelle_isolee', models.BooleanField(default=False, verbose_name='Isolated bin')), ('acc_gene_flux_routier', models.BooleanField(default=False, verbose_name='Obstructs road traffic')), ('acc_gene_flux_pieton', models.BooleanField(default=False, verbose_name='Obstructs pedestrian flow')), ('acc_chemin_logique', models.BooleanField(default=False, verbose_name='Logical path (itinéraire logique)')), ('acc_contraste', models.BooleanField(default=False, verbose_name='Visual contrast')), ('acc_indications_tri', models.BooleanField(default=False, verbose_name='Sorting indicators present')), ('acc_agent_vehicule', models.CharField(blank=True, choices=[('normal', 'Normal'), ('difficult', 'Difficile'), ('impossible', 'Impossible')], max_length=20, null=True, verbose_name='Agent access – vehicle')), ('acc_agent_pied', models.CharField(blank=True, choices=[('normal', 'Normal'), ('difficult', 'Difficile'), ('impossible', 'Impossible')], max_length=20, null=True, verbose_name='Agent access – on foot')), ('acc_point_interet_autre', models.CharField(blank=True, max_length=255, null=True, verbose_name='Other point of interest')), ('acc_pertinence_placement', models.JSONField(blank=True, default=list, verbose_name='Placement relevance codes')), ('acc_entrave', models.JSONField(blank=True, default=list, verbose_name='Obstruction codes')), ('acc_point_interet_remarque', models.TextField(blank=True, null=True, verbose_name='Point of interest remarks')), ('acc_remarque', models.TextField(blank=True, null=True, verbose_name='Accessibility remarks')), ], options={ 'verbose_name': 'Litter bin observation', 'verbose_name_plural': 'Litter bin observations', 'ordering': ['-observation_datetime'], }, ), migrations.CreateModel( name='CleanLitterBinPhoto', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('photo', models.ImageField(blank=True, null=True, storage=common.storages.PrivateMediaStorage(), upload_to='clean/litter_bin_photos/', verbose_name='Photo')), ('source_url', models.URLField(blank=True, max_length=500, null=True, verbose_name='Source URL (original)')), ('order', models.PositiveSmallIntegerField(default=1, verbose_name='Order')), ('taken_at', models.DateTimeField(blank=True, null=True, verbose_name='Taken at')), ('caption', models.CharField(blank=True, max_length=255, null=True, verbose_name='Caption')), ], options={ 'verbose_name': 'Litter bin photo', 'verbose_name_plural': 'Litter bin photos', 'ordering': ['litter_bin', 'order'], }, ), migrations.CreateModel( name='CleanLocation', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ('road_code', models.CharField(blank=True, max_length=50, null=True)), ('section_code', models.CharField(blank=True, max_length=50, null=True)), ('street_level', models.CharField(blank=True, max_length=50, null=True)), ], options={ 'ordering': ['code'], 'abstract': False, }, ), migrations.CreateModel( name='CleanLocationContract', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.CharField(choices=[('active', 'Actif'), ('inactive', 'Inactif'), ('archived', 'Archivé')], default='active', max_length=50)), ('maintenance_type', models.CharField(choices=[('clean', 'Nettoyage'), ('collection', 'Ramassage'), ('other', 'Autre')], default='other', max_length=50)), ], options={ 'verbose_name': 'Clean Location Contract', 'verbose_name_plural': 'Clean Location Contracts', }, ), migrations.CreateModel( name='ComplementaryPoliceRegulation', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('title', models.CharField(max_length=255)), ('reference', models.CharField(blank=True, max_length=100, null=True)), ('decision_date', models.DateField(blank=True, null=True)), ('file', models.FileField(max_length=255, upload_to=assets.models.sign.upload_to_police_regulation, verbose_name='Fichier')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, upload_to=assets.models.sign.upload_to_police_regulation)), ], options={ 'ordering': ['-decision_date', 'reference', 'title'], }, ), migrations.CreateModel( name='ControlCenter', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50, unique=True)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ], options={ 'ordering': ['code'], }, ), migrations.CreateModel( name='ControlCenterAssetDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('file', models.FileField(max_length=255, storage=common.storages.PrivateMediaStorage(), upload_to=assets.models.controlcenters.upload_to_controlcenter, verbose_name='Fichier')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, storage=common.storages.PrivateMediaStorage(), upload_to=assets.models.controlcenters.upload_to_controlcenter)), ('document_type', models.CharField(choices=[('other', 'Autre')], default='other', max_length=50, verbose_name='Type de document')), ], options={ 'ordering': ['upload_date'], 'abstract': False, }, ), migrations.CreateModel( name='ControlCenterAssetModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ], options={ 'verbose_name': 'Control Center Asset Model', 'verbose_name_plural': 'Control Center Asset Models', }, ), migrations.CreateModel( name='ControlCenterContract', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.CharField(choices=[('active', 'Actif'), ('inactive', 'Inactif'), ('archived', 'Archivé')], default='active', max_length=50)), ('maintenance_type', models.CharField(choices=[('building', 'Bâtiment'), ('office', 'Bureautique'), ('system', 'Système'), ('other', 'Autre')], default='other', max_length=50)), ], options={ 'verbose_name': 'Control Center Contract', 'verbose_name_plural': 'Control Center Contracts', }, ), migrations.CreateModel( name='ControlCenterDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('file', models.FileField(max_length=255, storage=common.storages.PrivateMediaStorage(), upload_to=assets.models.controlcenters.upload_to_controlcenter, verbose_name='Fichier')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, storage=common.storages.PrivateMediaStorage(), upload_to=assets.models.controlcenters.upload_to_controlcenter)), ('document_type', models.CharField(choices=[('other', 'Autre')], default='other', max_length=50, verbose_name='Type de document')), ], options={ 'ordering': ['upload_date'], 'abstract': False, }, ), migrations.CreateModel( name='ControlCenterGeoAsset', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ], ), migrations.CreateModel( name='ControlCenterGeoAssetContract', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.CharField(choices=[('active', 'Actif'), ('inactive', 'Inactif'), ('archived', 'Archivé')], default='active', max_length=50)), ('maintenance_type', models.CharField(choices=[('building', 'Bâtiment'), ('office', 'Bureautique'), ('system', 'Système'), ('other', 'Autre')], default='other', max_length=50)), ], options={ 'verbose_name': 'Control Center Asset Contract', 'verbose_name_plural': 'Control Center Asset Contracts', }, ), migrations.CreateModel( name='ControlCenterLocation', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ('is_main_location', models.BooleanField(default=False, verbose_name='Main Location')), ], options={ 'ordering': ['code'], 'abstract': False, }, ), migrations.CreateModel( name='GreenSurfacesComment', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('comment', models.TextField(blank=True, default='', verbose_name='Commentaire')), ('status', models.CharField(choices=[('memo', 'Mémo'), ('attention', "Point d'attention"), ('todo', 'À faire'), ('ok', 'OK'), ('problem', 'Problème')], default='memo', max_length=20, verbose_name='Statut')), ('latitude', models.FloatField(verbose_name='Latitude')), ('longitude', models.FloatField(verbose_name='Longitude')), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812, verbose_name='Géométrie')), ('address', models.CharField(blank=True, max_length=1024, null=True, verbose_name='Adresse')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date de création')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date de modification')), ], options={ 'verbose_name': 'Commentaire (Espaces verts)', 'verbose_name_plural': 'Commentaires (Espaces verts)', 'ordering': ['-created_at'], }, ), migrations.CreateModel( name='GreenSurfacesCommentPhoto', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('photo', models.ImageField(storage=common.storages.PrivateMediaStorage(), upload_to=assets.models.nature.comment_photo_upload_path, verbose_name='Photo')), ('heading', models.FloatField(blank=True, help_text='Direction de la boussole dans laquelle la photo a été prise (0-360°)', null=True, verbose_name='Direction (azimut en degrés)')), ('order', models.PositiveIntegerField(default=0, help_text="Ordre d'affichage de la photo", verbose_name='Ordre')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date de création')), ], options={ 'verbose_name': 'Photo de commentaire', 'verbose_name_plural': 'Photos de commentaires', 'ordering': ['order', 'created_at'], }, ), migrations.CreateModel( name='ITSAssetModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ], options={ 'verbose_name': 'ITS Asset Model', 'verbose_name_plural': 'ITS Asset Models', }, ), migrations.CreateModel( name='ITSGeoAsset', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ], ), migrations.CreateModel( name='ITSGeoAssetContract', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.CharField(choices=[('active', 'Actif'), ('inactive', 'Inactif'), ('archived', 'Archivé')], default='active', max_length=50)), ('maintenance_type', models.CharField(choices=[('equipments', 'Equipements'), ('office', 'Bureautique'), ('system', 'Système'), ('other', 'Autre')], default='other', max_length=50)), ], options={ 'verbose_name': 'ITS Asset Contract', 'verbose_name_plural': 'ITS Asset Contracts', }, ), migrations.CreateModel( name='ITSLocation', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ('is_main_location', models.BooleanField(default=False, verbose_name='Main Location')), ], options={ 'verbose_name': 'ITS Location', 'verbose_name_plural': 'ITS Locations', 'ordering': ['code'], }, ), migrations.CreateModel( name='ITSLocationContract', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.CharField(choices=[('active', 'Actif'), ('inactive', 'Inactif'), ('archived', 'Archivé')], default='active', max_length=50)), ('maintenance_type', models.CharField(choices=[('equipments', 'Equipements'), ('office', 'Bureautique'), ('system', 'Système'), ('other', 'Autre')], default='other', max_length=50)), ], options={ 'verbose_name': 'ITS Location Contract', 'verbose_name_plural': 'ITS Location Contracts', }, ), migrations.CreateModel( name='ITSLocationDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('file', models.FileField(max_length=255, storage=common.storages.PrivateMediaStorage(), upload_to=assets.models.its.upload_to_its_location, verbose_name='Fichier')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, storage=common.storages.PrivateMediaStorage(), upload_to=assets.models.its.upload_to_its_location)), ('document_type', models.CharField(choices=[('as_built', 'As Built'), ('schema', 'Schéma'), ('other', 'Autre')], default='other', max_length=50, verbose_name='Type de document')), ], options={ 'ordering': ['upload_date'], 'abstract': False, }, ), migrations.CreateModel( name='NatureAssetModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('color', models.CharField(blank=True, max_length=200, null=True)), ], options={ 'verbose_name': 'Nature Asset Model', 'verbose_name_plural': 'Nature Asset Models', }, ), migrations.CreateModel( name='NatureBench', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('material', models.CharField(blank=True, max_length=200, null=True)), ('length', models.FloatField(blank=True, null=True)), ('width', models.FloatField(blank=True, null=True)), ('height', models.FloatField(blank=True, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='NatureGreenSurface', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ('surface_area', models.FloatField(blank=True, null=True)), ('slope', models.FloatField(blank=True, null=True)), ('weighting', models.FloatField(blank=True, null=True)), ('density', models.FloatField(blank=True, null=True)), ('mower_frenquency', models.IntegerField(blank=True, null=True)), ('buffer', models.FloatField(blank=True, null=True)), ('width', models.FloatField(blank=True, null=True)), ('length', models.FloatField(blank=True, null=True)), ('bulb_types', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(choices=[('tulipes', 'Tulipes'), ('jacynthes', 'Jacynthes'), ('jonquilles', 'Jonquilles'), ('narcisses', 'Narcisses'), ('crocus', 'Crocus'), ('perce_neige', 'Perce-neige'), ('autres', 'Autres')], max_length=50), blank=True, default=list, verbose_name='Types de bulbes')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='NatureGreenSurfaceDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('file', models.FileField(max_length=255, storage=common.storages.PrivateMediaStorage(), upload_to='assets_documents/nature/surfaces/', verbose_name='Fichier')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, storage=common.storages.PrivateMediaStorage(), upload_to='assets_documents/nature/surfaces/')), ], options={ 'ordering': ['upload_date'], 'abstract': False, }, ), migrations.CreateModel( name='NatureLocation', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ('zone', models.IntegerField(blank=True, null=True)), ('is_highway', models.BooleanField(default=False)), ], options={ 'ordering': ['code'], 'abstract': False, }, ), migrations.CreateModel( name='NatureRWIAsset', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.GeometryField(blank=True, null=True, srid=3812)), ('external_id', models.IntegerField(blank=True, null=True, verbose_name='External ID')), ('code_name', models.CharField(blank=True, choices=[('AV', 'Stormwater inlet (Avaloir)'), ('BS', 'Sequenced border (Bordure séquencée)'), ('BI', "Injection port (Bouche d'injection)"), ('CA', 'Non-return valve (Clapet anti-retour)'), ('ES', 'Sedimentation (Empierrement sédimentation)'), ('KC', 'Kerb cell'), ('PI', "Infiltration well (Puits d'infiltration)"), ('SU', 'Overflow (Surverse)'), ('VI', "Isolation valve (Vanne d'isolation)"), ('VR', 'Control valve (Vanne de régulation)'), ('GT', 'Sidewalk gargoyle (Gargouille de trottoir)'), ('FE', "Trickle of water (Filet d'eau)"), ('AR', 'Rail drain (Avaloir de rail)'), ('BA', 'Leveled edge (Bordure arasée)'), ('CI', 'Infiltration channel (Caniveau infiltrant)'), ('D', 'Drain'), ('TP', 'Overflowing (Trop plein)'), ('RES', 'Separate sewer system (Réseau égout séparatif)'), ('EVC', 'Hollow green space (Espace vert creux)'), ('OED', 'Decentralized underground structure (Ouvrage enterré décentralisé)'), ('OSI', 'Work on an impermeable surface (Ouvrage sur surface imperméable)'), ('TA', 'Alternative technique (Technique alternative)'), ('OA', 'Supplementary work (Ouvrage annexe)')], max_length=50, null=True, verbose_name='Code name')), ('structure_type', models.CharField(blank=True, choices=[('avaloir', 'Stormwater inlet (Avaloir)'), ('bordure sequencee', 'Sequenced border (Bordure séquencée)'), ('bouche injection', "Injection port (Bouche d'injection)"), ('clapet anti-retour', 'Non-return valve (Clapet anti-retour)'), ('empierrement sedimentation', 'Sedimentation (Empierrement sédimentation)'), ('kerb cell', 'Kerb cell'), ('puits infiltration', "Infiltration well (Puits d'infiltration)"), ('surverse', 'Overflow (Surverse)'), ('vanne isolation', "Isolation valve (Vanne d'isolation)"), ('vanne regulation', 'Control valve (Vanne de régulation)'), ('gargouille de trottoir', 'Sidewalk gargoyle (Gargouille de trottoir)'), ('filet eau', "Trickle of water (Filet d'eau)"), ('avaloir de rail', 'Rail drain (Avaloir de rail)'), ('bordure arasee', 'Leveled edge (Bordure arasée)'), ('caniveau infiltrant', 'Infiltration channel (Caniveau infiltrant)'), ('drain', 'Drain'), ('trop plein', 'Overflowing (Trop plein)'), ('reseau egout separatif', 'Separate sewer system (Réseau égout séparatif)'), ('bassin sec/infiltration', 'Dry/infiltration basin (Bassin sec/infiltration)'), ('bassin en eau', 'Wet basin (Bassin en eau)'), ('fosse', 'Ditch (Fossé)'), ('jardin de pluie', 'Rain garden (Jardin de pluie)'), ('noue', 'Swale (Noue)'), ('massif drainant', 'Draining structure (Massif drainant)'), ('tranchee drainante', 'Draining trench (Tranchée drainante)'), ('toiture stockante', 'Retention roof (Toiture stockante)'), ('toiture verte', 'Green roof (Toiture verte)'), ('bassin orage', "Stormwater basin (Bassin d'orage)"), ('SAUL-vide', 'SAUL-empty (SAUL-vide)'), ('SAUL-terre', 'SAUL-earth (SAUL-terre)'), ('citerne', 'Cistern (Citerne)'), ('espace vert sur dalle', 'Green space on slab (Espace vert sur dalle)'), ('bande filtrante', 'Filter strip (Bande filtrante)'), ('collecteur en beton poreux', 'Porous concrete collector (Collecteur en béton poreux)')], max_length=100, null=True, verbose_name='Structure type')), ('geometry_type', models.CharField(blank=True, choices=[('point', 'Point'), ('line', 'Line'), ('polygon', 'Polygon')], max_length=50, null=True, verbose_name='Geometry type')), ('project_manager', models.CharField(blank=True, choices=[('DPV', 'DPV'), ('DITP', 'DITP'), ('DEN', 'DEN'), ('DPO', 'DPO'), ('Beliris', 'Beliris'), ('Commune', 'Commune')], max_length=50, null=True, verbose_name='Project manager')), ('construction_status', models.CharField(blank=True, choices=[('etude', 'Design (Étude)'), ('travaux', 'Construction (Travaux)'), ('reception provisoire', 'Provisional acceptance (Réception provisoire)'), ('reception definitive', 'Final acceptance (Réception définitive)')], max_length=100, null=True, verbose_name='Construction status')), ('commissioning_date', models.DateField(blank=True, null=True, verbose_name='Commissioning date')), ('condition', models.CharField(blank=True, choices=[('bon', 'Good (Bon)'), ('examen a programmer', 'Inspection to schedule (Examen à programmer)'), ('intervention curative necessaire', 'Curative action needed (Intervention curative nécessaire)'), ('refection totale necessaire', 'Total rehabilitation needed (Réfection totale nécessaire)'), ('travaux entretien a realiser', 'Maintenance works to perform (Travaux entretien à réaliser)'), ('travaux maintenance', 'Maintenance works (Travaux maintenance)'), ('travaux maintenance a programmer', 'Maintenance works to schedule (Travaux maintenance à programmer)')], max_length=100, null=True, verbose_name='Condition')), ('administrator', models.CharField(blank=True, max_length=500, null=True, verbose_name='Administrator')), ('monitoring', models.CharField(blank=True, max_length=500, null=True, verbose_name='Monitoring')), ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), ('has_filter', models.BooleanField(blank=True, null=True, verbose_name='Has filter')), ('sewer_connection', models.CharField(blank=True, choices=[('connecte', 'Connected (Connecté)'), ('non connecte', 'Not connected (Non connecté)')], max_length=50, null=True, verbose_name='Sewer connection')), ('separate_network_connection', models.CharField(blank=True, choices=[('connecte', 'Connected (Connecté)'), ('non connecte', 'Not connected (Non connecté)')], max_length=50, null=True, verbose_name='Separate network connection')), ('hydro_network_connection', models.CharField(blank=True, choices=[('connecte', 'Connected (Connecté)'), ('non connecte', 'Not connected (Non connecté)')], max_length=50, null=True, verbose_name='Hydro network connection')), ('surface_area', models.FloatField(blank=True, null=True, verbose_name='Surface area (m²)')), ('length', models.FloatField(blank=True, null=True, verbose_name='Length (m)')), ('coating_category', models.CharField(blank=True, choices=[('Vegetal', 'Vegetal (Végétal)'), ('Structure enherbee', 'Grassed structure (Structure enherbée)'), ('Materiau non agrege', 'Unbound material (Matériau non agrégé)'), ('Structure a remplissage mineral', 'Mineral-filled structure (Structure à remplissage minéral)'), ('Revetement sureleve', 'Raised coating (Revêtement surélevé)'), ('Modulaire poreux', 'Porous modular (Modulaire poreux)'), ('Continu poreux', 'Porous continuous (Continu poreux)'), ('Impermeable', 'Impermeable (Imperméable)')], max_length=100, null=True, verbose_name='Coating category')), ('coating_type', models.CharField(blank=True, choices=[('Pleine terre', 'Open soil (Pleine terre)'), ('Melange terre-pierre', 'Soil-stone mixture (Mélange terre-pierre)'), ('Paves a joints larges enherbes', 'Grassed wide-joint pavers (Pavés à joints larges enherbés)'), ('Dalles gazon en beton', 'Concrete grass grids (Dalles gazon en béton)'), ('Dalles alveolaires vegetalisees', 'Vegetated cellular tiles (Dalles alvéolaires végétalisées)'), ('Mulch vegetal', 'Woodchips/mulch (Mulch végétal)'), ('Graviers calcaires', 'Limestone gravel (Graviers calcaires)'), ('Graviers non calcaires', 'Non-limestone gravel (Graviers non calcaires)'), ('Terre battue', 'Dirt ground (Terre battue)'), ('Paves a joints larges engravillonnes', 'Gravel wide-joint pavers (Pavés à joints larges engravillonnés)'), ('Dalles alveolaires en gravier', 'Gravel cellular tiles (Dalles alvéolaires en gravier)'), ('Dalles en PEHD remplies de pave', 'HDPE tiles filled with pavers (Dalles en PEHD remplies de pavé)'), ('Grilles', 'Grates (Grilles)'), ('Platelages bois', 'Wooden decking (Platelages bois)'), ('Pave en beton poreux', 'Porous concrete pavers (Pavé en béton poreux)'), ('Dalle en beton poreux', 'Porous concrete slab (Dalle en béton poreux)'), ('Enrobes bitumineux poreux', 'Porous asphalt (Enrobés bitumineux poreux)'), ('Betons poreux', 'Porous concrete (Bétons poreux)'), ('Graviers lies a la resine', 'Resin-bound gravel (Graviers liés à la résine)'), ('Graviers concasses lies aux polymeres', 'Polymer-bound crushed gravel (Graviers concassés liés aux polymères)'), ('Revetements EPDM et ESBR', 'EPDM and SBR rubber coatings (Revêtements EPDM et ESBR)'), ('Revetements en beton de ciment non permeables', 'Non-porous cement concrete coatings (Revêtements en béton de ciment non perméables)'), ('Revetements bitumineux non permeables', 'Non-porous asphalt coatings (Revêtements bitumineux non perméables)'), ('Dallages non permeables', 'Non-porous tiling (Dallages non perméables)'), ('Pavages non permeables', 'Non-porous paving (Pavages non perméables)'), ('Autres revetements non permeables', 'Other non-porous coatings (Autres revêtements non perméables)')], max_length=100, null=True, verbose_name='Coating type')), ], options={ 'verbose_name': 'RWI Asset', 'verbose_name_plural': 'RWI Assets', }, ), migrations.CreateModel( name='NatureRWIAssetDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('file', models.FileField(max_length=255, storage=common.storages.PrivateMediaStorage(), upload_to='assets_documents/nature/rwi/', verbose_name='File')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, storage=common.storages.PrivateMediaStorage(), upload_to='assets_documents/nature/rwi/')), ], options={ 'verbose_name': 'RWI Asset Document', 'verbose_name_plural': 'RWI Asset Documents', }, ), migrations.CreateModel( name='NatureRWIZ', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ], options={ 'verbose_name': 'Zone de gestion intégrée des eaux pluviales (ZIEP)', 'verbose_name_plural': 'Zones de gestion intégrée des eaux pluviales (ZIEP)', }, ), migrations.CreateModel( name='NatureShrub', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('height', models.FloatField(blank=True, null=True)), ('depth', models.FloatField(blank=True, null=True)), ('trimmed', models.BooleanField(default=False)), ], options={ 'verbose_name': 'Arbuste', 'verbose_name_plural': 'Arbustes', }, ), migrations.CreateModel( name='NatureTree', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('height', models.FloatField(blank=True, null=True)), ('depth', models.FloatField(blank=True, null=True)), ('protection_buffer', models.FloatField(blank=True, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='PublicLightingElectricalCabinet', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('ean_code', models.CharField(blank=True, max_length=50, null=True, verbose_name='Code EAN')), ('power_supply', models.CharField(blank=True, max_length=100, null=True, verbose_name='Alimentation électrique')), ('meter_number', models.CharField(blank=True, max_length=100, null=True, verbose_name='Numéro de compteur')), ('number_of_circuits', models.IntegerField(blank=True, null=True, verbose_name='Nombre de circuits')), ], ), migrations.CreateModel( name='PublicLightingElectricalCabinetModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('width', models.FloatField(blank=True, null=True, verbose_name='Largeur (cm)')), ('height', models.FloatField(blank=True, null=True, verbose_name='Hauteur (cm)')), ('depth', models.FloatField(blank=True, null=True, verbose_name='Profondeur (cm)')), ('ip_rating', models.CharField(blank=True, max_length=10, null=True, verbose_name='Indice de protection IP')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='PublicLightingLightFixture', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ], options={ 'verbose_name': 'Luminaire', 'verbose_name_plural': 'Luminaires', }, ), migrations.CreateModel( name='PublicLightingLightFixtureModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('color', models.CharField(blank=True, max_length=200, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='PublicLightingPole', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ], options={ 'verbose_name': 'Public lighting pole', 'verbose_name_plural': 'Public lighting poles', }, ), migrations.CreateModel( name='PublicLightingPoleModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('color', models.CharField(blank=True, max_length=200, null=True)), ('ral', models.CharField(blank=True, max_length=200, null=True)), ('height', models.FloatField(blank=True, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='PublicLightingStreet', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ], options={ 'ordering': ['code'], 'abstract': False, }, ), migrations.CreateModel( name='PublicLightingStreetDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('file', models.FileField(max_length=255, storage=common.storages.PrivateMediaStorage(), upload_to='assets_documents/publiclighting/', verbose_name='Fichier')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, storage=common.storages.PrivateMediaStorage(), upload_to='assets_documents/publiclighting/')), ('document_type', models.CharField(choices=[('as_built', 'As Built'), ('other', 'Autre')], default='other', max_length=50, verbose_name='Type de document')), ], options={ 'ordering': ['upload_date'], 'abstract': False, }, ), migrations.CreateModel( name='RoadConcreteBlockSet', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('address', models.CharField(blank=True, max_length=2048, null=True)), ('main_function', models.CharField(blank=True, choices=[('protection', 'Protection Asset'), ('antiterrorist', 'Antiterroriste'), ('parking_neutralization', 'Neutralisation stationnement'), ('road_safety', 'Sécurité routière'), ('public_space', 'Espace public'), ('construction', 'Chantier'), ('unidentified', 'Non identifié')], max_length=200, null=True)), ('secondary_functions', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(choices=[('protection', 'Protection Asset'), ('antiterrorist', 'Antiterroriste'), ('parking_neutralization', 'Neutralisation stationnement'), ('road_safety', 'Sécurité routière'), ('public_space', 'Espace public'), ('construction', 'Chantier'), ('unidentified', 'Non identifié')], max_length=200), blank=True, null=True)), ('number_of_blocks', models.IntegerField(blank=True, null=True)), ('length', models.FloatField(blank=True, null=True)), ('recommended_action', models.CharField(blank=True, choices=[('keep', 'Maintenir'), ('remove', 'Enlever'), ('replace', 'Remplacer')], max_length=2048, null=True)), ('priority_level', models.IntegerField(blank=True, null=True)), ('targeted_action_date', models.DateField(blank=True, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='RoadDrain', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('soil_type', models.CharField(blank=True, choices=[('concrete', 'Béton'), ('asphalt', 'Asphalte'), ('stone', 'Pierre'), ('concrete_slabs', 'Dalles en béton'), ('concrete_paving', 'Pavés en béton'), ('stone_slabs', 'Dalles en pierre'), ('stone_paving', 'Pavés en pierre'), ('concrete_grass', 'Béton/Gazon'), ('gravel', 'Gravier'), ('grass', 'Gazon'), ('earth', 'Terre'), ('other', 'Autre'), ('na', 'N/A')], max_length=200, null=True)), ('positionning_source', models.CharField(blank=True, max_length=2048, null=True)), ('positionning_note', models.TextField(blank=True, null=True)), ('positionning_date', models.DateField(blank=True, null=True)), ('drain_location_type', models.CharField(blank=True, choices=[('waterway', "Filet d'eau"), ('sidewalk', 'Trottoir'), ('berme', 'Berme'), ('sidewalk_facade_to_road', 'Trottoir façade vers chaussée'), ('square', 'Place'), ('along_sidewalk', 'Le long du trottoir'), ('middle_road', 'Milieu chaussée'), ('other', 'Autre'), ('na', 'N/A')], max_length=200, null=True)), ('nearby_vegetation', models.BooleanField(blank=True, null=True)), ('possible_rooting', models.BooleanField(blank=True, null=True)), ('is_defect', models.BooleanField(blank=True, null=True)), ('defect_types', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(choices=[('obstructed', 'Obstrué'), ('smell_cut_missing', 'Coupe-odeur manquant'), ('grate_broken', 'Grille cassée'), ('grate_missing', 'Grille manquante'), ('poor_water_flow', 'Mauvais écoulement'), ('other', 'Autre')], max_length=200), blank=True, null=True)), ('defect_note', models.TextField(blank=True, null=True)), ('related_image_type', models.CharField(blank=True, max_length=1000, null=True)), ('altitude', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, dim=3, null=True, srid=3812)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='RoadDrainModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='RoadFurniture', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ], options={ 'verbose_name': 'Street Furniture', 'verbose_name_plural': 'Street Furnitures', }, ), migrations.CreateModel( name='RoadFurnitureModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('color', models.CharField(blank=True, max_length=200, null=True)), ('ral', models.CharField(blank=True, max_length=200, null=True)), ('height', models.FloatField(blank=True, null=True)), ('width', models.FloatField(blank=True, null=True)), ('material', models.CharField(blank=True, max_length=200, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='RoadSidewalk', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('coating_type', models.CharField(blank=True, choices=[('concrete', 'Concrete'), ('paving_stones', 'Paving Stones'), ('tiles20', 'Tiles 20x20'), ('tiles30', 'Tiles 30x30'), ('tiles40', 'Tiles 40x40'), ('tiles50', 'Tiles 50x50'), ('tiles', 'Tiles'), ('asphalt', 'Asphalt'), ('dolomite', 'Dolomie'), ('gravel', 'Gravel'), ('dirt', 'Dirt'), ('other', 'Other')], max_length=200, null=True)), ('quality_level', models.IntegerField(blank=True, choices=[(1, '1 - Très mauvais'), (2, '2 - Mauvais'), (3, '3 - Bon'), (4, '4 - Très bon'), (5, '5 - Excellent')], null=True)), ('area', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ], options={ 'verbose_name': 'Sidewalk', 'verbose_name_plural': 'Sidewalks', }, ), migrations.CreateModel( name='RoadSidewalkModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='RoadStreet', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ('road_code', models.CharField(blank=True, max_length=50, null=True)), ('section_code', models.CharField(blank=True, max_length=50, null=True)), ('street_level', models.CharField(blank=True, max_length=50, null=True)), ], options={ 'ordering': ['code'], 'abstract': False, }, ), migrations.CreateModel( name='RoadStreetDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('file', models.FileField(max_length=255, storage=common.storages.PrivateMediaStorage(), upload_to=assets.models.roads.upload_to_roadstreet, verbose_name='Fichier')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, storage=common.storages.PrivateMediaStorage(), upload_to=assets.models.roads.upload_to_roadstreet)), ('document_type', models.CharField(choices=[('as_built', 'As Built'), ('other', 'Autre')], default='other', max_length=50, verbose_name='Type de document')), ], options={ 'ordering': ['upload_date'], 'abstract': False, }, ), migrations.CreateModel( name='Roadway', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('coating_type', models.CharField(blank=True, choices=[('asphalt', 'Asphalt'), ('concrete', 'Concrete'), ('cobblestone', 'Cobblestone'), ('gravel', 'Gravel'), ('dirt', 'Dirt'), ('other', 'Other')], max_length=200, null=True)), ('quality_level', models.IntegerField(blank=True, choices=[(1, '1 - Très mauvais'), (2, '2 - Mauvais'), (3, '3 - Bon'), (4, '4 - Très bon'), (5, '5 - Excellent')], null=True)), ('lanes', models.IntegerField(blank=True, null=True)), ('area', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ], options={ 'verbose_name': 'Roadway', 'verbose_name_plural': 'Roadways', }, ), migrations.CreateModel( name='RoadwayFunction', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('pedestrian_function', models.CharField(blank=True, choices=[('masterful', 'Magistrale'), ('plus', 'Plus'), ('confort', 'Confort'), ('other', 'Autre')], max_length=200, null=True)), ('bicycle_function', models.CharField(blank=True, choices=[('masterful', 'Magistrale'), ('plus', 'Plus'), ('confort', 'Confort'), ('other', 'Autre')], max_length=200, null=True)), ('public_transport_function', models.CharField(blank=True, choices=[('masterful', 'Magistrale'), ('plus', 'Plus'), ('confort', 'Confort'), ('other', 'Autre')], max_length=200, null=True)), ('private_motorized_function', models.CharField(blank=True, choices=[('masterful', 'Magistrale'), ('plus', 'Plus'), ('confort', 'Confort'), ('other', 'Autre')], max_length=200, null=True)), ], options={ 'verbose_name': 'Roadway Function', 'verbose_name_plural': 'Roadway Functions', }, ), migrations.CreateModel( name='RoadwayModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('speed_limit', models.IntegerField(blank=True, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='SignPanel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('vertical_order', models.IntegerField(blank=True, null=True)), ('signpanel_text', models.CharField(blank=True, choices=[('pole', 'Poteau'), ('lightingpole', "Poteau d'éclairage"), ('trafficlightpole', 'Poteau de signalisation lumineuse'), ('facade', 'Façade'), ('mast', 'Mât'), ('portico', 'Portique'), ('gallows', 'Potence'), ('hopper', 'Trémie'), ('other', 'Autre')], max_length=1000, null=True)), ('signpanel_value', models.FloatField(blank=True, null=True)), ('orientation', models.IntegerField(blank=True, help_text='Orientation en degrés (0-360)', null=True)), ('support_type', models.CharField(blank=True, choices=[('pole', 'Poteau'), ('lightingpole', "Poteau d'éclairage"), ('trafficlightpole', 'Poteau de signalisation lumineuse'), ('facade', 'Façade'), ('mast', 'Mât'), ('portico', 'Portique'), ('gallows', 'Potence'), ('hopper', 'Trémie'), ('other', 'Autre')], max_length=200, null=True)), ('is_temporary', models.BooleanField(default=False)), ], options={ 'verbose_name': 'Panneau de signalisation', 'verbose_name_plural': 'Panneaux de signalisation', }, ), migrations.CreateModel( name='SignPanelModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('shape', models.CharField(blank=True, max_length=200, null=True)), ('color', models.CharField(blank=True, max_length=200, null=True)), ('ral', models.CharField(blank=True, max_length=200, null=True)), ('height', models.FloatField(blank=True, null=True)), ('width', models.FloatField(blank=True, null=True)), ('diameter', models.FloatField(blank=True, null=True)), ('material', models.CharField(blank=True, max_length=200, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='SignPanelType', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=100, unique=True)), ('name_fr', models.CharField(max_length=200)), ('name_nl', models.CharField(max_length=200)), ('description', models.TextField(blank=True, null=True)), ('sgv_picture', models.ImageField(blank=True, null=True, upload_to='sign/signpanels_types/')), ('default_width', models.FloatField(blank=True, null=True, verbose_name='Largeur par défaut (cm)')), ('default_height', models.FloatField(blank=True, null=True, verbose_name='Hauteur par défaut (cm)')), ('default_diameter', models.FloatField(blank=True, null=True, verbose_name='Diamètre par défaut (cm)')), ], ), migrations.CreateModel( name='SignParkingSpot', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PolygonField(blank=True, null=True, srid=3812)), ('spot_type', models.CharField(choices=[('car_parking', 'Place de stationnement'), ('bicycle_parking', 'Place de stationnement pour vélos'), ('loading_zone', 'Zone de chargement/déchargement'), ('bus_stop', 'Arrêt de bus'), ('taxi_stand', 'Station de taxis'), ('other', 'Autre')], default='other', max_length=50, verbose_name='Type de place')), ('capacity', models.IntegerField(blank=True, help_text='Capacité de la place (ex: nombre de véhicules pouvant stationner)', null=True)), ('is_temporary', models.BooleanField(default=False, help_text='Indique si la place est temporaire (ex: zone de chantier)')), ('entity', models.CharField(blank=True, help_text='Entité responsable de la place (ex: société de parking)', max_length=255, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='SignPole', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('orientation', models.IntegerField(blank=True, default=90, help_text='Orientation en degrés (0-360)', null=True)), ], ), migrations.CreateModel( name='SignPoleModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('color', models.CharField(blank=True, max_length=200, null=True)), ('ral', models.CharField(blank=True, max_length=200, null=True)), ('height', models.FloatField(blank=True, null=True)), ('diameter', models.FloatField(blank=True, null=True)), ('material', models.CharField(blank=True, max_length=200, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='SignStreet', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ('road_code', models.CharField(blank=True, max_length=50, null=True)), ('section_code', models.CharField(blank=True, max_length=50, null=True)), ('street_level', models.CharField(blank=True, max_length=50, null=True)), ], options={ 'ordering': ['code'], 'abstract': False, }, ), migrations.CreateModel( name='SignStreetDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('file', models.FileField(max_length=255, upload_to=assets.models.sign.upload_to_signstreet, verbose_name='Fichier')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, upload_to=assets.models.sign.upload_to_signstreet)), ('document_type', models.CharField(choices=[('as_built', 'As Built'), ('other', 'Autre')], default='other', max_length=50, verbose_name='Type de document')), ], options={ 'ordering': ['upload_date'], 'abstract': False, }, ), migrations.CreateModel( name='Structure', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50, unique=True)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('structure_type', models.CharField(blank=True, choices=[('tunnel', 'Tunnnel'), ('bridge', 'Pont'), ('viaduct', 'Viaduc'), ('overpass', 'Passerelle'), ('underpass', 'Passage souterrain'), ('gallery', 'Galerie technique'), ('atypical', 'Ouvrage atypique')], max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('linked_folder', models.CharField(blank=True, max_length=1024, null=True)), ('structure_number', models.IntegerField(blank=True, null=True, verbose_name="Numéro de l'ouvrage")), ], options={ 'ordering': ['code'], }, ), migrations.CreateModel( name='StructureAssetModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ], options={ 'verbose_name': 'Structure Asset Model', 'verbose_name_plural': 'Structure Asset Models', }, ), migrations.CreateModel( name='StructureContract', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.CharField(choices=[('active', 'Actif'), ('inactive', 'Inactif'), ('archived', 'Archivé')], default='active', max_length=50)), ('maintenance_type', models.CharField(choices=[('electromeca', 'Eléctromécanique'), ('civil_engineering', 'Génie civil'), ('urgent_cleaning', 'Nettoyage urgent'), ('other', 'Autre')], default='other', max_length=50)), ], options={ 'verbose_name': 'Structure Contract', 'verbose_name_plural': 'Structure Contracts', }, ), migrations.CreateModel( name='StructureDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('file', models.FileField(max_length=255, storage=common.storages.PrivateMediaStorage(), upload_to=assets.models.structures.upload_to_structure, verbose_name='Fichier')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, storage=common.storages.PrivateMediaStorage(), upload_to=assets.models.structures.upload_to_structure)), ('document_type', models.CharField(choices=[('as_built', 'As Built'), ('cme', 'CME'), ('inspection_ce', 'Inspection G.C.'), ('inspection_em', 'Inspection E.M.'), ('pis', 'PIS'), ('other', 'Autre')], default='other', max_length=50, verbose_name='Type de document')), ], options={ 'ordering': ['upload_date'], 'abstract': False, }, ), migrations.CreateModel( name='StructureGeoAsset', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ], ), migrations.CreateModel( name='StructureLocation', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=3812)), ('is_main_location', models.BooleanField(default=False, verbose_name='Main Location')), ], options={ 'verbose_name': 'Structure Location', 'verbose_name_plural': 'Structure Locations', 'ordering': ['code'], }, ), migrations.CreateModel( name='TrafficLightAccessory', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('orientation', models.FloatField(blank=True, null=True)), ], options={ 'verbose_name': 'Accessoire', 'verbose_name_plural': 'Accessoires', }, ), migrations.CreateModel( name='TrafficLightAccessoryModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='TrafficLightCable', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.LineStringField(blank=True, null=True, srid=3812)), ], options={ 'verbose_name': 'Câble', 'verbose_name_plural': 'Câbles', }, ), migrations.CreateModel( name='TrafficLightCableModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('number_of_strands', models.IntegerField(verbose_name='Nombre de brins')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='TrafficLightContract', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.CharField(choices=[('active', 'Actif'), ('inactive', 'Inactif'), ('archived', 'Archivé')], default='active', max_length=50)), ('maintenance_type', models.CharField(choices=[('infra', 'Infrastructure'), ('controller', 'Contrôleur de traffic'), ('other', 'Autre')], default='other', max_length=50)), ], options={ 'verbose_name': 'Traffic Lights Contract', 'verbose_name_plural': 'Traffic Lights Contracts', }, ), migrations.CreateModel( name='TrafficLightController', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('connected_to_control_center', models.BooleanField(default=False, verbose_name='Connecté à la centrale de contrôle')), ('plan', models.CharField(blank=True, max_length=255, null=True, verbose_name='Plan')), ('cabinet_type', models.CharField(blank=True, max_length=255, null=True, verbose_name='Type')), ('power', models.CharField(blank=True, max_length=255, null=True, verbose_name='Puissance')), ('firmware_version', models.CharField(blank=True, max_length=255, null=True, verbose_name='Version du firmware')), ('rms', models.BooleanField(default=True, verbose_name='RMS')), ('url', models.URLField(blank=True, null=True, verbose_name='URL')), ], options={ 'verbose_name': 'Contrôleur', 'verbose_name_plural': 'Contrôleurs', }, ), migrations.CreateModel( name='TrafficLightControllerHardware', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('hardware', models.CharField(blank=True, max_length=255, null=True, verbose_name='Hardware')), ('name', models.CharField(blank=True, max_length=255, null=True, verbose_name='Nom du matériel')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du matériel')), ], options={ 'verbose_name': 'Hardware contrôleur', 'verbose_name_plural': 'Hardwares contrôleur', }, ), migrations.CreateModel( name='TrafficLightControllerLogFile', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('file', models.FileField(max_length=255, storage=common.storages.PrivateMediaStorage(), upload_to='assets/traffic_lights/controller_logs/', verbose_name='Fichier de log')), ('filedate', models.DateTimeField(blank=True, null=True, verbose_name='Date du log')), ], options={ 'verbose_name': 'Fichier de log du contrôleur', 'verbose_name_plural': 'Fichiers de log du contrôleur', }, ), migrations.CreateModel( name='TrafficLightControllerModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='TrafficLightDetector', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('name', models.CharField(blank=True, max_length=255, null=True, verbose_name='Nom du détecteur')), ('hardware', models.CharField(blank=True, max_length=255, null=True, verbose_name='Hardware')), ('phases', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=50), blank=True, null=True, verbose_name='Phases associées')), ('mentionned_on_plan', models.BooleanField(default=False, verbose_name='Mentionné sur le plan')), ], options={ 'verbose_name': 'Détecteur', 'verbose_name_plural': 'Détecteurs', }, ), migrations.CreateModel( name='TrafficLightDetectorModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='TrafficLightElectricalCabinet', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('ean_code', models.CharField(blank=True, max_length=50, null=True, verbose_name='Code EAN')), ('power_supply', models.CharField(blank=True, max_length=100, null=True, verbose_name='Alimentation électrique')), ('meter_number', models.CharField(blank=True, max_length=100, null=True, verbose_name='Numéro de compteur')), ('publicity', models.BooleanField(default=False, verbose_name='Publicité')), ('key_type', models.CharField(blank=True, choices=[('bks', 'BKS'), ('bur16', 'BUR 16'), ('eu4', 'EU 4'), ('siemens', 'Siemens'), ('yale5', 'Yale 5'), ('58335', '58335'), ('no_key', 'Pas de clé'), ('other', 'Autre')], max_length=100, null=True, verbose_name='Type de clé')), ('cabinet_type', models.CharField(blank=True, choices=[('traffic_lights', 'Feux de signalisation'), ('mixed', 'Mixte'), ('other', 'Autre')], default='traffic_lights', max_length=100, null=True, verbose_name="Type d'armoire")), ('managed_by', models.CharField(blank=True, max_length=255, null=True, verbose_name='Géré par')), ('meter_inside', models.BooleanField(default=False, verbose_name='Présence Compteur')), ('differential_switch', models.BooleanField(default=False, verbose_name='Interrupteur différentiel')), ('differential_switch_caliber', models.CharField(blank=True, max_length=50, null=True, verbose_name='Calibre du disjoncteur différentiel')), ('differential_breaker', models.BooleanField(default=False, verbose_name='Disjoncteur différentiel')), ('differential_breaker_caliber', models.CharField(blank=True, max_length=50, null=True, verbose_name='Calibre du disjoncteur')), ('differential_caliber', models.CharField(blank=True, max_length=50, null=True, verbose_name='Calibre différentiel')), ('departure_towards', models.CharField(blank=True, max_length=50, null=True, verbose_name='Départ vers')), ('visual_conformity', models.CharField(blank=True, max_length=255, null=True, verbose_name='Conformité visuelle')), ('cleanliness', models.CharField(blank=True, max_length=255, null=True, verbose_name='Propreté')), ], options={ 'verbose_name': 'Armoire', 'verbose_name_plural': 'Armoires', }, ), migrations.CreateModel( name='TrafficLightElectricalCabinetContent', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('description', models.CharField(blank=True, max_length=255, null=True, verbose_name='Description du contenu')), ('number', models.CharField(blank=True, max_length=100, null=True, verbose_name='Numéro de référence')), ('ean', models.CharField(blank=True, max_length=100, null=True, verbose_name='Code EAN')), ], options={ 'verbose_name': "Contenu d'armoire", 'verbose_name_plural': "Contenus d'armoires", }, ), migrations.CreateModel( name='TrafficLightElectricalCabinetContentModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='TrafficLightElectricalCabinetModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('width', models.FloatField(blank=True, null=True, verbose_name='Largeur (cm)')), ('height', models.FloatField(blank=True, null=True, verbose_name='Hauteur (cm)')), ('depth', models.FloatField(blank=True, null=True, verbose_name='Profondeur (cm)')), ('ip_rating', models.CharField(blank=True, max_length=10, null=True, verbose_name='Indice de protection IP')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='TrafficLightIntersection', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('voltage_type', models.CharField(blank=True, choices=[('10V', '10 Volts'), ('230V', '230 Volts'), ('LED', 'LED')], null=True)), ('status', models.CharField(choices=[('active', 'Actif'), ('in_preparation', 'En préparation'), ('under_repair', 'En cours de réparation'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('inactive', 'Désactivé'), ('archived', 'Archivé')], default='active')), ('begin_time', models.DateTimeField(blank=True, null=True)), ('current_index', models.CharField(blank=True, max_length=100, null=True)), ('is_radar', models.BooleanField(default=False, verbose_name='Est un radar ?')), ], options={ 'ordering': ['code'], 'abstract': False, }, ), migrations.CreateModel( name='TrafficLightIntersectionDocument', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True, verbose_name='Description du document')), ('upload_date', models.DateTimeField(auto_now=True, verbose_name='Date de téléversement')), ('status', models.CharField(choices=[('active', 'Actif'), ('archived', 'Archivé')], default='active')), ('file', models.FileField(max_length=255, storage=common.storages.PrivateMediaStorage(), upload_to='assets_documents/traffic_lights/', verbose_name='Fichier')), ('thumbnail', models.ImageField(blank=True, max_length=255, null=True, storage=common.storages.PrivateMediaStorage(), upload_to='assets_documents/thumbnails/traffic_lights/')), ('document_type', models.CharField(choices=[('as_built', 'As Built'), ('cross_plan', 'Plan de croix'), ('other', 'Autre'), ('programming_file', 'Fichier de programmation'), ('connexion_plan', 'Plan de raccordement')], default='other', max_length=50, verbose_name='Type de document')), ], options={ 'ordering': ['upload_date'], 'abstract': False, }, ), migrations.CreateModel( name='TrafficLightLantern', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('orientation', models.FloatField(blank=True, null=True)), ], options={ 'verbose_name': 'Lanterne', 'verbose_name_plural': 'Lanternes', }, ), migrations.CreateModel( name='TrafficLightLanternModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('voltage', models.IntegerField(verbose_name='Tension (V)')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='TrafficLightNetworkHardware', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('name', models.CharField(blank=True, max_length=255, null=True, verbose_name='Nom du matériel')), ('hardware', models.CharField(blank=True, max_length=255, null=True, verbose_name='Hardware')), ('mentionned_on_plan', models.BooleanField(default=False, verbose_name='Mentionné sur le plan')), ], options={ 'verbose_name': 'Network Hardware', 'verbose_name_plural': 'Network Hardwares', }, ), migrations.CreateModel( name='TrafficLightPole', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geojson', models.TextField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('arc_length', models.FloatField(blank=True, null=True, verbose_name="Longueur de l'arc (m)")), ('extension', models.BooleanField(default=False, verbose_name='Extension')), ('colour', models.CharField(blank=True, max_length=200, null=True, verbose_name='Couleur')), ('ral', models.CharField(blank=True, max_length=200, null=True, verbose_name='RAL')), ], options={ 'verbose_name': 'Traffic light pole', 'verbose_name_plural': 'Traffic light poles', }, ), migrations.CreateModel( name='TrafficLightPoleModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('colour', models.CharField(blank=True, max_length=200, null=True, verbose_name='Couleur')), ('ral', models.CharField(blank=True, max_length=200, null=True, verbose_name='RAL')), ('height', models.FloatField(blank=True, null=True, verbose_name='Hauteur (m)')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='TrafficLightProgramming', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('commissioning_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de mise en service')), ('uncommissioning_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de mise hors service')), ('plan', models.CharField(blank=True, max_length=255, null=True, verbose_name='Plan')), ('index', models.CharField(max_length=100, verbose_name='Index')), ('info', models.TextField(blank=True, null=True, verbose_name='Informations')), ], options={ 'ordering': ['-commissioning_date'], }, ), migrations.CreateModel( name='TrafficLightRadar', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ], options={ 'verbose_name': 'Radar', 'verbose_name_plural': 'Radars', }, ), migrations.CreateModel( name='TrafficLightRadarModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ], options={ 'verbose_name': 'Traffic Light Radar Model', 'verbose_name_plural': 'Traffic Light Radar Models', }, ), migrations.CreateModel( name='TrafficLightRadarPole', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('colour', models.CharField(blank=True, max_length=200, null=True, verbose_name='Couleur')), ('ral', models.CharField(blank=True, max_length=200, null=True, verbose_name='RAL')), ], options={ 'verbose_name': 'Radar Pole', 'verbose_name_plural': 'Radar Poles', }, ), migrations.CreateModel( name='TrafficLightRadarPoleModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='TrafficLightVoltageHardware', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name_fr', models.CharField(blank=True, max_length=200, null=True)), ('name_nl', models.CharField(blank=True, max_length=200, null=True)), ('status', models.CharField(choices=[('to_be_approved', 'À approuver'), ('planned', 'Planifié'), ('active', 'Actif'), ('damaged', 'Endommagé'), ('to_replace', 'A remplacer'), ('voluntarily_out_of_service', 'Mis hors service volontairement'), ('removed', 'Enlevé'), ('archived', 'Archivé')], default='active', max_length=50)), ('obsolescence', models.CharField(blank=True, choices=[('good', 'Bon état'), ('medium', 'Moyen'), ('bad', 'Dégradé'), ('critical', 'Critique'), ('unknown', 'Inconnu')], default='unknown', null=True)), ('installation_date', models.DateTimeField(blank=True, null=True)), ('uninstallation_date', models.DateTimeField(blank=True, null=True)), ('serial_number', models.CharField(blank=True, max_length=200, null=True)), ('warranty_duration', models.IntegerField(blank=True, null=True, verbose_name='Duration of the warranty (months)')), ('last_inspection_date', models.DateTimeField(blank=True, null=True)), ('last_preventive_date', models.DateTimeField(blank=True, null=True)), ('last_corrective_date', models.DateTimeField(blank=True, null=True)), ('last_survey_date', models.DateTimeField(blank=True, null=True)), ('brand', models.CharField(blank=True, max_length=500, null=True)), ('marked_as_removed_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de marquage comme retiré')), ('note', models.TextField(blank=True, null=True, verbose_name='Note')), ('validation_status', models.CharField(blank=True, choices=[('to_be_validated', 'À valider'), ('validated', 'Validé'), ('to_be_completed', 'À compléter'), ('rejected', 'Rejeté')], max_length=50, null=True, verbose_name='Statut de validation')), ('updated_at', models.DateTimeField(auto_now=True)), ('lon', models.FloatField(blank=True, null=True)), ('lat', models.FloatField(blank=True, null=True)), ('geom', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=3812)), ('geojson', models.TextField(blank=True, null=True)), ('name', models.CharField(blank=True, max_length=255, null=True, verbose_name='Nom du matériel')), ('hardware', models.CharField(blank=True, max_length=255, null=True, verbose_name='Hardware')), ('mentionned_on_plan', models.BooleanField(default=False, verbose_name='Mentionné sur le plan')), ], options={ 'verbose_name': 'Voltage Hardware', 'verbose_name_plural': 'Voltage Hardwares', }, ), ]