# Generated by Django 5.0.4 on 2024-06-03 09:59 import common.fields import django.contrib.auth.models import django.contrib.auth.validators import django.core.validators import django.db.models.deletion import django.utils.timezone import django_countries.fields from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ('auth', '0012_alter_user_first_name_max_length'), ] operations = [ migrations.CreateModel( name='Contact', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('prenom', models.CharField(max_length=30, verbose_name='Prénom')), ('nom', models.CharField(max_length=30, verbose_name='Nom')), ('rue', models.CharField(blank=True, max_length=30, verbose_name='Rue')), ('npa', models.CharField(blank=True, max_length=4, verbose_name='NPA')), ('localite', models.CharField(blank=True, max_length=30, verbose_name='Localité')), ('tel_prive', models.CharField(blank=True, max_length=30, verbose_name='Tél. privé')), ('tel_prof', models.CharField(blank=True, max_length=30, verbose_name='Tél. prof.')), ('email', models.EmailField(blank=True, max_length=100)), ('profession', models.CharField(blank=True, max_length=100, verbose_name='Activité/prof.')), ('remarque', models.TextField(blank=True, verbose_name='Remarque')), ('est_actif', models.BooleanField(default=True, verbose_name='actif')), ], options={ 'verbose_name': 'Contact', 'ordering': ('nom', 'prenom'), }, ), migrations.CreateModel( name='CercleScolaire', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('nom', models.CharField(max_length=50, unique=True)), ('telephone', models.CharField(blank=True, max_length=35, verbose_name='tél.')), ], options={ 'verbose_name': 'Cercle scolaire', 'verbose_name_plural': 'Cercles scolaires', 'ordering': ('nom',), }, ), migrations.CreateModel( name='Famille', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True)), ('archived_at', models.DateTimeField(blank=True, null=True, verbose_name='Archivée le')), ('nom', models.CharField(max_length=40, verbose_name='Nom de famille')), ('rue', models.CharField(blank=True, max_length=60, verbose_name='Rue')), ('npa', models.CharField(blank=True, max_length=4, verbose_name='NPA')), ('localite', models.CharField(blank=True, max_length=30, verbose_name='Localité')), ('telephone', models.CharField(blank=True, max_length=60, verbose_name='Tél.')), ('autorite_parentale', models.CharField(blank=True, choices=[('conjointe', 'Conjointe'), ('pere', 'Père'), ('mere', 'Mère'), ('tutelle', 'Tutelle')], max_length=20, verbose_name='Autorité parentale')), ('monoparentale', models.BooleanField(blank=True, default=None, null=True, verbose_name='Famille monoparent.')), ('statut_marital', models.CharField(blank=True, choices=[('celibat', 'Célibataire'), ('mariage', 'Marié'), ('pacs', 'PACS'), ('concubin', 'Concubin'), ('veuf', 'Veuf'), ('separe', 'Séparé'), ('divorce', 'Divorcé')], max_length=20, verbose_name='Statut marital')), ('connue', models.BooleanField(default=False, verbose_name='famille déjà suivie')), ('accueil', models.BooleanField(default=False, verbose_name="famille d'accueil")), ('besoins_part', models.BooleanField(default=False, verbose_name='famille à besoins particuliers')), ('sap', models.BooleanField(default=False, verbose_name='famille s@p')), ('garde', models.CharField(blank=True, choices=[('partage', 'garde partagée'), ('droit', 'droit de garde'), ('visite', 'droit de visite')], max_length=20, verbose_name='Type de garde')), ('provenance', models.CharField(blank=True, choices=[('famille', 'Famille'), ('ies-ne', 'IES-NE'), ('ies-hc', 'IES-HC'), ('aemo', 'SAEMO'), ('fah', "Famille d'accueil"), ('refug', 'Centre d’accueil réfugiés'), ('hopital', 'Hôpital'), ('autre', 'Autre')], max_length=30, verbose_name='Provenance')), ('destination', models.CharField(blank=True, choices=[('famille', 'Famille'), ('ies-ne', 'IES-NE'), ('ies-hc', 'IES-HC'), ('aemo', 'SAEMO'), ('fah', "Famille d'accueil"), ('refug', 'Centre d’accueil réfugiés'), ('hopital', 'Hôpital'), ('autre', 'Autre')], max_length=30, verbose_name='Destination')), ('statut_financier', models.CharField(blank=True, choices=[('ai', 'AI PC'), ('gsr', 'GSR'), ('osas', 'OSAS'), ('revenu', 'Revenu')], max_length=30, verbose_name='Statut financier')), ('remarques', models.TextField(blank=True)), ], options={ 'ordering': ('nom', 'npa'), 'permissions': ( ('can_manage_waiting_list', "Gérer la liste d'attente"), ('can_archive', 'Archiver les dossiers AEMO'), ('export_stats', 'Exporter les statistiques') ), }, ), migrations.CreateModel( name='LibellePrestation', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=6, unique=True, verbose_name='Code')), ('nom', models.CharField(max_length=30, verbose_name='Nom')), ('actes', models.TextField(blank=True, verbose_name='Actes à prester')), ], options={ 'ordering': ('code',), }, ), migrations.CreateModel( name='Region', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('nom', models.CharField(max_length=30, unique=True)), ('rue', models.CharField(blank=True, max_length=100, verbose_name='Rue')), ], ), migrations.CreateModel( name='Role', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('nom', models.CharField(max_length=50, unique=True, verbose_name='Nom')), ('est_famille', models.BooleanField(default=False, verbose_name='Famille')), ('est_intervenant', models.BooleanField(default=False, verbose_name='Intervenant')), ('est_editeur', models.BooleanField(default=False, help_text='Un rôle éditeur donne le droit de modification des dossiers familles si la personne est intervenante.', verbose_name='Éditeur')), ], options={ 'ordering': ('nom',), }, ), migrations.CreateModel( name='Service', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('sigle', models.CharField(max_length=20, unique=True, verbose_name='Sigle')), ('nom_complet', models.CharField(blank=True, max_length=80, verbose_name='Nom complet')), ], options={ 'ordering': ('sigle',), }, ), migrations.CreateModel( name='Utilisateur', fields=[ ('contact_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='aemo.contact')), ('password', models.CharField(max_length=128, verbose_name='password')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), ('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')), ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), ('sigle', models.CharField(blank=True, max_length=5)), ('equipe', models.CharField(blank=True, choices=[('montagnes', 'Montagnes et V-d-T'), ('littoral', 'Littoral et V-d-R')], max_length=10, verbose_name='Équipe')), ('date_desactivation', models.DateField(blank=True, null=True, verbose_name='Date désactivation')), ('taux_activite', models.PositiveSmallIntegerField(blank=True, default=0, validators=[django.core.validators.MaxValueValidator(100)], verbose_name='Taux d’activité (en %)')), ('decharge', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='Heures de décharge')), ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')), ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')), ], options={ 'verbose_name': 'user', 'verbose_name_plural': 'users', 'abstract': False, }, bases=('aemo.contact', models.Model), managers=[ ('objects', django.contrib.auth.models.UserManager()), ], ), migrations.CreateModel( name='GroupInfo', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True)), ('group', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='auth.group')), ], ), migrations.CreateModel( name='Niveau', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('niveau_interv', models.PositiveSmallIntegerField(choices=[(0, '0'), (1, '1'), (2, '2'), (3, '3')], verbose_name='Niveau d’intervention')), ('date_debut', models.DateField(blank=True, null=True, verbose_name='Date début')), ('date_fin', models.DateField(blank=True, null=True, verbose_name='Date fin')), ('famille', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='niveaux', to='aemo.famille', verbose_name='Famille')), ], ), migrations.CreateModel( name='Personne', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True, null=True)), ('nom', models.CharField(max_length=30, verbose_name='Nom')), ('prenom', models.CharField(blank=True, max_length=30, verbose_name='Prénom')), ('date_naissance', models.DateField(blank=True, null=True, verbose_name='Date de naissance')), ('genre', models.CharField(choices=[('M', 'M'), ('F', 'F')], default='M', max_length=1, verbose_name='Genre')), ('rue', models.CharField(blank=True, max_length=60, verbose_name='Rue')), ('npa', models.CharField(blank=True, max_length=4, verbose_name='NPA')), ('localite', models.CharField(blank=True, max_length=30, verbose_name='Localité')), ('telephone', models.CharField(blank=True, max_length=60, verbose_name='Tél.')), ('email', models.EmailField(blank=True, max_length=254, verbose_name='Courriel')), ('pays_origine', django_countries.fields.CountryField(blank=True, max_length=2, verbose_name='Nationalité')), ('remarque', models.TextField(blank=True)), ('remarque_privee', models.TextField(blank=True, verbose_name='Remarque privée')), ('profession', models.CharField(blank=True, max_length=50, verbose_name='Profession')), ('filiation', models.CharField(blank=True, max_length=80, verbose_name='Filiation')), ('decedee', models.BooleanField(default=False, verbose_name='Cette personne est décédée')), ('allergies', models.TextField(blank=True, verbose_name='Allergies')), ('employeur', models.CharField(blank=True, max_length=50, verbose_name='Adresse empl.')), ('permis', models.CharField(blank=True, max_length=30, verbose_name='Permis/séjour')), ('validite', models.DateField(blank=True, null=True, verbose_name='Date validité')), ('animaux', models.BooleanField(default=None, null=True, verbose_name='Animaux')), ('famille', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='membres', to='aemo.famille')), ('reseaux', models.ManyToManyField(blank=True, to='aemo.contact')), ('role', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='aemo.role')), ], options={ 'verbose_name': 'Personne', 'ordering': ('nom', 'prenom'), }, ), migrations.CreateModel( name='Formation', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('statut', models.CharField(blank=True, choices=[('pre_scol', 'Pré-scolaire'), ('cycle1', 'Cycle 1'), ('cycle2', 'Cycle 2'), ('cycle3', 'Cycle 3'), ('apprenti', 'Apprentissage'), ('etudiant', 'Etudiant'), ('en_emploi', 'En emploi'), ('sans_emploi', 'Sans emploi'), ('sans_occupation', 'Sans occupation')], max_length=20, verbose_name='Scolarité')), ('college', models.CharField(blank=True, max_length=50, verbose_name='Collège')), ('classe', models.CharField(blank=True, max_length=50, verbose_name='Classe')), ('enseignant', models.CharField(blank=True, max_length=50, verbose_name='Enseignant')), ('creche', models.CharField(blank=True, max_length=50, verbose_name='Crèche')), ('creche_resp', models.CharField(blank=True, max_length=50, verbose_name='Resp.crèche')), ('entreprise', models.CharField(blank=True, max_length=50, verbose_name='Entreprise')), ('maitre_apprentissage', models.CharField(blank=True, max_length=50, verbose_name="Maître d'appr.")), ('remarque', models.TextField(blank=True)), ('cercle_scolaire', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='aemo.cerclescolaire', verbose_name='Cercle scolaire')), ('personne', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='aemo.personne')), ], options={ 'verbose_name': 'Scolarité', }, ), migrations.AddField( model_name='famille', name='region', field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='aemo.region'), ), migrations.AddField( model_name='contact', name='roles', field=models.ManyToManyField(blank=True, related_name='contacts', to='aemo.role', verbose_name='Rôles'), ), migrations.AddField( model_name='contact', name='service', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='aemo.service'), ), migrations.CreateModel( name='Suivi', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('equipe', models.CharField(choices=[('montagnes', 'Montagnes et V-d-T'), ('littoral', 'Littoral et V-d-R'), ('neuch_ville', 'Neuchâtel-ville (archives)'), ('litt_est', 'Littoral Est (archives)'), ('litt_ouest', 'Littoral Ouest (archives)')], max_length=15, verbose_name='Équipe')), ('heure_coord', models.BooleanField(default=False, verbose_name='Heure de coordination')), ('difficultes', models.TextField(blank=True, verbose_name='Difficultés')), ('aides', models.TextField(blank=True, verbose_name='Aides souhaitées')), ('competences', models.TextField(blank=True, verbose_name='Ressources/Compétences')), ('dates_demande', models.CharField(blank=True, max_length=128, verbose_name='Dates')), ('autres_contacts', models.TextField(blank=True, verbose_name='Autres services contactés')), ('disponibilites', models.TextField(blank=True, verbose_name='Disponibilités')), ('remarque', models.TextField(blank=True)), ('remarque_privee', models.TextField(blank=True, verbose_name='Remarque privée')), ('service_orienteur', models.CharField(blank=True, choices=[('famille', 'Famille'), ('ope', 'OPE'), ('aemo', 'AEMO'), ('cnpea', 'CNPea'), ('ecole', 'École'), ('res_prim', 'Réseau primaire'), ('res_sec', 'Réseau secondaire'), ('pediatre', 'Pédiatre'), ('autre', 'Autre')], max_length=15, verbose_name='Orienté vers l’AEMO par')), ('service_annonceur', models.CharField(blank=True, max_length=60, verbose_name='Service annonceur')), ('motif_demande', common.fields.ChoiceArrayField(base_field=models.CharField(choices=[('accompagnement', 'Accompagnement psycho-éducatif'), ('integration', 'Aide à l’intégration'), ('demande', 'Elaboration d’une demande (contrainte)'), ('crise', 'Travail sur la crise'), ('post-placement', 'Post-placement'), ('pre-placement', 'Pré-placement'), ('violence', 'Violence / maltraitances')], max_length=60), blank=True, null=True, size=None, verbose_name='Motif de la demande')), ('motif_detail', models.TextField(blank=True, verbose_name='Motif')), ('mandat_ope', common.fields.ChoiceArrayField(base_field=models.CharField(blank=True, choices=[('volontaire', 'Mandat volontaire'), ('curatelle', 'Curatelle 308'), ('referent', 'Référent'), ('enquete', 'Enquête'), ('tutelle', 'Curatelle de portée générale')], max_length=65), blank=True, null=True, size=None, verbose_name='Mandat OPE')), ('referent_note', models.TextField(blank=True, verbose_name='Autres contacts')), ('collaboration', models.TextField(blank=True, verbose_name='Collaboration')), ('ressource', models.TextField(blank=True, verbose_name='Ressource')), ('crise', models.TextField(blank=True, verbose_name='Gestion de crise')), ('date_demande', models.DateField(blank=True, default=None, null=True, verbose_name='Demande déposée le')), ('date_debut_evaluation', models.DateField(blank=True, default=None, null=True, verbose_name='Début de l’évaluation le')), ('date_fin_evaluation', models.DateField(blank=True, default=None, null=True, verbose_name='Fin de l’évaluation le')), ('date_debut_suivi', models.DateField(blank=True, default=None, null=True, verbose_name='Début du suivi le')), ('date_fin_suivi', models.DateField(blank=True, default=None, null=True, verbose_name='Fin du suivi le')), ('demande_prioritaire', models.BooleanField(default=False, verbose_name='Demande prioritaire')), ('demarche', common.fields.ChoiceArrayField(base_field=models.CharField(blank=True, choices=[('volontaire', 'Volontaire'), ('contrainte', 'Contrainte'), ('post_placement', 'Post placement'), ('non_placement', 'Eviter placement')], max_length=60), blank=True, null=True, size=None, verbose_name='Démarche')), ('pers_famille_presentes', models.CharField(blank=True, max_length=200, verbose_name='Membres famille présents')), ('ref_presents', models.CharField(blank=True, max_length=250, verbose_name='Intervenants présents')), ('autres_pers_presentes', models.CharField(blank=True, max_length=100, verbose_name='Autres pers. présentes')), ('motif_fin_suivi', models.CharField(blank=True, choices=[('desengagement', 'Désengagement'), ('evol_positive', 'Autonomie familiale'), ('relai_amb', 'Relai vers ambulatoire'), ('relai', 'Relai vers autre service'), ('placement', 'Placement'), ('non_aboutie', 'Demande non aboutie'), ('non_dispo', 'Pas de disponibilités/place'), ('erreur', 'Erreur de saisie'), ('autres', 'Autres')], max_length=20, verbose_name='Motif de fin de suivi')), ('famille', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='aemo.famille')), ('ope_referent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='aemo.contact', verbose_name='as. OPE')), ('ope_referent_2', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='aemo.contact', verbose_name='as. OPE 2')), ('sse_referent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='aemo.contact', verbose_name='SSE')), ], ), migrations.CreateModel( name='Intervenant', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date_debut', models.DateField(default=django.utils.timezone.now, verbose_name='Date début')), ('date_fin', models.DateField(blank=True, null=True, verbose_name='Date fin')), ('role', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='aemo.role')), ('suivi', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='aemo.suivi')), ('intervenant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.AddField( model_name='suivi', name='intervenants', field=models.ManyToManyField(blank=True, related_name='interventions', through='aemo.Intervenant', to=settings.AUTH_USER_MODEL), ), migrations.CreateModel( name='Rapport', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date', models.DateField(verbose_name='Date du résumé')), ('situation', models.TextField(blank=True, verbose_name='Situation / contexte familial')), ('observations', models.TextField(blank=True, verbose_name='Observations, évolution et hypothèses')), ('projet', models.TextField(blank=True, verbose_name='Perspectives d’avenir')), ('famille', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rapports', to='aemo.famille')), ('auteur', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)), ('pres_interv', models.ManyToManyField(blank=True, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Intervenants cités dans le résumé')), ('sig_interv', models.ManyToManyField(blank=True, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Signature des intervenants')), ], ), migrations.CreateModel( name='Prestation', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date_prestation', models.DateField(verbose_name='date de l’intervention')), ('duree', models.DurationField(verbose_name='durée')), ('familles_actives', models.PositiveSmallIntegerField(blank=True, default=0)), ('texte', models.TextField(blank=True, verbose_name='Contenu')), ('manque', models.BooleanField(default=False, verbose_name='Rendez-vous manqué')), ('fichier', models.FileField(blank=True, upload_to='prestations', verbose_name='Fichier/image')), ('famille', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prestations', to='aemo.famille', verbose_name='Famille')), ('lib_prestation', models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prestations_%(app_label)s', to='aemo.libelleprestation')), ('auteur', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='auteur')), ('intervenants', models.ManyToManyField(related_name='prestations', to=settings.AUTH_USER_MODEL)), ], options={ 'ordering': ('-date_prestation',), 'permissions': (('edit_prest_prev_month', 'Modifier prestations du mois précédent'),), }, ), migrations.CreateModel( name='JournalAcces', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('ordinaire', models.BooleanField(default=True)), ('quand', models.DateTimeField(auto_now_add=True)), ('famille', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='aemo.famille')), ('utilisateur', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='Bilan', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date', models.DateField(verbose_name='Date du bilan')), ('objectifs', models.TextField(verbose_name='Objectifs')), ('rythme', models.TextField(verbose_name='Rythme et fréquence')), ('sig_famille', models.BooleanField(default=True, verbose_name='Apposer signature de la famille')), ('fichier', models.FileField(blank=True, upload_to='bilans', verbose_name='Fichier/image')), ('famille', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bilans', to='aemo.famille')), ('auteur', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='bilans', to=settings.AUTH_USER_MODEL)), ('sig_interv', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL, verbose_name='Signature des intervenants')), ], ), migrations.CreateModel( name='Document', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('fichier', models.FileField(upload_to='doc', verbose_name='Nouveau fichier')), ('titre', models.CharField(max_length=100)), ('famille', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='aemo.famille')), ], options={ 'unique_together': {('famille', 'titre')}, }, ), migrations.AlterUniqueTogether( name='contact', unique_together={('nom', 'prenom', 'service')}, ), ]