--- /dev/null
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'Etablissement.responsable_fonction'
+ db.add_column(u'ref_etablissement', 'responsable_fonction', self.gf('django.db.models.fields.CharField')(default='', max_length=255, blank=True), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Etablissement.responsable_fonction'
+ db.delete_column(u'ref_etablissement', 'responsable_fonction')
+
+
+ models = {
+ 'managedref.authentification': {
+ 'Meta': {'ordering': "['id']", 'object_name': 'Authentification', 'db_table': "u'ref_authentification'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'courriel': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'id': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Employe']", 'primary_key': 'True', 'db_column': "'id'"}),
+ 'motdepasse': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'managedref.bureau': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'Bureau', 'db_table': "u'ref_bureau'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Implantation']", 'db_column': "'implantation'"}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Region']", 'db_column': "'region'"})
+ },
+ 'managedref.discipline': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'Discipline', 'db_table': "u'ref_discipline'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+ },
+ 'managedref.employe': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'Employe', 'db_table': "u'ref_employe'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'courriel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'date_entree': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'fonction': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'genre': ('django.db.models.fields.CharField', [], {'max_length': '3'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+ 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lieu_travail_theorique_de'", 'db_column': "'implantation'", 'to': "orm['managedref.Implantation']"}),
+ 'implantation_physique': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lieu_travail_reel_de'", 'db_column': "'implantation_physique'", 'to': "orm['managedref.Implantation']"}),
+ 'mandat_debut': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'mandat_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'poste_type_1': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'poste_type_1'", 'null': 'True', 'db_column': "'poste_type_1'", 'to': "orm['managedref.PosteType']"}),
+ 'poste_type_2': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'poste_type_2'", 'null': 'True', 'db_column': "'poste_type_2'", 'to': "orm['managedref.PosteType']"}),
+ 'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'responsable': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'responsable_de'", 'null': 'True', 'db_column': "'responsable'", 'to': "orm['managedref.Employe']"}),
+ 'service': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Service']", 'db_column': "'service'"}),
+ 'telephone_ip': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'telephone_poste': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
+ },
+ 'managedref.etablissement': {
+ 'Meta': {'ordering': "['pays__nom', 'nom']", 'object_name': 'Etablissement', 'db_table': "u'ref_etablissement'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'adresse': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'cedex': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
+ 'code_postal': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
+ 'commentaire': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'fax': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'implantation'", 'to': "orm['managedref.Implantation']"}),
+ 'membre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'membre_adhesion_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to_field': "'code'", 'db_column': "'pays'", 'to': "orm['managedref.Pays']"}),
+ 'province': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'qualite': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'blank': 'True'}),
+ 'region': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'region'", 'to': "orm['managedref.Region']"}),
+ 'responsable_fonction': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'responsable_genre': ('django.db.models.fields.CharField', [], {'max_length': '1', 'blank': 'True'}),
+ 'responsable_nom': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'responsable_prenom': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'statut': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
+ 'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'ville': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+ },
+ 'managedref.groupeadmregion': {
+ 'Meta': {'object_name': 'GroupeAdmRegion', 'db_table': "u'ref_groupe_adm_region'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Employe']", 'db_column': "'employe'"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Region']", 'db_column': "'region'"})
+ },
+ 'managedref.groupearh': {
+ 'Meta': {'object_name': 'GroupeArh', 'db_table': "u'ref_groupe_arh'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Employe']", 'db_column': "'employe'"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'managedref.groupecomptable': {
+ 'Meta': {'object_name': 'GroupeComptable', 'db_table': "u'ref_groupe_comptable'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Employe']", 'db_column': "'employe'"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'managedref.groupecomptablelocal': {
+ 'Meta': {'object_name': 'GroupeComptableLocal', 'db_table': "u'ref_groupe_comptable_local'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Employe']", 'db_column': "'employe'"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'managedref.groupecomptableregional': {
+ 'Meta': {'object_name': 'GroupeComptableRegional', 'db_table': "u'ref_groupe_comptable_regional'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Employe']", 'db_column': "'employe'"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'managedref.groupedirdelegprogrammereg': {
+ 'Meta': {'object_name': 'GroupeDirDelegProgrammeReg', 'db_table': "u'ref_groupe_dir_deleg_programme_reg'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Employe']", 'db_column': "'employe'"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Region']", 'db_column': "'region'"})
+ },
+ 'managedref.groupedirprogramme': {
+ 'Meta': {'object_name': 'GroupeDirProgramme', 'db_table': "u'ref_groupe_dir_programme'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Employe']", 'db_column': "'employe'"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'service': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Service']", 'db_column': "'service'"})
+ },
+ 'managedref.groupedirregion': {
+ 'Meta': {'object_name': 'GroupeDirRegion', 'db_table': "u'ref_groupe_dir_region'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Employe']", 'db_column': "'employe'"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Region']", 'db_column': "'region'"})
+ },
+ 'managedref.grouperespimplantation': {
+ 'Meta': {'object_name': 'GroupeRespImplantation', 'db_table': "u'ref_groupe_resp_implantation'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Employe']", 'db_column': "'employe'"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Implantation']", 'db_column': "'implantation'"}),
+ 'type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
+ },
+ 'managedref.implantation': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'Implantation', 'db_table': "u'ref_implantation'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'adresse_physique_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'adresse_physique_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'adresse_physique_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'adresse_physique_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'adresse_physique_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_physique'", 'to_field': "'code'", 'db_column': "'adresse_physique_pays'", 'to': "orm['managedref.Pays']"}),
+ 'adresse_physique_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'adresse_physique_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'adresse_physique_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'adresse_physique_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'adresse_physique_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'adresse_postale_boite_postale': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'adresse_postale_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'adresse_postale_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'adresse_postale_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'adresse_postale_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'adresse_postale_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_postale'", 'to_field': "'code'", 'db_column': "'adresse_postale_pays'", 'to': "orm['managedref.Pays']"}),
+ 'adresse_postale_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'adresse_postale_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'adresse_postale_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'adresse_postale_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'adresse_postale_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'bureau_rattachement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Implantation']", 'db_column': "'bureau_rattachement'"}),
+ 'code_meteo': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'commentaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'courriel': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'courriel_interne': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'date_extension': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'date_fermeture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'date_inauguration': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'date_ouverture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'fax': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'fax_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'fuseau_horaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'hebergement_convention': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'hebergement_convention_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'hebergement_etablissement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'modif_date': ('django.db.models.fields.DateField', [], {}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Region']", 'db_column': "'region'"}),
+ 'remarque': ('django.db.models.fields.TextField', [], {}),
+ 'responsable_implantation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'statut': ('django.db.models.fields.IntegerField', [], {}),
+ 'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'telephone_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '255', 'blank': 'True'})
+ },
+ 'managedref.objectifspecifique': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'ObjectifSpecifique', 'db_table': "u'ref_objectif_specifique'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'objectif_strategique': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.ObjectifStrategique']", 'db_column': "'objectif_strategique'"})
+ },
+ 'managedref.objectifstrategique': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'ObjectifStrategique', 'db_table': "u'ref_objectif_strategique'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'managedref.pays': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'Pays', 'db_table': "u'ref_pays'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2'}),
+ 'code_bureau': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Bureau']", 'to_field': "'code'", 'null': 'True', 'db_column': "'code_bureau'", 'blank': 'True'}),
+ 'code_iso3': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}),
+ 'developpement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'monnaie': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'nord_sud': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Region']", 'db_column': "'region'"})
+ },
+ 'managedref.poste': {
+ 'Meta': {'object_name': 'Poste', 'db_table': "u'ref_poste'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+ },
+ 'managedref.postetype': {
+ 'Meta': {'object_name': 'PosteType', 'db_table': "u'ref_poste_type'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'managedref.programme': {
+ 'Meta': {'object_name': 'Programme', 'db_table': "u'ref_programme'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+ },
+ 'managedref.projet': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'Projet', 'db_table': "u'ref_projet'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'date_debut': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'etablissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Etablissement']", 'null': 'True', 'db_column': "'etablissement'", 'blank': 'True'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+ 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Implantation']", 'null': 'True', 'db_column': "'implantation'", 'blank': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'objectif_specifique': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.ObjectifSpecifique']", 'null': 'True', 'db_column': "'objectif_specifique'", 'blank': 'True'}),
+ 'partenaires': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'presentation': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'service': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
+ },
+ 'managedref.projetcomposante': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'ProjetComposante', 'db_table': "u'ref_projet_composante'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'projet': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Projet']", 'db_column': "'projet'"})
+ },
+ 'managedref.projetposte': {
+ 'Meta': {'object_name': 'ProjetPoste', 'db_table': "u'ref_projet_poste'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'code_bureau': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Bureau']", 'to_field': "'code'", 'db_column': "'code_bureau'"}),
+ 'code_poste': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Poste']", 'to_field': "'code'", 'db_column': "'code_poste'"}),
+ 'code_programme': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Programme']", 'to_field': "'code'", 'db_column': "'code_programme'"}),
+ 'code_projet': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['managedref.Projet']", 'to_field': "'code'", 'db_column': "'code_projet'"}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'})
+ },
+ 'managedref.projetup': {
+ 'Meta': {'object_name': 'ProjetUp'},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+ },
+ 'managedref.region': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'Region', 'db_table': "u'ref_region'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'implantation_bureau': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'gere_region'", 'null': 'True', 'db_column': "'implantation_bureau'", 'to': "orm['managedref.Implantation']"}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
+ },
+ 'managedref.service': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'Service', 'db_table': "u'ref_service'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'managedref.thematique': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'Thematique', 'db_table': "u'ref_thematique'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'managedref.uniteprojet': {
+ 'Meta': {'ordering': "['nom']", 'object_name': 'UniteProjet', 'db_table': "u'ref_unite_projet'"},
+ 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+ 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'references.bureau': {
+ 'Meta': {'managed': 'False', 'ordering': "['nom']", 'object_name': 'Bureau', 'db_table': "u'ref_bureau'", '_ormbases': ['managedref.Bureau'], 'proxy': 'True'}
+ },
+ 'references.employe': {
+ 'Meta': {'managed': 'False', 'ordering': "['nom']", 'object_name': 'Employe', 'db_table': "u'ref_employe'", '_ormbases': ['managedref.Employe'], 'proxy': 'True'}
+ },
+ 'references.etablissement': {
+ 'Meta': {'managed': 'False', 'ordering': "['pays__nom', 'nom']", 'object_name': 'Etablissement', 'db_table': "u'ref_etablissement'", '_ormbases': ['managedref.Etablissement'], 'proxy': 'True'}
+ },
+ 'references.implantation': {
+ 'Meta': {'managed': 'False', 'ordering': "['nom']", 'object_name': 'Implantation', 'db_table': "u'ref_implantation'", '_ormbases': ['managedref.Implantation'], 'proxy': 'True'}
+ },
+ 'references.objectifspecifique': {
+ 'Meta': {'managed': 'False', 'ordering': "['nom']", 'object_name': 'ObjectifSpecifique', 'db_table': "u'ref_objectif_specifique'", '_ormbases': ['managedref.ObjectifSpecifique'], 'proxy': 'True'}
+ },
+ 'references.objectifstrategique': {
+ 'Meta': {'managed': 'False', 'ordering': "['nom']", 'object_name': 'ObjectifStrategique', 'db_table': "u'ref_objectif_strategique'", '_ormbases': ['managedref.ObjectifStrategique'], 'proxy': 'True'}
+ },
+ 'references.pays': {
+ 'Meta': {'managed': 'False', 'ordering': "['nom']", 'object_name': 'Pays', 'db_table': "u'ref_pays'", '_ormbases': ['managedref.Pays'], 'proxy': 'True'}
+ },
+ 'references.poste': {
+ 'Meta': {'managed': 'False', 'object_name': 'Poste', 'db_table': "u'ref_poste'", '_ormbases': ['managedref.Poste'], 'proxy': 'True'}
+ },
+ 'references.postetype': {
+ 'Meta': {'managed': 'False', 'object_name': 'PosteType', 'db_table': "u'ref_poste_type'", '_ormbases': ['managedref.PosteType'], 'proxy': 'True'}
+ },
+ 'references.programme': {
+ 'Meta': {'managed': 'False', 'object_name': 'Programme', 'db_table': "u'ref_programme'", '_ormbases': ['managedref.Programme'], 'proxy': 'True'}
+ },
+ 'references.projet': {
+ 'Meta': {'managed': 'False', 'ordering': "['nom']", 'object_name': 'Projet', 'db_table': "u'ref_projet'", '_ormbases': ['managedref.Projet'], 'proxy': 'True'}
+ },
+ 'references.region': {
+ 'Meta': {'managed': 'False', 'ordering': "['nom']", 'object_name': 'Region', 'db_table': "u'ref_region'", '_ormbases': ['managedref.Region'], 'proxy': 'True'}
+ },
+ 'references.service': {
+ 'Meta': {'managed': 'False', 'ordering': "['nom']", 'object_name': 'Service', 'db_table': "u'ref_service'", '_ormbases': ['managedref.Service'], 'proxy': 'True'}
+ }
+ }
+
+ complete_apps = ['managedref']
class Employe(models.Model):
- """Personne en contrat d'employé (CDD ou CDI) à l'AUF
+ """
+ Personne en contrat d'employé (CDD ou CDI) à l'AUF
"""
id = models.IntegerField(primary_key=True)
nom = models.CharField(max_length=255)
mandat_fin = models.DateField(null=True, blank=True)
date_entree = models.DateField(null=True, blank=True)
service = models.ForeignKey('references.Service', db_column='service')
- poste_type_1 = models.ForeignKey(
+ poste_type_1 = models.ForeignKey(
'references.PosteType',
null=True, blank=True,
db_column='poste_type_1',
related_name='poste_type_1'
)
- poste_type_2 = models.ForeignKey(
+ poste_type_2 = models.ForeignKey(
'references.PosteType',
null=True, blank=True,
db_column='poste_type_2',
class Authentification(models.Model):
"""Authentification"""
- id = models.ForeignKey('references.Employe', primary_key=True, db_column='id')
+ id = models.ForeignKey(
+ 'references.Employe', primary_key=True, db_column='id'
+ )
courriel = models.CharField(max_length=255, unique=True)
motdepasse = models.CharField(max_length=255)
actif = models.BooleanField()
class GroupeRespImplantation(models.Model):
id = models.AutoField(primary_key=True)
employe = models.ForeignKey('references.Employe', db_column='employe')
- implantation = models.ForeignKey('references.Implantation', db_column='implantation')
+ implantation = models.ForeignKey(
+ 'references.Implantation', db_column='implantation'
+ )
type = models.CharField(max_length=255, blank=True, null=True)
actif = models.BooleanField()
class Programme(models.Model):
""" ATTENTION: DÉSUET
Programme (donnée de référence, source: SQI).
- Structure interne par laquelle l'AUF exécute ses projets et activités, dispense ses produits et ses services.
+ Structure interne par laquelle l'AUF exécute ses projets et activités,
+ dispense ses produits et ses services.
"""
id = models.IntegerField(primary_key=True)
"""Projet (donnée de référence, source: programmation-quadriennalle).
"""
SERVICE_CHOICES = (
- ('1', "Direction de la langue et de la communication scientifique en français"),
+ ('1',
+ "Direction de la langue et de la communication scientifique "
+ "en français"),
('2', "Direction du développement et de la valorisation"),
- ('3', "Direction de l'innovation pédagogique et de l'économie de la connaissance"),
+ ('3',
+ "Direction de l'innovation pédagogique et de l'économie "
+ "de la connaissance"),
('4', "Direction du renforcement des capacités scientifiques"),
)
nom = models.CharField(max_length=255)
presentation = models.TextField(null=True, blank=True)
partenaires = models.TextField(null=True, blank=True)
- service = models.CharField(max_length=255, choices=SERVICE_CHOICES, blank=True, null=True)
+ service = models.CharField(
+ max_length=255, choices=SERVICE_CHOICES, blank=True, null=True
+ )
objectif_specifique = models.ForeignKey(
'references.ObjectifSpecifique',
blank=True, null=True,
class ProjetPoste(models.Model):
- """ ATTENTION: DÉSUET
+ """
+ ATTENTION: DÉSUET
Projet-poste (donnée de référence, source: CODA).
- Un projet-poste consiste en une raffinement d'un projet par un poste (budgétaire).
- Subdivision utile pour le suivi budgétaire et comptable.
+ Un projet-poste consiste en une raffinement d'un projet par un poste
+ (budgétaire). Subdivision utile pour le suivi budgétaire et comptable.
"""
id = models.IntegerField(primary_key=True)
code = models.CharField(max_length=255, unique=True)
- code_projet = models.ForeignKey('references.Projet', to_field='code', db_column='code_projet')
- code_poste = models.ForeignKey('references.Poste', to_field='code', db_column='code_poste')
- code_bureau = models.ForeignKey('references.Bureau', to_field='code', db_column='code_bureau')
- code_programme = models.ForeignKey('references.Programme',
- to_field='code',
- db_column='code_programme')
+ code_projet = models.ForeignKey(
+ 'references.Projet', to_field='code', db_column='code_projet'
+ )
+ code_poste = models.ForeignKey(
+ 'references.Poste', to_field='code', db_column='code_poste'
+ )
+ code_bureau = models.ForeignKey(
+ 'references.Bureau', to_field='code', db_column='code_bureau'
+ )
+ code_programme = models.ForeignKey(
+ 'references.Programme', to_field='code', db_column='code_programme'
+ )
# meta
actif = models.BooleanField()
class Region(models.Model):
"""Région (donnée de référence, source: referentiels_spip).
- Une région est une subdivision géographique du monde pour la gestion de l'AUF.
+ Une région est une subdivision géographique du monde pour la gestion de
+ l'AUF.
"""
code = models.CharField(max_length=255, unique=True)
nom = models.CharField(max_length=255, db_index=True)
- implantation_bureau = models.ForeignKey('references.Implantation',
- db_column='implantation_bureau',
- related_name='gere_region', null=True, blank=True)
+ implantation_bureau = models.ForeignKey(
+ 'references.Implantation', db_column='implantation_bureau',
+ related_name='gere_region', null=True, blank=True
+ )
# meta
actif = models.BooleanField()
class Bureau(models.Model):
- """Bureau (donnée de référence, source: SQI).
- Référence legacy entre la notion de région et celle d'implantation responsable des régions et du central.
+ """
+ Bureau (donnée de référence, source: SQI).
+
+ Référence legacy entre la notion de région et celle d'implantation
+ responsable des régions et du central.
+
Un bureau est :
- soit le bureau régional d'une région (implantations de type 'Bureau')
- - soit la notion unique de Service central pour les 2 implantations centrales (implantations de type 'Service central' et 'Siege').
+ - soit la notion unique de Service central pour les 2 implantations
+ centrales (implantations de type 'Service central' et 'Siege').
+
Ne pas confondre avec les seuls 'bureaux régionaux'.
"""
code = models.CharField(max_length=255, unique=True)
nom = models.CharField(max_length=255)
nom_court = models.CharField(max_length=255, blank=True)
nom_long = models.CharField(max_length=255, blank=True)
- implantation = models.ForeignKey('references.Implantation', db_column='implantation')
+ implantation = models.ForeignKey(
+ 'references.Implantation', db_column='implantation'
+ )
region = models.ForeignKey('references.Region', db_column='region')
# meta
actif = models.BooleanField()
class Implantation(models.Model):
- """Implantation (donnée de référence, source: Implantus)
- Une implantation est un endroit où l'AUF est présente et offre des services spécifiques.
- Deux implantations peuvent être au même endroit physique.
+ """
+ Implantation (donnée de référence, source: Implantus)
+
+ Une implantation est un endroit où l'AUF est présente et offre des
+ services spécifiques. Deux implantations peuvent être au même endroit
+ physique.
"""
nom = models.CharField(max_length=255)
nom_court = models.CharField(max_length=255, blank=True)
nom_long = models.CharField(max_length=255, blank=True)
type = models.CharField(max_length=255)
- bureau_rattachement = models.ForeignKey('references.Implantation', db_column='bureau_rattachement')
+ bureau_rattachement = models.ForeignKey(
+ 'references.Implantation', db_column='bureau_rattachement'
+ )
region = models.ForeignKey('references.Region', db_column='region')
fuseau_horaire = models.CharField(max_length=255, blank=True)
code_meteo = models.CharField(max_length=255, blank=True)
# responsable
- responsable_implantation = models.IntegerField(null=True, blank=True) # models.ForeignKey('Employe')
+ responsable_implantation = models.IntegerField(null=True, blank=True)
# adresse postale
- adresse_postale_precision_avant = models.CharField(max_length=255, blank=True, null=True)
+ adresse_postale_precision_avant = models.CharField(
+ max_length=255, blank=True, null=True
+ )
adresse_postale_no = models.CharField(max_length=30, blank=True, null=True)
- adresse_postale_rue = models.CharField(max_length=255, blank=True, null=True)
- adresse_postale_bureau = models.CharField(max_length=255, blank=True, null=True)
- adresse_postale_precision = models.CharField(max_length=255, blank=True, null=True)
- adresse_postale_boite_postale = models.CharField(max_length=255, blank=True, null=True)
+ adresse_postale_rue = models.CharField(
+ max_length=255, blank=True, null=True
+ )
+ adresse_postale_bureau = models.CharField(
+ max_length=255, blank=True, null=True
+ )
+ adresse_postale_precision = models.CharField(
+ max_length=255, blank=True, null=True
+ )
+ adresse_postale_boite_postale = models.CharField(
+ max_length=255, blank=True, null=True
+ )
adresse_postale_ville = models.CharField(max_length=255)
- adresse_postale_code_postal = models.CharField(max_length=20, blank=True, null=True)
+ adresse_postale_code_postal = models.CharField(
+ max_length=20, blank=True, null=True
+ )
adresse_postale_code_postal_avant_ville = models.NullBooleanField()
- adresse_postale_region = models.CharField(max_length=255, blank=True, null=True)
- adresse_postale_pays = models.ForeignKey('references.Pays',
- to_field='code',
- db_column='adresse_postale_pays',
- related_name='impl_adresse_postale')
+ adresse_postale_region = models.CharField(
+ max_length=255, blank=True, null=True
+ )
+ adresse_postale_pays = models.ForeignKey(
+ 'references.Pays', to_field='code',
+ db_column='adresse_postale_pays',
+ related_name='impl_adresse_postale'
+ )
# adresse physique
- adresse_physique_precision_avant = models.CharField(max_length=255, blank=True)
+ adresse_physique_precision_avant = models.CharField(
+ max_length=255, blank=True
+ )
adresse_physique_no = models.CharField(max_length=30, blank=True)
adresse_physique_rue = models.CharField(max_length=255, blank=True)
adresse_physique_bureau = models.CharField(max_length=255, blank=True)
adresse_physique_code_postal = models.CharField(max_length=30, blank=True)
adresse_physique_code_postal_avant_ville = models.NullBooleanField()
adresse_physique_region = models.CharField(max_length=255, blank=True)
- adresse_physique_pays = models.ForeignKey('references.Pays',
- to_field='code',
- db_column='adresse_physique_pays',
- related_name='impl_adresse_physique')
+ adresse_physique_pays = models.ForeignKey(
+ 'references.Pays', to_field='code',
+ db_column='adresse_physique_pays',
+ related_name='impl_adresse_physique'
+ )
# autres coordonnées
telephone = models.CharField(max_length=255, blank=True)
telephone_interne = models.CharField(max_length=255, blank=True)
date_inauguration = models.DateField(null=True, blank=True)
date_extension = models.DateField(null=True, blank=True)
date_fermeture = models.DateField(null=True, blank=True)
- hebergement_etablissement = models.CharField(max_length=255, blank=True) # models.ForeignKey('Etablissement', db_column='hebergement_etablissement')
+ hebergement_etablissement = models.CharField(max_length=255, blank=True)
hebergement_convention = models.NullBooleanField()
hebergement_convention_date = models.DateField(null=True, blank=True)
remarque = models.TextField()
class Ouvertes(models.Manager):
def get_query_set(self):
- return super(Implantation.Managers.Ouvertes, self).get_query_set().filter(
- actif=True, statut=1
- )
+ return super(Implantation.Managers.Ouvertes, self) \
+ .get_query_set() \
+ .filter(actif=True, statut=1)
class Actifs(models.Manager):
def get_query_set(self):
- return super(Implantation.Managers.Actifs, self).get_query_set().filter(actif=True)
+ return super(Implantation.Managers.Actifs, self) \
+ .get_query_set() \
+ .filter(actif=True)
objects = models.Manager()
ouvertes = Managers.Ouvertes()
class Pays(models.Model):
- """Pays (donnée de référence, source: SQI). Liste AUF basée sur la liste ISO-3166-1. """
+ """
+ Pays (donnée de référence, source: SQI).
+
+ Liste AUF basée sur la liste ISO-3166-1.
+ """
code = models.CharField(max_length=2, unique=True)
code_iso3 = models.CharField(max_length=3, unique=True)
nom = models.CharField(max_length=255)
def __init__(self, avec_inactifs=False):
super(EtablissementManager, self).__init__()
- self.avec_inactifs=avec_inactifs
+ self.avec_inactifs = avec_inactifs
def get_query_set(self):
qs = super(EtablissementManager, self).get_query_set()
class EtablissementBase(models.Model):
"""
Établissement (donnée de référence, source: GDE).
- Un établissement peut être une université, un centre de recherche, un réseau d'établissement...
- Un établissement peut être membre de l'AUF ou non.
+
+ Un établissement peut être une université, un centre de recherche, un
+ réseau d'établissement... Un établissement peut être membre de l'AUF ou
+ non.
"""
MEMBRE_STATUT_CHOICES = (
('T', 'Titulaire'),
# Infos de base
nom = models.CharField(max_length=255)
- pays = models.ForeignKey('references.Pays', to_field='code', db_column='pays',
- related_name='+')
- region = models.ForeignKey('references.Region', db_column='region', blank=True,
- null=True, related_name='+', verbose_name='région')
- implantation = models.ForeignKey('references.Implantation',
- db_column='implantation',
- related_name='+', blank=True, null=True)
+ pays = models.ForeignKey(
+ 'references.Pays', to_field='code', db_column='pays',
+ related_name='+'
+ )
+ region = models.ForeignKey(
+ 'references.Region', db_column='region', blank=True, null=True,
+ related_name='+', verbose_name='région'
+ )
+ implantation = models.ForeignKey(
+ 'references.Implantation', db_column='implantation',
+ related_name='+', blank=True, null=True
+ )
# Membership
membre = models.BooleanField()
null=True)
# Responsable
- responsable_genre = models.CharField(max_length=1, blank=True,
- verbose_name='genre')
- responsable_nom = models.CharField(max_length=255, blank=True,
- verbose_name='nom')
- responsable_prenom = models.CharField(max_length=255, blank=True,
- verbose_name='prénom')
+ responsable_genre = models.CharField(
+ max_length=1, blank=True, verbose_name='genre'
+ )
+ responsable_nom = models.CharField(
+ max_length=255, blank=True, verbose_name='nom'
+ )
+ responsable_prenom = models.CharField(
+ max_length=255, blank=True, verbose_name='prénom'
+ )
+ responsable_fonction = models.CharField(
+ max_length=255, blank=True, verbose_name='fonction'
+ )
# Adresse
adresse = models.CharField(max_length=255, blank=True)