2443 lines
199 KiB
Python
2443 lines
199 KiB
Python
# 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',
|
||
},
|
||
),
|
||
]
|