[#2562] Filtrage automatique des actifs sur Region et Etablissement
[auf_django_references.git] / auf / django / references / managedref / models.py
CommitLineData
652c5d02
EMS
1# encoding: utf-8
2
3from django.db import models
4
5
cda9da6f
EMS
6class ActifsManager(models.Manager):
7
8 def get_query_set(self):
9 return super(ActifsManager, self).get_query_set().filter(actif=True)
10
11
a10aee41
EMS
12class Employe(models.Model):
13 """Personne en contrat d'employé (CDD ou CDI) à l'AUF
14 """
15 id = models.IntegerField(primary_key=True)
16 nom = models.CharField(max_length=255)
17 prenom = models.CharField(max_length=255)
77f6e088
EMS
18 implantation = models.ForeignKey(
19 'references.Implantation',
20 db_column='implantation',
21 related_name='lieu_travail_theorique_de'
22 )
23 implantation_physique = models.ForeignKey(
24 'references.Implantation',
25 db_column='implantation_physique',
26 related_name='lieu_travail_reel_de'
27 )
a10aee41
EMS
28 courriel = models.CharField(max_length=255, null=True, blank=True)
29 genre = models.CharField(max_length=3)
30 fonction = models.CharField(max_length=255, null=True, blank=True)
31 telephone_poste = models.CharField(max_length=255, null=True, blank=True)
32 telephone_ip = models.CharField(max_length=255, null=True, blank=True)
77f6e088
EMS
33 responsable = models.ForeignKey(
34 'references.Employe',
35 db_column='responsable',
36 related_name='responsable_de',
37 null=True, blank=True
38 )
a10aee41
EMS
39 mandat_debut = models.DateField(null=True, blank=True)
40 mandat_fin = models.DateField(null=True, blank=True)
41 date_entree = models.DateField(null=True, blank=True)
77f6e088
EMS
42 service = models.ForeignKey('references.Service', db_column='service')
43 poste_type_1 = models.ForeignKey(
44 'references.PosteType',
45 null=True, blank=True,
46 db_column='poste_type_1',
47 related_name='poste_type_1'
48 )
49 poste_type_2 = models.ForeignKey(
50 'references.PosteType',
51 null=True, blank=True,
52 db_column='poste_type_2',
53 related_name='poste_type_2'
54 )
a10aee41
EMS
55 # meta
56 actif = models.BooleanField()
57
58 class Meta:
59 db_table = u'ref_employe'
60 ordering = ['nom']
61
62 def __unicode__(self):
63 return u"%s, %s [%d]" % (self.nom, self.prenom, self.id)
64
65
66class Authentification(models.Model):
67 """Authentification"""
77f6e088 68 id = models.ForeignKey('references.Employe', primary_key=True, db_column='id')
a10aee41
EMS
69 courriel = models.CharField(max_length=255, unique=True)
70 motdepasse = models.CharField(max_length=255)
71 actif = models.BooleanField()
72
73 class Meta:
74 db_table = u'ref_authentification'
75 ordering = ['id']
76
77 def __unicode__(self):
78 return u"%s [%d]" % (self.courriel, self.id)
79
80
81class Service(models.Model):
82 """Services (donnée de référence, source: SGRH).
83 """
84 id = models.IntegerField(primary_key=True)
85 nom = models.CharField(max_length=255)
86 actif = models.BooleanField()
87
88 class Meta:
89 db_table = u'ref_service'
90 ordering = ['nom']
91
92 def __unicode__(self):
93 return "%s (%s)" % (self.nom, self.id)
94
95
96class PosteType(models.Model):
97 """Postes types (donnée de référence, source: SGRH).
98 """
99 id = models.IntegerField(primary_key=True)
100 nom = models.CharField(max_length=255)
101 actif = models.BooleanField()
102
103 class Meta:
104 db_table = u'ref_poste_type'
105
106 def __unicode__(self):
107 return "%s (%s)" % (self.nom, self.id)
108
109
110class GroupeArh(models.Model):
111 id = models.AutoField(primary_key=True)
77f6e088 112 employe = models.ForeignKey('references.Employe', db_column='employe')
a10aee41
EMS
113 actif = models.BooleanField()
114
115 class Meta:
116 db_table = u'ref_groupe_arh'
117
118
119class GroupeDirRegion(models.Model):
120 id = models.AutoField(primary_key=True)
77f6e088
EMS
121 employe = models.ForeignKey('references.Employe', db_column='employe')
122 region = models.ForeignKey('references.Region', db_column='region')
a10aee41
EMS
123 actif = models.BooleanField()
124
125 class Meta:
126 db_table = u'ref_groupe_dir_region'
127
128
129class GroupeAdmRegion(models.Model):
130 id = models.AutoField(primary_key=True)
77f6e088
EMS
131 employe = models.ForeignKey('references.Employe', db_column='employe')
132 region = models.ForeignKey('references.Region', db_column='region')
a10aee41
EMS
133 actif = models.BooleanField()
134
135 class Meta:
136 db_table = u'ref_groupe_adm_region'
137
138
139class GroupeRespImplantation(models.Model):
140 id = models.AutoField(primary_key=True)
77f6e088
EMS
141 employe = models.ForeignKey('references.Employe', db_column='employe')
142 implantation = models.ForeignKey('references.Implantation', db_column='implantation')
a10aee41
EMS
143 type = models.CharField(max_length=255, blank=True, null=True)
144 actif = models.BooleanField()
145
146 class Meta:
147 db_table = u'ref_groupe_resp_implantation'
148
149
150class GroupeDirProgramme(models.Model):
151 id = models.AutoField(primary_key=True)
77f6e088
EMS
152 employe = models.ForeignKey('references.Employe', db_column='employe')
153 service = models.ForeignKey('references.Service', db_column='service')
a10aee41
EMS
154 actif = models.BooleanField()
155
156 class Meta:
157 db_table = u'ref_groupe_dir_programme'
158
159
160class GroupeDirDelegProgrammeReg(models.Model):
161 id = models.AutoField(primary_key=True)
77f6e088
EMS
162 employe = models.ForeignKey('references.Employe', db_column='employe')
163 region = models.ForeignKey('references.Region', db_column='region')
a10aee41
EMS
164 actif = models.BooleanField()
165
166 class Meta:
167 db_table = u'ref_groupe_dir_deleg_programme_reg'
168
169
170class GroupeComptable(models.Model):
171 id = models.AutoField(primary_key=True)
77f6e088 172 employe = models.ForeignKey('references.Employe', db_column='employe')
a10aee41
EMS
173 actif = models.BooleanField()
174
175 class Meta:
176 db_table = u'ref_groupe_comptable'
177
178
179class GroupeComptableRegional(models.Model):
180 id = models.AutoField(primary_key=True)
77f6e088 181 employe = models.ForeignKey('references.Employe', db_column='employe')
a10aee41
EMS
182 actif = models.BooleanField()
183
184 class Meta:
185 db_table = u'ref_groupe_comptable_regional'
186
187
188class GroupeComptableLocal(models.Model):
189 id = models.AutoField(primary_key=True)
77f6e088 190 employe = models.ForeignKey('references.Employe', db_column='employe')
a10aee41
EMS
191 actif = models.BooleanField()
192
193 class Meta:
194 db_table = u'ref_groupe_comptable_local'
195
196
197class Discipline(models.Model):
198 """ ATTENTION: DÉSUET
199 Discipline (donnée de référence, source: SQI).
200 Une discipline est une catégorie de savoirs scientifiques.
201 Le conseil scientifique fixe la liste des disciplines.
202 """
203
204 id = models.IntegerField(primary_key=True)
205 code = models.CharField(max_length=255, unique=True)
206 nom = models.CharField(max_length=255)
207 nom_long = models.CharField(max_length=255, blank=True)
208 nom_court = models.CharField(max_length=255, blank=True)
209 # meta
210 actif = models.BooleanField()
211
212 class Meta:
213 db_table = u'ref_discipline'
214 ordering = ['nom']
215
216 def __unicode__(self):
217 return "%s - %s" % (self.code, self.nom)
218
219
220class Programme(models.Model):
221 """ ATTENTION: DÉSUET
222 Programme (donnée de référence, source: SQI).
223 Structure interne par laquelle l'AUF exécute ses projets et activités, dispense ses produits et ses services.
224 """
225
226 id = models.IntegerField(primary_key=True)
227 code = models.CharField(max_length=255, unique=True)
228 nom = models.CharField(max_length=255)
229 nom_long = models.CharField(max_length=255, blank=True)
230 nom_court = models.CharField(max_length=255, blank=True)
231 # meta
232 actif = models.BooleanField()
233
234 class Meta:
235 db_table = u'ref_programme'
236
237 def __unicode__(self):
238 return "%s - %s" % (self.code, self.nom)
239
240
241#PROGRAMMATION QUADRIENNALLE
242
243class Projet(models.Model):
244 """Projet (donnée de référence, source: programmation-quadriennalle).
245 """
246 SERVICE_CHOICES = (
247 ('1', "Direction de la langue et de la communication scientifique en français"),
248 ('2', "Direction du développement et de la valorisation"),
249 ('3', "Direction de l'innovation pédagogique et de l'économie de la connaissance"),
250 ('4', "Direction du renforcement des capacités scientifiques"),
251 )
252
253 id = models.IntegerField(primary_key=True)
254 code = models.CharField(max_length=255, unique=True)
255 nom = models.CharField(max_length=255)
256 presentation = models.TextField(null=True, blank=True)
257 partenaires = models.TextField(null=True, blank=True)
258 service = models.CharField(max_length=255, choices=SERVICE_CHOICES, blank=True, null=True)
77f6e088
EMS
259 objectif_specifique = models.ForeignKey(
260 'references.ObjectifSpecifique',
261 blank=True, null=True,
262 db_column='objectif_specifique'
263 )
264 implantation = models.ForeignKey('references.Implantation', null=True,
265 blank=True, db_column='implantation')
266 etablissement = models.ForeignKey('references.Etablissement', null=True,
267 blank=True, db_column='etablissement')
a10aee41
EMS
268 date_debut = models.DateField(null=True, blank=True)
269 date_fin = models.DateField(null=True, blank=True)
270 # meta
271 actif = models.BooleanField()
272
273 class Meta:
274 db_table = u'ref_projet'
275 ordering = ['nom']
276
277 def __unicode__(self):
278 return "%s - %s" % (self.code, self.nom)
279
280
281class ProjetComposante(models.Model):
282 """Composantes des projets (source: programmation-quadriennalle)
283 """
284 id = models.IntegerField(primary_key=True)
285 code = models.CharField(max_length=10)
286 nom = models.CharField(max_length=255)
287 nom_court = models.CharField(max_length=255, null=True, blank=True)
288 description = models.TextField(null=True, blank=True)
77f6e088 289 projet = models.ForeignKey('references.Projet', db_column='projet')
a10aee41
EMS
290 # meta
291 actif = models.BooleanField()
292
293 class Meta:
294 db_table = u'ref_projet_composante'
295 ordering = ['nom']
296
297 def __unicode__(self):
298 return "%s - %s" % (self.code, self.nom)
299
300
301class UniteProjet(models.Model):
302 """Unités de projet (source: programmation-quadriennalle)
303 """
304 id = models.IntegerField(primary_key=True)
305 code = models.CharField(max_length=10, unique=True)
306 nom = models.CharField(max_length=255)
307 # meta
308 actif = models.BooleanField()
309
310 class Meta:
311 db_table = u'ref_unite_projet'
312 ordering = ['nom']
313
314 def __unicode__(self):
315 return "%s - %s" % (self.code, self.nom)
316
317
318class ObjectifSpecifique(models.Model):
319 id = models.IntegerField(primary_key=True)
320 nom = models.CharField(max_length=255)
77f6e088
EMS
321 objectif_strategique = models.ForeignKey('references.ObjectifStrategique',
322 db_column='objectif_strategique')
a10aee41
EMS
323 # meta
324 actif = models.BooleanField()
325
326 class Meta:
327 db_table = u'ref_objectif_specifique'
328 ordering = ['nom']
329
330 def __unicode__(self):
331 return "%s - %s" % (self.id, self.nom)
332
333
334class ObjectifStrategique(models.Model):
335 id = models.IntegerField(primary_key=True)
336 nom = models.CharField(max_length=255)
337 description = models.TextField(null=True, blank=True)
338 # meta
339 actif = models.BooleanField()
340
341 class Meta:
342 db_table = u'ref_objectif_strategique'
343 ordering = ['nom']
344
345 def __unicode__(self):
346 return "%s - %s" % (self.id, self.nom)
347
348
349class Thematique(models.Model):
350 id = models.IntegerField(primary_key=True)
351 nom = models.CharField(max_length=255)
352 # meta
353 actif = models.BooleanField()
354
355 class Meta:
356 db_table = u'ref_thematique'
357 ordering = ['nom']
358
359 def __unicode__(self):
360 return "%s - %s" % (self.id, self.nom)
361
362
363class ProjetUp(models.Model):
364 """Projet-unité de projet (source: coda)
365 => codes budgétaires
366 """
367 id = models.AutoField(primary_key=True)
368 code = models.CharField(max_length=255, unique=True)
369 nom = models.CharField(max_length=255)
370 nom_court = models.CharField(max_length=255, blank=True)
371 # meta
372 actif = models.BooleanField()
373
374
375class Poste(models.Model):
376 """ ATTENTION: DÉSUET
377 Poste (donnée de référence, source: CODA).
378 Un poste est une catégorie destinée à venir raffiner un projet.
379 """
380
381 id = models.IntegerField(primary_key=True)
382 code = models.CharField(max_length=255, unique=True)
383 nom = models.CharField(max_length=255)
384 type = models.CharField(max_length=255, blank=True)
385 # meta
386 actif = models.BooleanField()
387
388 class Meta:
389 db_table = u'ref_poste'
390
391 def __unicode__(self):
392 return "%s - %s (%s)" % (self.code, self.nom, self.type)
393
394
395class ProjetPoste(models.Model):
396 """ ATTENTION: DÉSUET
397 Projet-poste (donnée de référence, source: CODA).
398 Un projet-poste consiste en une raffinement d'un projet par un poste (budgétaire).
399 Subdivision utile pour le suivi budgétaire et comptable.
400 """
401
402 id = models.IntegerField(primary_key=True)
403 code = models.CharField(max_length=255, unique=True)
77f6e088
EMS
404 code_projet = models.ForeignKey('references.Projet', to_field='code', db_column='code_projet')
405 code_poste = models.ForeignKey('references.Poste', to_field='code', db_column='code_poste')
406 code_bureau = models.ForeignKey('references.Bureau', to_field='code', db_column='code_bureau')
407 code_programme = models.ForeignKey('references.Programme',
408 to_field='code',
409 db_column='code_programme')
a10aee41
EMS
410 # meta
411 actif = models.BooleanField()
412
413 class Meta:
414 db_table = u'ref_projet_poste'
415
416 def __unicode__(self):
417 return "%s" % (self.code)
418
419
652c5d02
EMS
420class Region(models.Model):
421 """Région (donnée de référence, source: referentiels_spip).
422 Une région est une subdivision géographique du monde pour la gestion de l'AUF.
423 """
424 code = models.CharField(max_length=255, unique=True)
425 nom = models.CharField(max_length=255, db_index=True)
77f6e088 426 implantation_bureau = models.ForeignKey('references.Implantation',
652c5d02
EMS
427 db_column='implantation_bureau',
428 related_name='gere_region', null=True, blank=True)
429 # meta
430 actif = models.BooleanField()
431
cda9da6f
EMS
432 # managers
433 objects = ActifsManager()
434 avec_inactifs = models.Manager()
435
652c5d02
EMS
436 class Meta:
437 db_table = u'ref_region'
438 ordering = ['nom']
439 verbose_name = u"région"
440 verbose_name_plural = u"régions"
441
442 def __unicode__(self):
443 return "%s (%s)" % (self.nom, self.code)
444
445
446class Bureau(models.Model):
447 """Bureau (donnée de référence, source: SQI).
448 Référence legacy entre la notion de région et celle d'implantation responsable des régions et du central.
449 Un bureau est :
450 - soit le bureau régional d'une région (implantations de type 'Bureau')
451 - soit la notion unique de Service central pour les 2 implantations centrales (implantations de type 'Service central' et 'Siege').
452 Ne pas confondre avec les seuls 'bureaux régionaux'.
453 """
454 code = models.CharField(max_length=255, unique=True)
455 nom = models.CharField(max_length=255)
456 nom_court = models.CharField(max_length=255, blank=True)
457 nom_long = models.CharField(max_length=255, blank=True)
77f6e088
EMS
458 implantation = models.ForeignKey('references.Implantation', db_column='implantation')
459 region = models.ForeignKey('references.Region', db_column='region')
652c5d02
EMS
460 # meta
461 actif = models.BooleanField()
462
463 class Meta:
464 db_table = u'ref_bureau'
465 ordering = ['nom']
466 verbose_name = u"bureau"
467 verbose_name_plural = u"bureaux"
468
469 def __unicode__(self):
470 return "%s (%s)" % (self.nom, self.code)
471
472
473class Implantation(models.Model):
474 """Implantation (donnée de référence, source: Implantus)
475 Une implantation est un endroit où l'AUF est présente et offre des services spécifiques.
476 Deux implantations peuvent être au même endroit physique.
477 """
478 nom = models.CharField(max_length=255)
479 nom_court = models.CharField(max_length=255, blank=True)
480 nom_long = models.CharField(max_length=255, blank=True)
481 type = models.CharField(max_length=255)
77f6e088
EMS
482 bureau_rattachement = models.ForeignKey('references.Implantation', db_column='bureau_rattachement')
483 region = models.ForeignKey('references.Region', db_column='region')
652c5d02
EMS
484 fuseau_horaire = models.CharField(max_length=255, blank=True)
485 code_meteo = models.CharField(max_length=255, blank=True)
486 # responsable
487 responsable_implantation = models.IntegerField(null=True, blank=True) # models.ForeignKey('Employe')
488 # adresse postale
489 adresse_postale_precision_avant = models.CharField(max_length=255, blank=True, null=True)
490 adresse_postale_no = models.CharField(max_length=30, blank=True, null=True)
491 adresse_postale_rue = models.CharField(max_length=255, blank=True, null=True)
492 adresse_postale_bureau = models.CharField(max_length=255, blank=True, null=True)
493 adresse_postale_precision = models.CharField(max_length=255, blank=True, null=True)
494 adresse_postale_boite_postale = models.CharField(max_length=255, blank=True, null=True)
495 adresse_postale_ville = models.CharField(max_length=255)
496 adresse_postale_code_postal = models.CharField(max_length=20, blank=True, null=True)
497 adresse_postale_code_postal_avant_ville = models.NullBooleanField()
498 adresse_postale_region = models.CharField(max_length=255, blank=True, null=True)
77f6e088
EMS
499 adresse_postale_pays = models.ForeignKey('references.Pays',
500 to_field='code',
501 db_column='adresse_postale_pays',
502 related_name='impl_adresse_postale')
652c5d02
EMS
503 # adresse physique
504 adresse_physique_precision_avant = models.CharField(max_length=255, blank=True)
505 adresse_physique_no = models.CharField(max_length=30, blank=True)
506 adresse_physique_rue = models.CharField(max_length=255, blank=True)
507 adresse_physique_bureau = models.CharField(max_length=255, blank=True)
508 adresse_physique_precision = models.CharField(max_length=255, blank=True)
509 adresse_physique_ville = models.CharField(max_length=255)
510 adresse_physique_code_postal = models.CharField(max_length=30, blank=True)
511 adresse_physique_code_postal_avant_ville = models.NullBooleanField()
512 adresse_physique_region = models.CharField(max_length=255, blank=True)
77f6e088
EMS
513 adresse_physique_pays = models.ForeignKey('references.Pays',
514 to_field='code',
515 db_column='adresse_physique_pays',
516 related_name='impl_adresse_physique')
652c5d02
EMS
517 # autres coordonnées
518 telephone = models.CharField(max_length=255, blank=True)
519 telephone_interne = models.CharField(max_length=255, blank=True)
520 fax = models.CharField(max_length=255, blank=True)
521 fax_interne = models.CharField(max_length=255, blank=True)
522 courriel = models.EmailField(blank=True)
523 courriel_interne = models.EmailField(blank=True)
524 url = models.URLField(verify_exists=False, max_length=255, blank=True)
525 # traitement
526 statut = models.IntegerField()
527 date_ouverture = models.DateField(null=True, blank=True)
528 date_inauguration = models.DateField(null=True, blank=True)
529 date_extension = models.DateField(null=True, blank=True)
530 date_fermeture = models.DateField(null=True, blank=True)
531 hebergement_etablissement = models.CharField(max_length=255, blank=True) # models.ForeignKey('Etablissement', db_column='hebergement_etablissement')
532 hebergement_convention = models.NullBooleanField()
533 hebergement_convention_date = models.DateField(null=True, blank=True)
534 remarque = models.TextField()
535 commentaire = models.CharField(max_length=255, blank=True)
536 # meta
537 actif = models.BooleanField()
538 modif_date = models.DateField()
539
540 class Managers:
541
542 class Ouvertes(models.Manager):
543
544 def get_query_set(self):
545 return super(Implantation.Managers.Ouvertes, self).get_query_set().filter(
546 actif=True, statut=1
547 )
548
549 class Actifs(models.Manager):
550
551 def get_query_set(self):
552 return super(Implantation.Managers.Actifs, self).get_query_set().filter(actif=True)
553
554 objects = models.Manager()
555 ouvertes = Managers.Ouvertes()
556 actifs = Managers.Actifs()
557 actives = actifs
558
559 class Meta:
560 db_table = u'ref_implantation'
561 ordering = ['nom']
562
563 def __unicode__(self):
564 return "%s (%d)" % (self.nom, self.id)
565
566
567class Pays(models.Model):
568 """Pays (donnée de référence, source: SQI). Liste AUF basée sur la liste ISO-3166-1. """
569 code = models.CharField(max_length=2, unique=True)
570 code_iso3 = models.CharField(max_length=3, unique=True)
571 nom = models.CharField(max_length=255)
77f6e088
EMS
572 region = models.ForeignKey('references.Region', db_column='region')
573 code_bureau = models.ForeignKey('references.Bureau', to_field='code',
652c5d02
EMS
574 db_column='code_bureau', blank=True,
575 null=True)
576 nord_sud = models.CharField(max_length=255, blank=True, null=True)
577 developpement = models.CharField(max_length=255, blank=True, null=True)
578 monnaie = models.CharField(max_length=255, blank=True, null=True)
579 # meta
580 actif = models.BooleanField()
581
582 class Meta:
583 db_table = u'ref_pays'
584 ordering = ['nom']
585 verbose_name = u"pays"
586 verbose_name_plural = u"pays"
587
588 def __unicode__(self):
589 return "%s (%s)" % (self.nom, self.code)
590
591
592class EtablissementManager(models.Manager):
593
cda9da6f
EMS
594 def __init__(self, avec_inactifs=False):
595 super(EtablissementManager, self).__init__()
596 self.avec_inactifs=avec_inactifs
597
652c5d02
EMS
598 def get_query_set(self):
599 qs = super(EtablissementManager, self).get_query_set()
cda9da6f
EMS
600 if not self.avec_inactifs:
601 qs = qs.filter(actif=True)
652c5d02
EMS
602 return qs.select_related('pays')
603
604
605class EtablissementBase(models.Model):
606 """
607 Établissement (donnée de référence, source: GDE).
608 Un établissement peut être une université, un centre de recherche, un réseau d'établissement...
609 Un établissement peut être membre de l'AUF ou non.
610 """
948fc6a6
EMS
611 MEMBRE_STATUT_CHOICES = (
612 ('T', 'Titulaire'),
613 ('A', 'Associé'),
614 ('C', 'Candidat'),
615 )
616 QUALITE_CHOICES = (
617 ('ESR', "Établissement d'enseignement supérieur et de recherche"),
618 ('CIR', "Centre ou institution de recherche"),
619 ('RES', "Réseau"),
620 )
621
622 # Infos de base
652c5d02 623 nom = models.CharField(max_length=255)
77f6e088 624 pays = models.ForeignKey('references.Pays', to_field='code', db_column='pays',
652c5d02 625 related_name='+')
77f6e088 626 region = models.ForeignKey('references.Region', db_column='region', blank=True,
948fc6a6 627 null=True, related_name='+', verbose_name='région')
77f6e088 628 implantation = models.ForeignKey('references.Implantation',
652c5d02
EMS
629 db_column='implantation',
630 related_name='+', blank=True, null=True)
948fc6a6
EMS
631
632 # Membership
652c5d02 633 membre = models.BooleanField()
948fc6a6
EMS
634 membre_adhesion_date = models.DateField(null=True, blank=True,
635 verbose_name="date d'adhésion")
636 statut = models.CharField(max_length=1, choices=MEMBRE_STATUT_CHOICES,
637 blank=True, null=True)
638 qualite = models.CharField(max_length=3, choices=QUALITE_CHOICES,
639 verbose_name="qualité", blank=True,
640 null=True)
641
642 # Responsable
643 responsable_genre = models.CharField(max_length=1, blank=True,
644 verbose_name='genre')
645 responsable_nom = models.CharField(max_length=255, blank=True,
646 verbose_name='nom')
647 responsable_prenom = models.CharField(max_length=255, blank=True,
648 verbose_name='prénom')
649
650 # Adresse
652c5d02 651 adresse = models.CharField(max_length=255, blank=True)
948fc6a6
EMS
652 code_postal = models.CharField(max_length=20, blank=True,
653 verbose_name='code postal')
654 cedex = models.CharField(max_length=20, blank=True, verbose_name='CEDEX')
652c5d02
EMS
655 ville = models.CharField(max_length=255, blank=True)
656 province = models.CharField(max_length=255, blank=True)
948fc6a6
EMS
657 telephone = models.CharField(max_length=255, blank=True,
658 verbose_name='téléphone')
652c5d02 659 fax = models.CharField(max_length=255, blank=True)
948fc6a6
EMS
660 url = models.URLField(verify_exists=False, max_length=255, null=True,
661 blank=True, verbose_name='URL')
662
663 # Meta-données
664 actif = models.BooleanField(default=True)
665 date_modification = models.DateField(verbose_name='date de modification',
666 blank=True, null=True)
667 commentaire = models.TextField(blank=True)
668
669 # Manager
652c5d02 670 objects = EtablissementManager()
cda9da6f 671 avec_inactifs = EtablissementManager(avec_inactifs=True)
652c5d02
EMS
672
673 class Meta:
674 abstract = True
675 ordering = ['pays__nom', 'nom']
676
677 def __unicode__(self):
948fc6a6 678 return "%s - %s" % (self.pays.nom, self.nom)
652c5d02
EMS
679
680
681class Etablissement(EtablissementBase):
682
683 class Meta(EtablissementBase.Meta):
684 db_table = u'ref_etablissement'