class ActifsManager(models.Manager):
+ """
+ Manager pour ``ActifsModel``.
+ """
def get_query_set(self):
return super(ActifsManager, self).get_query_set().filter(actif=True)
-class Employe(models.Model):
+class ActifsModel(models.Model):
+ """
+ Modèle faisant la gestion des objets actifs/inactifs.
+
+ Le manager par défaut ne liste que les objets actifs. Pour avoir tous
+ les objets, utiliser le manager ``avec_inactifs``.
+ """
+ actif = models.BooleanField(default=True, editable=False)
+
+ # Managers
+ objects = ActifsManager()
+ avec_inactifs = models.Manager()
+
+ class Meta:
+ abstract = True
+
+
+class Employe(ActifsModel):
"""
Personne en contrat d'employé (CDD ou CDI) à l'AUF
"""
db_column='poste_type_2',
related_name='poste_type_2'
)
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_employe'
return u"%s, %s [%d]" % (self.nom, self.prenom, self.id)
-class Authentification(models.Model):
+class Authentification(ActifsModel):
"""Authentification"""
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 Meta:
db_table = u'ref_authentification'
return u"%s [%d]" % (self.courriel, self.id)
-class Service(models.Model):
+class Service(ActifsModel):
"""Services (donnée de référence, source: SGRH).
"""
id = models.IntegerField(primary_key=True)
nom = models.CharField(max_length=255)
- actif = models.BooleanField()
class Meta:
db_table = u'ref_service'
return "%s (%s)" % (self.nom, self.id)
-class PosteType(models.Model):
+class PosteType(ActifsModel):
"""Postes types (donnée de référence, source: SGRH).
"""
id = models.IntegerField(primary_key=True)
nom = models.CharField(max_length=255)
- actif = models.BooleanField()
class Meta:
db_table = u'ref_poste_type'
return "%s (%s)" % (self.nom, self.id)
-class GroupeArh(models.Model):
+class GroupeArh(ActifsModel):
id = models.AutoField(primary_key=True)
employe = models.ForeignKey('references.Employe', db_column='employe')
- actif = models.BooleanField()
class Meta:
db_table = u'ref_groupe_arh'
-class GroupeDirRegion(models.Model):
+class GroupeDirRegion(ActifsModel):
id = models.AutoField(primary_key=True)
employe = models.ForeignKey('references.Employe', db_column='employe')
region = models.ForeignKey('references.Region', db_column='region')
- actif = models.BooleanField()
class Meta:
db_table = u'ref_groupe_dir_region'
-class GroupeAdmRegion(models.Model):
+class GroupeAdmRegion(ActifsModel):
id = models.AutoField(primary_key=True)
employe = models.ForeignKey('references.Employe', db_column='employe')
region = models.ForeignKey('references.Region', db_column='region')
- actif = models.BooleanField()
class Meta:
db_table = u'ref_groupe_adm_region'
-class GroupeRespImplantation(models.Model):
+class GroupeRespImplantation(ActifsModel):
id = models.AutoField(primary_key=True)
employe = models.ForeignKey('references.Employe', db_column='employe')
implantation = models.ForeignKey(
'references.Implantation', db_column='implantation'
)
type = models.CharField(max_length=255, blank=True, null=True)
- actif = models.BooleanField()
class Meta:
db_table = u'ref_groupe_resp_implantation'
-class GroupeDirProgramme(models.Model):
+class GroupeDirProgramme(ActifsModel):
id = models.AutoField(primary_key=True)
employe = models.ForeignKey('references.Employe', db_column='employe')
service = models.ForeignKey('references.Service', db_column='service')
- actif = models.BooleanField()
class Meta:
db_table = u'ref_groupe_dir_programme'
-class GroupeDirDelegProgrammeReg(models.Model):
+class GroupeDirDelegProgrammeReg(ActifsModel):
id = models.AutoField(primary_key=True)
employe = models.ForeignKey('references.Employe', db_column='employe')
region = models.ForeignKey('references.Region', db_column='region')
- actif = models.BooleanField()
class Meta:
db_table = u'ref_groupe_dir_deleg_programme_reg'
-class GroupeComptable(models.Model):
+class GroupeComptable(ActifsModel):
id = models.AutoField(primary_key=True)
employe = models.ForeignKey('references.Employe', db_column='employe')
- actif = models.BooleanField()
class Meta:
db_table = u'ref_groupe_comptable'
-class GroupeComptableRegional(models.Model):
+class GroupeComptableRegional(ActifsModel):
id = models.AutoField(primary_key=True)
employe = models.ForeignKey('references.Employe', db_column='employe')
- actif = models.BooleanField()
class Meta:
db_table = u'ref_groupe_comptable_regional'
-class GroupeComptableLocal(models.Model):
+class GroupeComptableLocal(ActifsModel):
id = models.AutoField(primary_key=True)
employe = models.ForeignKey('references.Employe', db_column='employe')
- actif = models.BooleanField()
class Meta:
db_table = u'ref_groupe_comptable_local'
-class Discipline(models.Model):
+class Discipline(ActifsModel):
""" ATTENTION: DÉSUET
Discipline (donnée de référence, source: SQI).
Une discipline est une catégorie de savoirs scientifiques.
nom = models.CharField(max_length=255)
nom_long = models.CharField(max_length=255, blank=True)
nom_court = models.CharField(max_length=255, blank=True)
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_discipline'
return "%s - %s" % (self.code, self.nom)
-class Programme(models.Model):
+class Programme(ActifsModel):
""" 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,
nom = models.CharField(max_length=255)
nom_long = models.CharField(max_length=255, blank=True)
nom_court = models.CharField(max_length=255, blank=True)
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_programme'
#PROGRAMMATION QUADRIENNALLE
-class Projet(models.Model):
+class Projet(ActifsModel):
"""Projet (donnée de référence, source: programmation-quadriennalle).
"""
SERVICE_CHOICES = (
blank=True, db_column='etablissement')
date_debut = models.DateField(null=True, blank=True)
date_fin = models.DateField(null=True, blank=True)
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_projet'
return "%s - %s" % (self.code, self.nom)
-class ProjetComposante(models.Model):
+class ProjetComposante(ActifsModel):
"""Composantes des projets (source: programmation-quadriennalle)
"""
id = models.IntegerField(primary_key=True)
nom_court = models.CharField(max_length=255, null=True, blank=True)
description = models.TextField(null=True, blank=True)
projet = models.ForeignKey('references.Projet', db_column='projet')
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_projet_composante'
return "%s - %s" % (self.code, self.nom)
-class UniteProjet(models.Model):
+class UniteProjet(ActifsModel):
"""Unités de projet (source: programmation-quadriennalle)
"""
id = models.IntegerField(primary_key=True)
code = models.CharField(max_length=10, unique=True)
nom = models.CharField(max_length=255)
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_unite_projet'
return "%s - %s" % (self.code, self.nom)
-class ObjectifSpecifique(models.Model):
+class ObjectifSpecifique(ActifsModel):
id = models.IntegerField(primary_key=True)
nom = models.CharField(max_length=255)
objectif_strategique = models.ForeignKey('references.ObjectifStrategique',
db_column='objectif_strategique')
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_objectif_specifique'
return "%s - %s" % (self.id, self.nom)
-class ObjectifStrategique(models.Model):
+class ObjectifStrategique(ActifsModel):
id = models.IntegerField(primary_key=True)
nom = models.CharField(max_length=255)
description = models.TextField(null=True, blank=True)
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_objectif_strategique'
return "%s - %s" % (self.id, self.nom)
-class Thematique(models.Model):
+class Thematique(ActifsModel):
id = models.IntegerField(primary_key=True)
nom = models.CharField(max_length=255)
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_thematique'
return "%s - %s" % (self.id, self.nom)
-class ProjetUp(models.Model):
+class ProjetUp(ActifsModel):
"""Projet-unité de projet (source: coda)
=> codes budgétaires
"""
code = models.CharField(max_length=255, unique=True)
nom = models.CharField(max_length=255)
nom_court = models.CharField(max_length=255, blank=True)
- # meta
- actif = models.BooleanField()
-class Poste(models.Model):
+class Poste(ActifsModel):
""" ATTENTION: DÉSUET
Poste (donnée de référence, source: CODA).
Un poste est une catégorie destinée à venir raffiner un projet.
code = models.CharField(max_length=255, unique=True)
nom = models.CharField(max_length=255)
type = models.CharField(max_length=255, blank=True)
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_poste'
return "%s - %s (%s)" % (self.code, self.nom, self.type)
-class ProjetPoste(models.Model):
+class ProjetPoste(ActifsModel):
"""
ATTENTION: DÉSUET
Projet-poste (donnée de référence, source: CODA).
code_programme = models.ForeignKey(
'references.Programme', to_field='code', db_column='code_programme'
)
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_projet_poste'
return "%s" % (self.code)
-class Region(models.Model):
+class Region(ActifsModel):
"""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.
'references.Implantation', db_column='implantation_bureau',
related_name='gere_region', null=True, blank=True
)
- # meta
- actif = models.BooleanField()
-
- # managers
- objects = ActifsManager()
- avec_inactifs = models.Manager()
class Meta:
db_table = u'ref_region'
return "%s (%s)" % (self.nom, self.code)
-class Bureau(models.Model):
+class Bureau(ActifsModel):
"""
Bureau (donnée de référence, source: SQI).
'references.Implantation', db_column='implantation'
)
region = models.ForeignKey('references.Region', db_column='region')
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_bureau'
return "%s (%s)" % (self.nom, self.code)
-class Implantation(models.Model):
+class Implantation(ActifsModel):
"""
Implantation (donnée de référence, source: Implantus)
remarque = models.TextField()
commentaire = models.CharField(max_length=255, blank=True)
# meta
- actif = models.BooleanField()
modif_date = models.DateField()
class Managers:
- class Ouvertes(models.Manager):
+ class Ouvertes(ActifsManager):
def get_query_set(self):
return super(Implantation.Managers.Ouvertes, self) \
.get_query_set() \
- .filter(actif=True, statut=1)
+ .filter(statut=1)
- class Actifs(models.Manager):
-
- def get_query_set(self):
- return super(Implantation.Managers.Actifs, self) \
- .get_query_set() \
- .filter(actif=True)
-
- objects = models.Manager()
+ objects = ActifsManager()
ouvertes = Managers.Ouvertes()
- actifs = Managers.Actifs()
- actives = actifs
class Meta:
db_table = u'ref_implantation'
return "%s (%d)" % (self.nom, self.id)
-class Pays(models.Model):
+class Pays(ActifsModel):
"""
Pays (donnée de référence, source: SQI).
nord_sud = models.CharField(max_length=255, blank=True, null=True)
developpement = models.CharField(max_length=255, blank=True, null=True)
monnaie = models.CharField(max_length=255, blank=True, null=True)
- # meta
- actif = models.BooleanField()
class Meta:
db_table = u'ref_pays'
return "%s (%s)" % (self.nom, self.code)
-class EtablissementManager(models.Manager):
-
- def __init__(self, avec_inactifs=False):
- super(EtablissementManager, self).__init__()
- self.avec_inactifs = avec_inactifs
-
- def get_query_set(self):
- qs = super(EtablissementManager, self).get_query_set()
- if not self.avec_inactifs:
- qs = qs.filter(actif=True)
- return qs.select_related('pays')
-
-
-class EtablissementBase(models.Model):
+class EtablissementBase(ActifsModel):
"""
Établissement (donnée de référence, source: GDE).
blank=True, verbose_name='URL')
# Meta-données
- actif = models.BooleanField(default=True)
date_modification = models.DateField(verbose_name='date de modification',
blank=True, null=True)
commentaire = models.TextField(blank=True)
- # Manager
- objects = EtablissementManager()
- avec_inactifs = EtablissementManager(avec_inactifs=True)
-
class Meta:
abstract = True
ordering = ['pays__nom', 'nom']