PEP8
authorEric Mc Sween <eric.mcsween@auf.org>
Thu, 17 May 2012 21:27:01 +0000 (17:27 -0400)
committerEric Mc Sween <eric.mcsween@auf.org>
Fri, 18 May 2012 14:45:16 +0000 (10:45 -0400)
project/rh/models.py

index 075617f..5ea7fda 100644 (file)
@@ -4,27 +4,34 @@ import datetime
 from datetime import date
 from decimal import Decimal
 
 from datetime import date
 from decimal import Decimal
 
+from auf.django.emploi.models import \
+        GENRE_CHOICES, SITUATION_CHOICES  # devrait plutot être dans references
+from auf.django.metadata.models import AUFMetadata
+from auf.django.metadata.managers import NoDeleteManager
+from auf.django.references import models as ref
 from django.core.files.storage import FileSystemStorage
 from django.db import models
 from django.db.models import Q
 from django.conf import settings
 
 from django.core.files.storage import FileSystemStorage
 from django.db import models
 from django.db.models import Q
 from django.conf import settings
 
-from auf.django.emploi.models import GENRE_CHOICES, SITUATION_CHOICES # devrait plutot être dans references
-from auf.django.metadata.models import AUFMetadata
-from auf.django.metadata.managers import NoDeleteManager
-import auf.django.references.models as ref
+from change_list import \
+        RechercheTemporelle, KEY_STATUT, STATUT_ACTIF, STATUT_INACTIF, \
+        STATUT_FUTUR
+from managers import \
+        PosteManager, DossierManager, DossierComparaisonManager, \
+        PosteComparaisonManager, DeviseManager, ServiceManager, \
+        TypeRemunerationManager
 from validators import validate_date_passee
 from validators import validate_date_passee
-from managers import PosteManager, DossierManager, DossierComparaisonManager, \
-    PosteComparaisonManager, DeviseManager, ServiceManager, TypeRemunerationManager
-from change_list import RechercheTemporelle, KEY_STATUT, STATUT_ACTIF, \
-    STATUT_INACTIF, STATUT_FUTUR
 
 
 
 
-# Gruick hack pour déterminer d'ou provient l'instanciation d'une classe pour l'héritage.
-# Cela permet de faire du dynamic loading par app sans avoir à redéfinir dans DAE la FK
+# Gruick hack pour déterminer d'ou provient l'instanciation d'une classe
+# pour l'héritage.  Cela permet de faire du dynamic loading par app sans
+# avoir à redéfinir dans DAE la FK
 def app_context():
 def app_context():
-    import inspect;
-    models_stack = [s[1].split('/')[-2] for s in inspect.stack() if s[1].endswith('models.py')]
+    import inspect
+    models_stack = [s[1].split('/')[-2]
+                    for s in inspect.stack()
+                    if s[1].endswith('models.py')]
     return models_stack[-1]
 
 
     return models_stack[-1]
 
 
@@ -32,26 +39,40 @@ def app_context():
 HELP_TEXT_DATE = "format: jj-mm-aaaa"
 REGIME_TRAVAIL_DEFAULT = Decimal('100.00')
 REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT = Decimal('35.00')
 HELP_TEXT_DATE = "format: jj-mm-aaaa"
 REGIME_TRAVAIL_DEFAULT = Decimal('100.00')
 REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT = Decimal('35.00')
-REGIME_TRAVAIL_NB_HEURE_SEMAINE_HELP_TEXT = "Saisir le nombre d'heure de travail à temps complet (100%), sans tenir compte du régime de travail"
+REGIME_TRAVAIL_NB_HEURE_SEMAINE_HELP_TEXT = \
+        "Saisir le nombre d'heure de travail à temps complet (100%), " \
+        "sans tenir compte du régime de travail"
 
 # Upload de fichiers
 storage_prive = FileSystemStorage(settings.PRIVE_MEDIA_ROOT,
                             base_url=settings.PRIVE_MEDIA_URL)
 
 
 # Upload de fichiers
 storage_prive = FileSystemStorage(settings.PRIVE_MEDIA_ROOT,
                             base_url=settings.PRIVE_MEDIA_URL)
 
+
 def poste_piece_dispatch(instance, filename):
 def poste_piece_dispatch(instance, filename):
-    path = "%s/poste/%s/%s" % (instance._meta.app_label, instance.poste_id, filename)
+    path = "%s/poste/%s/%s" % (
+        instance._meta.app_label, instance.poste_id, filename
+    )
     return path
 
     return path
 
+
 def dossier_piece_dispatch(instance, filename):
 def dossier_piece_dispatch(instance, filename):
-    path = "%s/dossier/%s/%s" % (instance._meta.app_label, instance.dossier_id, filename)
+    path = "%s/dossier/%s/%s" % (
+        instance._meta.app_label, instance.dossier_id, filename
+    )
     return path
 
     return path
 
+
 def employe_piece_dispatch(instance, filename):
 def employe_piece_dispatch(instance, filename):
-    path = "%s/employe/%s/%s" % (instance._meta.app_label, instance.employe_id, filename)
+    path = "%s/employe/%s/%s" % (
+        instance._meta.app_label, instance.employe_id, filename
+    )
     return path
 
     return path
 
+
 def contrat_dispatch(instance, filename):
 def contrat_dispatch(instance, filename):
-    path = "%s/contrat/%s/%s" % (instance._meta.app_label, instance.dossier_id, filename)
+    path = "%s/contrat/%s/%s" % (
+        instance._meta.app_label, instance.dossier_id, filename
+    )
     return path
 
 
     return path
 
 
@@ -60,7 +81,6 @@ class DevisableMixin(object):
     def get_annee_pour_taux_devise(self):
         return datetime.datetime.now().year
 
     def get_annee_pour_taux_devise(self):
         return datetime.datetime.now().year
 
-
     def taux_devise(self, devise=None):
         if devise is None:
             devise = self.devise
     def taux_devise(self, devise=None):
         if devise is None:
             devise = self.devise
@@ -71,12 +91,17 @@ class DevisableMixin(object):
             return 1
 
         annee = self.get_annee_pour_taux_devise()
             return 1
 
         annee = self.get_annee_pour_taux_devise()
-        taux = [tc.taux for tc in TauxChange.objects.filter(devise=devise, annee=annee)]
+        taux = [
+            tc.taux
+            for tc in TauxChange.objects.filter(devise=devise, annee=annee)
+        ]
         taux = set(taux)
 
         if len(taux) == 0:
         taux = set(taux)
 
         if len(taux) == 0:
-            raise Exception(u"Pas de taux pour %s en %s" % (devise.code, annee))
-            
+            raise Exception(
+                u"Pas de taux pour %s en %s" % (devise.code, annee)
+            )
+
         if len(taux) > 1:
             raise Exception(u"Il existe plusieurs taux de %s en %s" %
                     (devise.code, annee))
         if len(taux) > 1:
             raise Exception(u"Il existe plusieurs taux de %s en %s" %
                     (devise.code, annee))
@@ -95,7 +120,10 @@ class DevisableMixin(object):
 
 class Commentaire(AUFMetadata):
     texte = models.TextField()
 
 class Commentaire(AUFMetadata):
     texte = models.TextField()
-    owner = models.ForeignKey('auth.User', db_column='owner', related_name='+', verbose_name=u"Commentaire de")
+    owner = models.ForeignKey(
+        'auth.User', db_column='owner', related_name='+',
+        verbose_name=u"Commentaire de"
+    )
 
     class Meta:
         abstract = True
 
     class Meta:
         abstract = True
@@ -112,8 +140,10 @@ POSTE_APPEL_CHOICES = (
     ('externe', 'Externe'),
 )
 
     ('externe', 'Externe'),
 )
 
+
 class Poste_(AUFMetadata):
 class Poste_(AUFMetadata):
-    """Un Poste est un emploi (job) à combler dans une implantation.
+    """
+    Un Poste est un emploi (job) à combler dans une implantation.
     Un Poste peut être comblé par un Employe, auquel cas un Dossier est créé.
     Si on veut recruter 2 jardiniers, 2 Postes distincts existent.
     """
     Un Poste peut être comblé par un Employe, auquel cas un Dossier est créé.
     Si on veut recruter 2 jardiniers, 2 Postes distincts existent.
     """
@@ -121,114 +151,150 @@ class Poste_(AUFMetadata):
     objects = PosteManager()
 
     # Identification
     objects = PosteManager()
 
     # Identification
-    nom = models.CharField(max_length=255,
-                            verbose_name = u"Titre du poste", )
-    nom_feminin = models.CharField(max_length=255,
-                            verbose_name = u"Titre du poste (au féminin)",
-                            null=True)
-    implantation = models.ForeignKey(ref.Implantation, help_text=u"Taper le nom de l'implantation ou sa région", 
-                            db_column='implantation', related_name='+')
-    type_poste = models.ForeignKey('TypePoste', db_column='type_poste', help_text=u"Taper le nom du type de poste",
-                            related_name='+',
-                            null=True,
-                            verbose_name=u"type de poste")
-    service = models.ForeignKey('Service', db_column='service',
-                            related_name='+',
-                            verbose_name = u"direction/service/pôle support",
-                            null=True,)
-    responsable = models.ForeignKey('Poste', db_column='responsable', 
-                            related_name='+',
-                            null=True,
-                            help_text=u"Taper le nom du poste ou du type de poste", 
-                            verbose_name = u"Poste du responsable", )
-                                
+    nom = models.CharField(u"Titre du poste", max_length=255)
+    nom_feminin = models.CharField(
+         u"Titre du poste (au féminin)", max_length=255, null=True
+    )
+    implantation = models.ForeignKey(
+        ref.Implantation,
+        help_text=u"Taper le nom de l'implantation ou sa région",
+        db_column='implantation', related_name='+'
+    )
+    type_poste = models.ForeignKey(
+        'TypePoste', db_column='type_poste',
+        help_text=u"Taper le nom du type de poste", related_name='+',
+        null=True, verbose_name=u"type de poste"
+    )
+    service = models.ForeignKey(
+        'Service', db_column='service', related_name='+',
+        verbose_name=u"direction/service/pôle support", null=True
+    )
+    responsable = models.ForeignKey(
+        'Poste', db_column='responsable',
+        related_name='+', null=True,
+        help_text=u"Taper le nom du poste ou du type de poste",
+        verbose_name=u"Poste du responsable"
+    )
+
     # Contrat
     # Contrat
-    regime_travail = models.DecimalField(max_digits=12, decimal_places=2,
-                            default=REGIME_TRAVAIL_DEFAULT, null=True,
-                            verbose_name = u"Temps de travail",
-                            help_text="% du temps complet")
-    regime_travail_nb_heure_semaine = models.DecimalField(max_digits=12,
-                            decimal_places=2, null=True,
-                            default=REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT,
-                            verbose_name= u"Nb. heures par semaine",
-                            help_text=REGIME_TRAVAIL_NB_HEURE_SEMAINE_HELP_TEXT)
+    regime_travail = models.DecimalField(
+        u"temps de travail", max_digits=12, decimal_places=2,
+        default=REGIME_TRAVAIL_DEFAULT, null=True,
+        help_text="% du temps complet"
+    )
+    regime_travail_nb_heure_semaine = models.DecimalField(
+        u"nb. heures par semaine", max_digits=12, decimal_places=2,
+        null=True, default=REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT,
+        help_text=REGIME_TRAVAIL_NB_HEURE_SEMAINE_HELP_TEXT
+    )
 
     # Recrutement
 
     # Recrutement
-    local = models.NullBooleanField(verbose_name = u"Local", default=True,
-                            null=True, blank=True)
-    expatrie = models.NullBooleanField(verbose_name = u"Expatrié", default=False,
-                            null=True, blank=True)
+    local = models.NullBooleanField(
+        u"local", default=True, null=True, blank=True
+    )
+    expatrie = models.NullBooleanField(
+        u"expatrié", default=False, null=True, blank=True
+    )
     mise_a_disposition = models.NullBooleanField(
     mise_a_disposition = models.NullBooleanField(
-                            verbose_name = u"Mise à disposition",
-                            null=True, default=False)
-    appel = models.CharField(max_length=10, null=True,
-                            verbose_name = u"Appel à candidature",
-                            choices=POSTE_APPEL_CHOICES,
-                            default='interne')
+        u"mise à disposition", null=True, default=False
+    )
+    appel = models.CharField(
+        u"Appel à candidature", max_length=10, null=True,
+        choices=POSTE_APPEL_CHOICES, default='interne'
+    )
 
     # Rémunération
 
     # Rémunération
-    classement_min = models.ForeignKey('Classement',
-                            db_column='classement_min', related_name='+',
-                            null=True, blank=True)
-    classement_max = models.ForeignKey('Classement',
-                            db_column='classement_max', related_name='+',
-                            null=True, blank=True)
-    valeur_point_min = models.ForeignKey('ValeurPoint', help_text=u"Taper le code ou le nom de l'implantation",
-                            db_column='valeur_point_min', related_name='+',
-                            null=True, blank=True)
-    valeur_point_max = models.ForeignKey('ValeurPoint', help_text=u"Taper le code ou le nom de l'implantation",
-                            db_column='valeur_point_max', related_name='+',
-                            null=True, blank=True)
-    devise_min = models.ForeignKey('Devise', db_column='devise_min', null=True,
-                            related_name='+',)
-    devise_max = models.ForeignKey('Devise', db_column='devise_max', null=True,
-                            related_name='+',)
-    salaire_min = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, default=0)
-    salaire_max = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, default=0)
-    indemn_min = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, default=0)
-    indemn_max = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, default=0)
-    autre_min = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, default=0)
-    autre_max = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, default=0)
+    classement_min = models.ForeignKey(
+        'Classement', db_column='classement_min', related_name='+',
+        null=True, blank=True
+    )
+    classement_max = models.ForeignKey(
+        'Classement', db_column='classement_max', related_name='+',
+        null=True, blank=True
+    )
+    valeur_point_min = models.ForeignKey(
+        'ValeurPoint',
+        help_text=u"Taper le code ou le nom de l'implantation",
+        db_column='valeur_point_min', related_name='+', null=True,
+        blank=True
+    )
+    valeur_point_max = models.ForeignKey(
+        'ValeurPoint',
+        help_text=u"Taper le code ou le nom de l'implantation",
+        db_column='valeur_point_max', related_name='+', null=True,
+        blank=True
+    )
+    devise_min = models.ForeignKey(
+        'Devise', db_column='devise_min', null=True, related_name='+'
+    )
+    devise_max = models.ForeignKey(
+        'Devise', db_column='devise_max', null=True, related_name='+'
+    )
+    salaire_min = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, default=0
+    )
+    salaire_max = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, default=0
+    )
+    indemn_min = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, default=0
+    )
+    indemn_max = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, default=0
+    )
+    autre_min = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, default=0
+    )
+    autre_max = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, default=0
+    )
 
     # Comparatifs de rémunération
 
     # Comparatifs de rémunération
-    devise_comparaison = models.ForeignKey('Devise', null=True, blank=True,
-                            db_column='devise_comparaison',
-                            related_name='+', )
-    comp_locale_min = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, blank=True)
-    comp_locale_max = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, blank=True)
-    comp_universite_min = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, blank=True)
-    comp_universite_max = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, blank=True)
-    comp_fonctionpub_min = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, blank=True)
-    comp_fonctionpub_max = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, blank=True)
-    comp_ong_min = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, blank=True)
-    comp_ong_max = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, blank=True)
-    comp_autre_min = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, blank=True)
-    comp_autre_max = models.DecimalField(max_digits=12, decimal_places=2,
-                            null=True, blank=True)
+    devise_comparaison = models.ForeignKey(
+        'Devise', null=True, blank=True, db_column='devise_comparaison',
+        related_name='+'
+    )
+    comp_locale_min = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, blank=True
+    )
+    comp_locale_max = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, blank=True
+    )
+    comp_universite_min = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, blank=True
+    )
+    comp_universite_max = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, blank=True
+    )
+    comp_fonctionpub_min = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, blank=True
+    )
+    comp_fonctionpub_max = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, blank=True
+    )
+    comp_ong_min = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, blank=True
+    )
+    comp_ong_max = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, blank=True
+    )
+    comp_autre_min = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, blank=True
+    )
+    comp_autre_max = models.DecimalField(
+        max_digits=12, decimal_places=2, null=True, blank=True
+    )
 
     # Justification
     justification = models.TextField(null=True, blank=True)
 
     # Autres Metadata
 
     # Justification
     justification = models.TextField(null=True, blank=True)
 
     # Autres Metadata
-    date_debut = models.DateField(verbose_name=u"Date de début", help_text=HELP_TEXT_DATE,
-                            null=True, blank=True)
-    date_fin = models.DateField(verbose_name=u"Date de fin", help_text=HELP_TEXT_DATE,
-                            null=True, blank=True)
+    date_debut = models.DateField(
+        u"date de début", help_text=HELP_TEXT_DATE, null=True, blank=True
+    )
+    date_fin = models.DateField(
+        u"date de fin", help_text=HELP_TEXT_DATE, null=True, blank=True
+    )
 
     class Meta:
         abstract = True
 
     class Meta:
         abstract = True
@@ -238,27 +304,31 @@ class Poste_(AUFMetadata):
         ordering = ["nom"]
 
     def __unicode__(self):
         ordering = ["nom"]
 
     def __unicode__(self):
-        representation = u'%s - %s [%s]' % (self.implantation, self.nom,
-                            self.id)
+        representation = u'%s - %s [%s]' % (
+            self.implantation, self.nom, self.id
+        )
         return representation
 
         return representation
 
-
     prefix_implantation = "implantation__region"
     prefix_implantation = "implantation__region"
+
     def get_regions(self):
         return [self.implantation.region]
 
     def get_devise(self):
     def get_regions(self):
         return [self.implantation.region]
 
     def get_devise(self):
-        vp = ValeurPoint.objects.filter(implantation=self.implantation, devise__archive=False).order_by('annee')
+        vp = ValeurPoint.objects.filter(
+            implantation=self.implantation, devise__archive=False
+        ).order_by('annee')
         if len(vp) > 0:
             return vp[0].devise
         else:
             return Devise.objects.get(code='EUR')
 
         if len(vp) > 0:
             return vp[0].devise
         else:
             return Devise.objects.get(code='EUR')
 
+
 class Poste(Poste_):
     __doc__ = Poste_.__doc__
 
     # meta dématérialisation :  pour permettre le filtrage
 class Poste(Poste_):
     __doc__ = Poste_.__doc__
 
     # meta dématérialisation :  pour permettre le filtrage
-    vacant = models.NullBooleanField(verbose_name = u"vacant", null=True, blank=True)
+    vacant = models.NullBooleanField(u"vacant", null=True, blank=True)
 
     def is_vacant(self):
         vacant = True
 
     def is_vacant(self):
         vacant = True
@@ -267,12 +337,17 @@ class Poste(Poste_):
         return vacant
 
     def occupe_par(self):
         return vacant
 
     def occupe_par(self):
-        """Retourne la liste d'employé occupant ce poste.
+        """
+        Retourne la liste d'employé occupant ce poste.
         Généralement, retourne une liste d'un élément.
         Si poste inoccupé, retourne liste vide.
         UTILISE pour mettre a jour le flag vacant
         """
         Généralement, retourne une liste d'un élément.
         Si poste inoccupé, retourne liste vide.
         UTILISE pour mettre a jour le flag vacant
         """
-        return [d.employe for d in self.rh_dossiers.filter(supprime=False).exclude(date_fin__lt=date.today())]
+        return [
+            d.employe for d in self.rh_dossiers
+            .filter(supprime=False)
+            .exclude(date_fin__lt=date.today())
+        ]
 
 
 POSTE_FINANCEMENT_CHOICES = (
 
 
 POSTE_FINANCEMENT_CHOICES = (
@@ -283,15 +358,22 @@ POSTE_FINANCEMENT_CHOICES = (
 
 
 class PosteFinancement_(models.Model):
 
 
 class PosteFinancement_(models.Model):
-    """Pour un Poste, structure d'informations décrivant comment on prévoit
+    """
+    Pour un Poste, structure d'informations décrivant comment on prévoit
     financer ce Poste.
     """
     financer ce Poste.
     """
-    poste = models.ForeignKey('%s.Poste' % app_context(), db_column='poste', related_name='%(app_label)s_financements')
+    poste = models.ForeignKey(
+        '%s.Poste' % app_context(), db_column='poste',
+        related_name='%(app_label)s_financements'
+    )
     type = models.CharField(max_length=1, choices=POSTE_FINANCEMENT_CHOICES)
     type = models.CharField(max_length=1, choices=POSTE_FINANCEMENT_CHOICES)
-    pourcentage = models.DecimalField(max_digits=12, decimal_places=2,
-            help_text="ex.: 33.33 % (décimale avec point)")
+    pourcentage = models.DecimalField(
+        max_digits=12, decimal_places=2,
+        help_text="ex.: 33.33 % (décimale avec point)"
+    )
     commentaire = models.TextField(
     commentaire = models.TextField(
-            help_text="Spécifiez la source de financement.")
+        help_text="Spécifiez la source de financement."
+    )
 
     class Meta:
         abstract = True
 
     class Meta:
         abstract = True
@@ -309,14 +391,18 @@ class PosteFinancement(PosteFinancement_):
 
 
 class PostePiece_(models.Model):
 
 
 class PostePiece_(models.Model):
-    """Documents relatifs au Poste.
+    """
+    Documents relatifs au Poste.
     Ex.: Description de poste
     """
     Ex.: Description de poste
     """
-    poste = models.ForeignKey('%s.Poste' % app_context(), db_column='poste', related_name='%(app_label)s_pieces')
-    nom = models.CharField(verbose_name = u"Nom", max_length=255)
-    fichier = models.FileField(verbose_name = u"Fichier",
-                            upload_to=poste_piece_dispatch,
-                            storage=storage_prive)
+    poste = models.ForeignKey(
+        '%s.Poste' % app_context(), db_column='poste',
+        related_name='%(app_label)s_pieces'
+    )
+    nom = models.CharField(u"Nom", max_length=255)
+    fichier = models.FileField(
+        u"Fichier", upload_to=poste_piece_dispatch, storage=storage_prive
+    )
 
     class Meta:
         abstract = True
 
     class Meta:
         abstract = True
@@ -325,44 +411,60 @@ class PostePiece_(models.Model):
     def __unicode__(self):
         return u'%s' % (self.nom)
 
     def __unicode__(self):
         return u'%s' % (self.nom)
 
+
 class PostePiece(PostePiece_):
     pass
 
 class PostePiece(PostePiece_):
     pass
 
+
 class PosteComparaison_(AUFMetadata, DevisableMixin):
     """
 class PosteComparaison_(AUFMetadata, DevisableMixin):
     """
-    De la même manière qu'un dossier, un poste peut-être comparé à un autre poste.
+    De la même manière qu'un dossier, un poste peut-être comparé à un autre
+    poste.
     """
     """
-    poste = models.ForeignKey('%s.Poste' % app_context(), related_name='%(app_label)s_comparaisons_internes')
+    poste = models.ForeignKey(
+        '%s.Poste' % app_context(),
+        related_name='%(app_label)s_comparaisons_internes'
+    )
     objects = PosteComparaisonManager()
 
     objects = PosteComparaisonManager()
 
-    implantation = models.ForeignKey(ref.Implantation, null=True, blank=True, related_name="+")
-    nom = models.CharField(verbose_name = u"Poste", max_length=255, null=True, blank=True)
+    implantation = models.ForeignKey(
+        ref.Implantation, null=True, blank=True, related_name="+"
+    )
+    nom = models.CharField(u"Poste", max_length=255, null=True, blank=True)
     montant = models.IntegerField(null=True)
     montant = models.IntegerField(null=True)
-    devise = models.ForeignKey("Devise", related_name='+', null=True, blank=True)
+    devise = models.ForeignKey(
+        "Devise", related_name='+', null=True, blank=True
+    )
 
     class Meta:
         abstract = True
 
 
     class Meta:
         abstract = True
 
-
     def __unicode__(self):
         return self.nom
 
     def __unicode__(self):
         return self.nom
 
+
 class PosteComparaison(PosteComparaison_):
     objects = NoDeleteManager()
 
 class PosteComparaison(PosteComparaison_):
     objects = NoDeleteManager()
 
+
 class PosteCommentaire_(Commentaire):
 class PosteCommentaire_(Commentaire):
-    poste = models.ForeignKey('%s.Poste' % app_context(), db_column='poste', related_name='+')
+    poste = models.ForeignKey(
+        '%s.Poste' % app_context(), db_column='poste', related_name='+'
+    )
 
     class Meta:
         abstract = True
 
 
     class Meta:
         abstract = True
 
+
 class PosteCommentaire(PosteCommentaire_):
     pass
 
 class PosteCommentaire(PosteCommentaire_):
     pass
 
+
 ### EMPLOYÉ/PERSONNE
 
 class Employe(AUFMetadata):
 ### EMPLOYÉ/PERSONNE
 
 class Employe(AUFMetadata):
-    """Personne occupant ou ayant occupé un Poste. Un Employe aura autant de
+    """
+    Personne occupant ou ayant occupé un Poste. Un Employe aura autant de
     Dossiers qu'il occupe ou a occupé de Postes.
 
     Cette classe aurait pu avantageusement s'appeler Personne car la notion
     Dossiers qu'il occupe ou a occupé de Postes.
 
     Cette classe aurait pu avantageusement s'appeler Personne car la notion
@@ -370,50 +472,52 @@ class Employe(AUFMetadata):
     """
     # Identification
     nom = models.CharField(max_length=255)
     """
     # Identification
     nom = models.CharField(max_length=255)
-    prenom = models.CharField(max_length=255, verbose_name = u"Prénom")
-    nom_affichage = models.CharField(max_length=255,
-                            verbose_name = u"Nom d'affichage",
-                            null=True, blank=True)
-    nationalite = models.ForeignKey(ref.Pays, to_field='code',
-                            db_column='nationalite',
-                            related_name='employes_nationalite',
-                            verbose_name = u"Nationalité",
-                            blank=True, null=True)
-    date_naissance = models.DateField(verbose_name = u"Date de naissance",
-                            help_text=HELP_TEXT_DATE,
-                            validators=[validate_date_passee],
-                            null=True, blank=True)
+    prenom = models.CharField(u"prénom", max_length=255)
+    nom_affichage = models.CharField(
+        u"nom d'affichage", max_length=255, null=True, blank=True
+    )
+    nationalite = models.ForeignKey(
+        ref.Pays, to_field='code', db_column='nationalite',
+        related_name='employes_nationalite', verbose_name=u"nationalité",
+        blank=True, null=True
+    )
+    date_naissance = models.DateField(
+        u"date de naissance", help_text=HELP_TEXT_DATE,
+        validators=[validate_date_passee], null=True, blank=True
+    )
     genre = models.CharField(max_length=1, choices=GENRE_CHOICES)
 
     # Infos personnelles
     genre = models.CharField(max_length=1, choices=GENRE_CHOICES)
 
     # Infos personnelles
-    situation_famille = models.CharField(max_length=1,
-                            choices=SITUATION_CHOICES,
-                            verbose_name = u"Situation familiale",
-                            null=True, blank=True)
-    date_entree = models.DateField(verbose_name = u"Date d'entrée à l'AUF",
-                            help_text=HELP_TEXT_DATE,
-                            null=True, blank=True)
+    situation_famille = models.CharField(
+        u"situation familiale", max_length=1, choices=SITUATION_CHOICES,
+        null=True, blank=True
+    )
+    date_entree = models.DateField(
+        u"date d'entrée à l'AUF", help_text=HELP_TEXT_DATE, null=True,
+        blank=True
+    )
 
     # Coordonnées
 
     # Coordonnées
-    tel_domicile = models.CharField(max_length=255,
-                            verbose_name = u"Tél. domicile",
-                            null=True, blank=True)
-    tel_cellulaire = models.CharField(max_length=255,
-                            verbose_name = u"Tél. cellulaire",
-                            null=True, blank=True)
+    tel_domicile = models.CharField(
+        u"tél. domicile", max_length=255, null=True, blank=True
+    )
+    tel_cellulaire = models.CharField(
+        u"tél. cellulaire", max_length=255, null=True, blank=True
+    )
     adresse = models.CharField(max_length=255, null=True, blank=True)
     ville = models.CharField(max_length=255, null=True, blank=True)
     province = models.CharField(max_length=255, null=True, blank=True)
     code_postal = models.CharField(max_length=255, null=True, blank=True)
     adresse = models.CharField(max_length=255, null=True, blank=True)
     ville = models.CharField(max_length=255, null=True, blank=True)
     province = models.CharField(max_length=255, null=True, blank=True)
     code_postal = models.CharField(max_length=255, null=True, blank=True)
-    pays = models.ForeignKey(ref.Pays, to_field='code', db_column='pays',
-                            related_name='employes',
-                            null=True, blank=True)
+    pays = models.ForeignKey(
+        ref.Pays, to_field='code', db_column='pays',
+        related_name='employes', null=True, blank=True
+    )
 
     # meta dématérialisation :  pour permettre le filtrage
 
     # meta dématérialisation :  pour permettre le filtrage
-    nb_postes = models.IntegerField(verbose_name = u"nombre de postes", null=True, blank=True)
+    nb_postes = models.IntegerField(u"nombre de postes", null=True, blank=True)
 
     class Meta:
 
     class Meta:
-        ordering = ['nom','prenom']
+        ordering = ['nom', 'prenom']
         verbose_name = u"Employé"
         verbose_name_plural = u"Employés"
 
         verbose_name = u"Employé"
         verbose_name_plural = u"Employés"
 
@@ -429,11 +533,12 @@ class Employe(AUFMetadata):
         return civilite
 
     def url_photo(self):
         return civilite
 
     def url_photo(self):
-        """Retourne l'URL du service retournant la photo de l'Employe.
+        """
+        Retourne l'URL du service retournant la photo de l'Employe.
         Équivalent reverse url 'rh_photo' avec id en param.
         """
         from django.core.urlresolvers import reverse
         Équivalent reverse url 'rh_photo' avec id en param.
         """
         from django.core.urlresolvers import reverse
-        return reverse('rh_photo', kwargs={'id':self.id})
+        return reverse('rh_photo', kwargs={'id': self.id})
 
     def dossiers_passes(self):
         params = {KEY_STATUT: STATUT_INACTIF, }
 
     def dossiers_passes(self):
         params = {KEY_STATUT: STATUT_INACTIF, }
@@ -476,6 +581,7 @@ class Employe(AUFMetadata):
         return poste
 
     prefix_implantation = "rh_dossiers__poste__implantation__region"
         return poste
 
     prefix_implantation = "rh_dossiers__poste__implantation__region"
+
     def get_regions(self):
         regions = []
         for d in self.dossiers.all():
     def get_regions(self):
         regions = []
         for d in self.dossiers.all():
@@ -484,15 +590,18 @@ class Employe(AUFMetadata):
 
 
 class EmployePiece(models.Model):
 
 
 class EmployePiece(models.Model):
-    """Documents relatifs à un employé.
+    """
+    Documents relatifs à un employé.
     Ex.: CV...
     """
     Ex.: CV...
     """
-    employe = models.ForeignKey('Employe', db_column='employe',
-        related_name="pieces")
-    nom = models.CharField(verbose_name="Nom", max_length=255)
-    fichier = models.FileField(verbose_name="Fichier",
-                            upload_to=employe_piece_dispatch,
-                            storage=storage_prive)
+    employe = models.ForeignKey(
+        'Employe', db_column='employe', related_name="pieces",
+        verbose_name=u"employé"
+    )
+    nom = models.CharField(max_length=255)
+    fichier = models.FileField(
+        u"fichier", upload_to=employe_piece_dispatch, storage=storage_prive
+    )
 
     class Meta:
         ordering = ['nom']
 
     class Meta:
         ordering = ['nom']
@@ -502,9 +611,11 @@ class EmployePiece(models.Model):
     def __unicode__(self):
         return u'%s' % (self.nom)
 
     def __unicode__(self):
         return u'%s' % (self.nom)
 
+
 class EmployeCommentaire(Commentaire):
 class EmployeCommentaire(Commentaire):
-    employe = models.ForeignKey('Employe', db_column='employe',
-                            related_name='+')
+    employe = models.ForeignKey(
+        'Employe', db_column='employe', related_name='+'
+    )
 
     class Meta:
         verbose_name = u"Employé commentaire"
 
     class Meta:
         verbose_name = u"Employé commentaire"
@@ -518,35 +629,37 @@ LIEN_PARENTE_CHOICES = (
     ('Fils', 'Fils'),
 )
 
     ('Fils', 'Fils'),
 )
 
+
 class AyantDroit(AUFMetadata):
 class AyantDroit(AUFMetadata):
-    """Personne en relation avec un Employe.
+    """
+    Personne en relation avec un Employe.
     """
     # Identification
     nom = models.CharField(max_length=255)
     """
     # Identification
     nom = models.CharField(max_length=255)
-    prenom = models.CharField(max_length=255,
-                            verbose_name = u"Prénom",)
-    nom_affichage = models.CharField(max_length=255,
-                            verbose_name = u"Nom d'affichage",
-                            null=True, blank=True)
-    nationalite = models.ForeignKey(ref.Pays, to_field='code',
-                            db_column='nationalite',
-                            related_name='ayantdroits_nationalite',
-                            verbose_name = u"Nationalité",
-                            null=True, blank=True)
-    date_naissance = models.DateField(verbose_name = u"Date de naissance",
-                            help_text=HELP_TEXT_DATE,
-                            validators=[validate_date_passee],
-                            null=True, blank=True)
+    prenom = models.CharField(u"prénom", max_length=255)
+    nom_affichage = models.CharField(
+        u"nom d'affichage", max_length=255, null=True, blank=True
+    )
+    nationalite = models.ForeignKey(
+        ref.Pays, to_field='code', db_column='nationalite',
+        related_name='ayantdroits_nationalite',
+        verbose_name=u"nationalité", null=True, blank=True
+    )
+    date_naissance = models.DateField(
+        u"Date de naissance", help_text=HELP_TEXT_DATE,
+        validators=[validate_date_passee], null=True, blank=True
+    )
     genre = models.CharField(max_length=1, choices=GENRE_CHOICES)
 
     # Relation
     genre = models.CharField(max_length=1, choices=GENRE_CHOICES)
 
     # Relation
-    employe = models.ForeignKey('Employe', db_column='employe',
-                            related_name='ayantdroits',
-                            verbose_name = u"Employé")
-    lien_parente = models.CharField(max_length=10,
-                            choices=LIEN_PARENTE_CHOICES,
-                            verbose_name = u"Lien de parenté",
-                            null=True, blank=True)
+    employe = models.ForeignKey(
+        'Employe', db_column='employe', related_name='ayantdroits',
+        verbose_name=u"Employé"
+    )
+    lien_parente = models.CharField(
+        u"lien de parenté", max_length=10, choices=LIEN_PARENTE_CHOICES,
+        null=True, blank=True
+    )
 
     class Meta:
         ordering = ['nom', ]
 
     class Meta:
         ordering = ['nom', ]
@@ -557,6 +670,7 @@ class AyantDroit(AUFMetadata):
         return u'%s %s' % (self.nom.upper(), self.prenom, )
 
     prefix_implantation = "employe__dossiers__poste__implantation__region"
         return u'%s %s' % (self.nom.upper(), self.prenom, )
 
     prefix_implantation = "employe__dossiers__poste__implantation__region"
+
     def get_regions(self):
         regions = []
         for d in self.employe.dossiers.all():
     def get_regions(self):
         regions = []
         for d in self.employe.dossiers.all():
@@ -565,8 +679,9 @@ class AyantDroit(AUFMetadata):
 
 
 class AyantDroitCommentaire(Commentaire):
 
 
 class AyantDroitCommentaire(Commentaire):
-    ayant_droit = models.ForeignKey('AyantDroit', db_column='ayant_droit',
-                            related_name='+')
+    ayant_droit = models.ForeignKey(
+        'AyantDroit', db_column='ayant_droit', related_name='+'
+    )
 
 
 ### DOSSIER
 
 
 ### DOSSIER
@@ -582,8 +697,10 @@ COMPTE_COMPTA_CHOICES = (
     ('aucun', 'Aucun'),
 )
 
     ('aucun', 'Aucun'),
 )
 
+
 class Dossier_(AUFMetadata, DevisableMixin):
 class Dossier_(AUFMetadata, DevisableMixin):
-    """Le Dossier regroupe les informations relatives à l'occupation
+    """
+    Le Dossier regroupe les informations relatives à l'occupation
     d'un Poste par un Employe. Un seul Dossier existe par Poste occupé
     par un Employe.
 
     d'un Poste par un Employe. Un seul Dossier existe par Poste occupé
     par un Employe.
 
@@ -596,45 +713,47 @@ class Dossier_(AUFMetadata, DevisableMixin):
 
     # TODO: OneToOne ??
     statut = models.ForeignKey('Statut', related_name='+', null=True)
 
     # TODO: OneToOne ??
     statut = models.ForeignKey('Statut', related_name='+', null=True)
-    organisme_bstg = models.ForeignKey('OrganismeBstg',
-                            db_column='organisme_bstg',
-                            related_name='+',
-                            verbose_name = u"Organisme",
-                            help_text="Si détaché (DET) ou \
-                                    mis à disposition (MAD), \
-                                    préciser l'organisme.",
-                            null=True, blank=True)
+    organisme_bstg = models.ForeignKey(
+        'OrganismeBstg', db_column='organisme_bstg', related_name='+',
+        verbose_name=u"organisme",
+        help_text=(
+            u"Si détaché (DET) ou mis à disposition (MAD), "
+            u"préciser l'organisme."
+        ), null=True, blank=True
+    )
 
     # Recrutement
     remplacement = models.BooleanField(default=False)
 
     # Recrutement
     remplacement = models.BooleanField(default=False)
-    remplacement_de = models.ForeignKey('self', related_name='+',
-                            help_text=u"Taper le nom de l'employé",
-                            null=True, blank=True)
-    statut_residence = models.CharField(max_length=10, default='local',
-                            verbose_name = u"Statut", null=True,
-                            choices=STATUT_RESIDENCE_CHOICES)
+    remplacement_de = models.ForeignKey(
+        'self', related_name='+', help_text=u"Taper le nom de l'employé",
+        null=True, blank=True
+    )
+    statut_residence = models.CharField(
+        u"statut", max_length=10, default='local', null=True,
+        choices=STATUT_RESIDENCE_CHOICES
+    )
 
     # Rémunération
 
     # Rémunération
-    classement = models.ForeignKey('Classement', db_column='classement',
-                            related_name='+',
-                            null=True, blank=True)
-    regime_travail = models.DecimalField(max_digits=12, null=True,
-                            decimal_places=2,
-                            default=REGIME_TRAVAIL_DEFAULT,
-                            verbose_name = u"Régime de travail",
-                            help_text="% du temps complet")
-    regime_travail_nb_heure_semaine = models.DecimalField(max_digits=12,
-                            decimal_places=2, null=True,
-                            default=REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT,
-                            verbose_name=u"Nb. heures par semaine",
-                            help_text=REGIME_TRAVAIL_NB_HEURE_SEMAINE_HELP_TEXT)
+    classement = models.ForeignKey(
+        'Classement', db_column='classement', related_name='+', null=True,
+        blank=True
+    )
+    regime_travail = models.DecimalField(
+        u"régime de travail", max_digits=12, null=True, decimal_places=2,
+        default=REGIME_TRAVAIL_DEFAULT, help_text="% du temps complet"
+    )
+    regime_travail_nb_heure_semaine = models.DecimalField(
+        u"nb. heures par semaine", max_digits=12,
+        decimal_places=2, null=True,
+        default=REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT,
+        help_text=REGIME_TRAVAIL_NB_HEURE_SEMAINE_HELP_TEXT
+    )
 
     # Occupation du Poste par cet Employe (anciennement "mandat")
 
     # Occupation du Poste par cet Employe (anciennement "mandat")
-    date_debut = models.DateField(verbose_name = u"Date de début d'occupation \
-                            de poste",)
-    date_fin = models.DateField(verbose_name = u"Date de fin d'occupation \
-                            de poste",
-                            null=True, blank=True)
+    date_debut = models.DateField(u"date de début d'occupation de poste")
+    date_fin = models.DateField(
+        u"Date de fin d'occupation de poste", null=True, blank=True
+    )
 
     # Comptes
     # TODO?
 
     # Comptes
     # TODO?
@@ -653,7 +772,7 @@ class Dossier_(AUFMetadata, DevisableMixin):
 
         montant = coeff * point.valeur
         devise = point.devise
 
         montant = coeff * point.valeur
         devise = point.devise
-        return {'montant':montant, 'devise':devise}
+        return {'montant': montant, 'devise': devise}
 
     def __unicode__(self):
         poste = self.poste.nom
 
     def __unicode__(self):
         poste = self.poste.nom
@@ -662,10 +781,10 @@ class Dossier_(AUFMetadata, DevisableMixin):
         return u'%s - %s' % (self.employe, poste)
 
     prefix_implantation = "poste__implantation__region"
         return u'%s - %s' % (self.employe, poste)
 
     prefix_implantation = "poste__implantation__region"
+
     def get_regions(self):
         return [self.poste.implantation.region]
 
     def get_regions(self):
         return [self.poste.implantation.region]
 
-
     def remunerations(self):
         key = "%s_remunerations" % self._meta.app_label
         remunerations = getattr(self, key)
     def remunerations(self):
         key = "%s_remunerations" % self._meta.app_label
         remunerations = getattr(self, key)
@@ -677,7 +796,8 @@ class Dossier_(AUFMetadata, DevisableMixin):
 
     def get_salaire(self):
         try:
 
     def get_salaire(self):
         try:
-            return [r for r in self.remunerations().order_by('-date_debut') if r.type_id == 1][0]
+            return [r for r in self.remunerations().order_by('-date_debut')
+                    if r.type_id == 1][0]
         except:
             return None
 
         except:
             return None
 
@@ -705,28 +825,32 @@ class Dossier_(AUFMetadata, DevisableMixin):
         18  Prime de 13ième mois
         19  Prime d'intérim
         """
         18  Prime de 13ième mois
         19  Prime d'intérim
         """
-        ids = [1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19]
-        return [r for r in self.remunerations_en_cours().all() if r.type_id in ids]
+        ids = [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19]
+        return [r for r in self.remunerations_en_cours().all()
+                if r.type_id in ids]
 
     def get_charges_salariales(self):
         """
         20 Charges salariales ?
         """
 
     def get_charges_salariales(self):
         """
         20 Charges salariales ?
         """
-        ids = [20, ]
-        return [r for r in self.remunerations_en_cours().all() if r.type_id in ids]
+        ids = [20]
+        return [r for r in self.remunerations_en_cours().all()
+                if r.type_id in ids]
 
     def get_charges_patronales(self):
         """
         17  Charges patronales
         """
 
     def get_charges_patronales(self):
         """
         17  Charges patronales
         """
-        ids = [17, ]
-        return [r for r in self.remunerations_en_cours().all() if r.type_id in ids]
+        ids = [17]
+        return [r for r in self.remunerations_en_cours().all()
+                if r.type_id in ids]
 
     def get_remunerations_tierces(self):
         """
         2   Salaire MAD
         """
 
     def get_remunerations_tierces(self):
         """
         2   Salaire MAD
         """
-        return [r for r in self.remunerations_en_cours().all() if r.type_id in (2, )]
+        return [r for r in self.remunerations_en_cours().all()
+                if r.type_id in (2,)]
 
     # DEVISE LOCALE
 
 
     # DEVISE LOCALE
 
@@ -848,23 +972,31 @@ class Dossier(Dossier_):
         related_name='%(app_label)s_dossiers',
         help_text=u"Taper le nom du poste ou du type de poste",
         )
         related_name='%(app_label)s_dossiers',
         help_text=u"Taper le nom du poste ou du type de poste",
         )
-    employe = models.ForeignKey('Employe', db_column='employe',
-                            help_text=u"Taper le nom de l'employé",
-                            related_name='%(app_label)s_dossiers',
-                            verbose_name=u"Employé")
-    principal = models.BooleanField(verbose_name=u"Principal?", default=True,
-            help_text=u"Ce Dossier est pour le principal Poste occupé par l'Employé")
+    employe = models.ForeignKey(
+        'Employe', db_column='employe',
+        help_text=u"Taper le nom de l'employé",
+        related_name='%(app_label)s_dossiers', verbose_name=u"employé")
+    principal = models.BooleanField(
+        u"Principal?", default=True,
+        help_text=(
+            u"Ce dossier est pour le principal poste occupé par l'employé"
+        )
+    )
 
 
 class DossierPiece_(models.Model):
 
 
 class DossierPiece_(models.Model):
-    """Documents relatifs au Dossier (à l'occupation de ce poste par employé).
+    """
+    Documents relatifs au Dossier (à l'occupation de ce poste par employé).
     Ex.: Lettre de motivation.
     """
     Ex.: Lettre de motivation.
     """
-    dossier = models.ForeignKey('%s.Dossier' % app_context(), db_column='dossier', related_name='%(app_label)s_dossierpieces')
-    nom = models.CharField(verbose_name = u"Nom", max_length=255)
-    fichier = models.FileField(verbose_name = u"Fichier",
-                            upload_to=dossier_piece_dispatch,
-                            storage=storage_prive)
+    dossier = models.ForeignKey(
+        '%s.Dossier' % app_context(),
+        db_column='dossier', related_name='%(app_label)s_dossierpieces'
+    )
+    nom = models.CharField(max_length=255)
+    fichier = models.FileField(
+        upload_to=dossier_piece_dispatch, storage=storage_prive
+    )
 
     class Meta:
         abstract = True
 
     class Meta:
         abstract = True
@@ -873,29 +1005,42 @@ class DossierPiece_(models.Model):
     def __unicode__(self):
         return u'%s' % (self.nom)
 
     def __unicode__(self):
         return u'%s' % (self.nom)
 
+
 class DossierPiece(DossierPiece_):
     pass
 
 class DossierPiece(DossierPiece_):
     pass
 
+
 class DossierCommentaire_(Commentaire):
 class DossierCommentaire_(Commentaire):
-    dossier = models.ForeignKey('%s.Dossier' % app_context(), db_column='dossier', related_name='+')
+    dossier = models.ForeignKey(
+        '%s.Dossier' % app_context(), db_column='dossier', related_name='+'
+    )
+
     class Meta:
         abstract = True
 
     class Meta:
         abstract = True
 
+
 class DossierCommentaire(DossierCommentaire_):
     pass
 
 class DossierCommentaire(DossierCommentaire_):
     pass
 
+
 class DossierComparaison_(models.Model, DevisableMixin):
     """
     Photo d'une comparaison salariale au moment de l'embauche.
     """
 class DossierComparaison_(models.Model, DevisableMixin):
     """
     Photo d'une comparaison salariale au moment de l'embauche.
     """
-    dossier = models.ForeignKey('%s.Dossier' % app_context(), related_name='%(app_label)s_comparaisons')
+    dossier = models.ForeignKey(
+        '%s.Dossier' % app_context(), related_name='%(app_label)s_comparaisons'
+    )
     objects = DossierComparaisonManager()
 
     objects = DossierComparaisonManager()
 
-    implantation = models.ForeignKey(ref.Implantation, related_name="+", null=True, blank=True)
+    implantation = models.ForeignKey(
+        ref.Implantation, related_name="+", null=True, blank=True
+    )
     poste = models.CharField(max_length=255, null=True, blank=True)
     personne = models.CharField(max_length=255, null=True, blank=True)
     montant = models.IntegerField(null=True)
     poste = models.CharField(max_length=255, null=True, blank=True)
     personne = models.CharField(max_length=255, null=True, blank=True)
     montant = models.IntegerField(null=True)
-    devise = models.ForeignKey('Devise', related_name='+', null=True, blank=True)
+    devise = models.ForeignKey(
+        'Devise', related_name='+', null=True, blank=True
+    )
 
     class Meta:
         abstract = True
 
     class Meta:
         abstract = True
@@ -907,30 +1052,37 @@ class DossierComparaison_(models.Model, DevisableMixin):
 class DossierComparaison(DossierComparaison_):
     pass
 
 class DossierComparaison(DossierComparaison_):
     pass
 
+
 ### RÉMUNÉRATION
 
 class RemunerationMixin(AUFMetadata):
 ### RÉMUNÉRATION
 
 class RemunerationMixin(AUFMetadata):
-    dossier = models.ForeignKey('%s.Dossier' % app_context(), db_column='dossier', related_name='%(app_label)s_remunerations')
+    dossier = models.ForeignKey(
+        '%s.Dossier' % app_context(), db_column='dossier',
+        related_name='%(app_label)s_remunerations'
+    )
+
     # Identification
     # Identification
-    type = models.ForeignKey('TypeRemuneration', db_column='type', 
-                            related_name='+',
-                            verbose_name = u"Type de rémunération")
-    type_revalorisation = models.ForeignKey('TypeRevalorisation',
-                            db_column='type_revalorisation',
-                            related_name='+',
-                            verbose_name = u"Type de revalorisation",
-                            null=True, blank=True)
-    montant = models.DecimalField(null=True, blank=True,
-                            default=0, max_digits=12, decimal_places=2)
-                            # Annuel (12 mois, 52 semaines, 364 jours?)
-    devise = models.ForeignKey('Devise', db_column='devise', related_name='+',)
+    type = models.ForeignKey(
+        'TypeRemuneration', db_column='type', related_name='+',
+        verbose_name=u"type de rémunération"
+    )
+    type_revalorisation = models.ForeignKey(
+        'TypeRevalorisation', db_column='type_revalorisation',
+        related_name='+', verbose_name=u"type de revalorisation",
+        null=True, blank=True
+    )
+    montant = models.DecimalField(
+        null=True, blank=True,
+        default=0, max_digits=12, decimal_places=2
+    )  # Annuel (12 mois, 52 semaines, 364 jours?)
+    devise = models.ForeignKey('Devise', db_column='devise', related_name='+')
+
     # commentaire = precision
     commentaire = models.CharField(max_length=255, null=True, blank=True)
     # commentaire = precision
     commentaire = models.CharField(max_length=255, null=True, blank=True)
+
     # date_debut = anciennement date_effectif
     # date_debut = anciennement date_effectif
-    date_debut = models.DateField(verbose_name = u"Date de début",
-                            null=True, blank=True)
-    date_fin = models.DateField(verbose_name = u"Date de fin",
-                            null=True, blank=True)
+    date_debut = models.DateField(u"date de début", null=True, blank=True)
+    date_fin = models.DateField(u"date de fin", null=True, blank=True)
 
     class Meta:
         abstract = True
 
     class Meta:
         abstract = True
@@ -939,8 +1091,10 @@ class RemunerationMixin(AUFMetadata):
     def __unicode__(self):
         return u'%s %s (%s)' % (self.montant, self.devise.code, self.type.nom)
 
     def __unicode__(self):
         return u'%s %s (%s)' % (self.montant, self.devise.code, self.type.nom)
 
+
 class Remuneration_(RemunerationMixin, DevisableMixin):
 class Remuneration_(RemunerationMixin, DevisableMixin):
-    """Structure de rémunération (données budgétaires) en situation normale
+    """
+    Structure de rémunération (données budgétaires) en situation normale
     pour un Dossier. Si un Evenement existe, utiliser la structure de
     rémunération EvenementRemuneration de cet événement.
     """
     pour un Dossier. Si un Evenement existe, utiliser la structure de
     rémunération EvenementRemuneration de cet événement.
     """
@@ -949,7 +1103,7 @@ class Remuneration_(RemunerationMixin, DevisableMixin):
         return round(self.montant / 12, 2)
 
     def montant_avec_regime(self):
         return round(self.montant / 12, 2)
 
     def montant_avec_regime(self):
-        return round(self.montant * (self.dossier.regime_travail/100), 2)
+        return round(self.montant * (self.dossier.regime_travail / 100), 2)
 
     def montant_euro_mois(self):
         return round(self.montant_euros() / 12, 2)
 
     def montant_euro_mois(self):
         return round(self.montant_euros() / 12, 2)
@@ -975,26 +1129,31 @@ class Remuneration(Remuneration_):
 
 class ContratManager(NoDeleteManager):
     def get_query_set(self):
 
 class ContratManager(NoDeleteManager):
     def get_query_set(self):
-        return super(ContratManager, self).get_query_set().select_related('dossier', 'dossier__poste')
+        return super(ContratManager, self).get_query_set() \
+                .select_related('dossier', 'dossier__poste')
+
 
 
-        
 class Contrat_(AUFMetadata):
 class Contrat_(AUFMetadata):
-    """Document juridique qui encadre la relation de travail d'un Employe
+    """
+    Document juridique qui encadre la relation de travail d'un Employe
     pour un Poste particulier. Pour un Dossier (qui documente cette
     relation de travail) plusieurs contrats peuvent être associés.
     """
     objects = ContratManager()
     pour un Poste particulier. Pour un Dossier (qui documente cette
     relation de travail) plusieurs contrats peuvent être associés.
     """
     objects = ContratManager()
-    dossier = models.ForeignKey('%s.Dossier' % app_context(), db_column='dossier', related_name='%(app_label)s_contrats')
-    type_contrat = models.ForeignKey('TypeContrat', db_column='type_contrat', 
-                            related_name='+',
-                            verbose_name = u"type de contrat")
-    date_debut = models.DateField(verbose_name = u"Date de début")
-    date_fin = models.DateField(verbose_name = u"Date de fin",
-                            null=True, blank=True)
-    fichier = models.FileField(verbose_name = u"Fichier",
-                            upload_to=contrat_dispatch,
-                            storage=storage_prive,
-                            null=True, blank=True)
+    dossier = models.ForeignKey(
+        '%s.Dossier' % app_context(), db_column='dossier',
+        related_name='%(app_label)s_contrats'
+    )
+    type_contrat = models.ForeignKey(
+        'TypeContrat', db_column='type_contrat',
+        verbose_name=u'type de contrat', related_name='+'
+    )
+    date_debut = models.DateField(u"date de début")
+    date_fin = models.DateField(u"date de fin", null=True, blank=True)
+    fichier = models.FileField(
+        upload_to=contrat_dispatch, storage=storage_prive, null=True,
+        blank=True
+    )
 
     class Meta:
         abstract = True
 
     class Meta:
         abstract = True
@@ -1005,26 +1164,29 @@ class Contrat_(AUFMetadata):
     def __unicode__(self):
         return u'%s - %s' % (self.dossier, self.id)
 
     def __unicode__(self):
         return u'%s - %s' % (self.dossier, self.id)
 
+
 class Contrat(Contrat_):
     pass
 class Contrat(Contrat_):
     pass
-        
 
 ### ÉVÉNEMENTS
 
 #class Evenement_(AUFMetadata):
 
 ### ÉVÉNEMENTS
 
 #class Evenement_(AUFMetadata):
-#    """Un Evenement sert à déclarer une situation temporaire (exceptionnelle) 
-#    d'un Dossier qui vient altérer des informations normales liées à un Dossier 
-#    (ex.: la Remuneration).
-#    
+#    """
+#    Un Evenement sert à déclarer une situation temporaire (exceptionnelle)
+#    d'un Dossier qui vient altérer des informations normales liées à un
+#    Dossier (ex.: la Remuneration).
+#
 #    Ex.: congé de maternité, maladie...
 #    Ex.: congé de maternité, maladie...
-#    
+#
 #    Lors de ces situations exceptionnelles, l'Employe a un régime de travail
 #    différent et une rémunération en conséquence. On souhaite toutefois
 #    conserver le Dossier intact afin d'éviter une re-saisie des données lors
 #    du retour à la normale.
 #    """
 #    Lors de ces situations exceptionnelles, l'Employe a un régime de travail
 #    différent et une rémunération en conséquence. On souhaite toutefois
 #    conserver le Dossier intact afin d'éviter une re-saisie des données lors
 #    du retour à la normale.
 #    """
-#    dossier = models.ForeignKey('%s.Dossier' % app_context(), db_column='dossier', 
-#                            related_name='+')
+#    dossier = models.ForeignKey(
+#        '%s.Dossier' % app_context(), db_column='dossier',
+#        related_name='+'
+#    )
 #    nom = models.CharField(max_length=255)
 #    date_debut = models.DateField(verbose_name = u"Date de début")
 #    date_fin = models.DateField(verbose_name = u"Date de fin",
 #    nom = models.CharField(max_length=255)
 #    date_debut = models.DateField(verbose_name = u"Date de début")
 #    date_fin = models.DateField(verbose_name = u"Date de fin",
@@ -1035,7 +1197,7 @@ class Contrat(Contrat_):
 #        ordering = ['nom']
 #        verbose_name = u"Évènement"
 #        verbose_name_plural = u"Évènements"
 #        ordering = ['nom']
 #        verbose_name = u"Évènement"
 #        verbose_name_plural = u"Évènements"
-#                            
+#
 #    def __unicode__(self):
 #        return u'%s' % (self.nom)
 #
 #    def __unicode__(self):
 #        return u'%s' % (self.nom)
 #
@@ -1043,9 +1205,10 @@ class Contrat(Contrat_):
 #class Evenement(Evenement_):
 #    __doc__ = Evenement_.__doc__
 #
 #class Evenement(Evenement_):
 #    __doc__ = Evenement_.__doc__
 #
-#    
+#
 #class EvenementRemuneration_(RemunerationMixin):
 #class EvenementRemuneration_(RemunerationMixin):
-#    """Structure de rémunération liée à un Evenement qui remplace 
+#    """
+#    Structure de rémunération liée à un Evenement qui remplace
 #    temporairement la Remuneration normale d'un Dossier, pour toute la durée
 #    de l'Evenement.
 #    """
 #    temporairement la Remuneration normale d'un Dossier, pour toute la durée
 #    de l'Evenement.
 #    """
@@ -1077,7 +1240,8 @@ class Contrat(Contrat_):
 ### RÉFÉRENCES RH
 
 class FamilleEmploi(AUFMetadata):
 ### RÉFÉRENCES RH
 
 class FamilleEmploi(AUFMetadata):
-    """Catégorie utilisée dans la gestion des Postes.
+    """
+    Catégorie utilisée dans la gestion des Postes.
     Catégorie supérieure à TypePoste.
     """
     nom = models.CharField(max_length=255)
     Catégorie supérieure à TypePoste.
     """
     nom = models.CharField(max_length=255)
@@ -1090,19 +1254,20 @@ class FamilleEmploi(AUFMetadata):
     def __unicode__(self):
         return u'%s' % (self.nom)
 
     def __unicode__(self):
         return u'%s' % (self.nom)
 
+
 class TypePoste(AUFMetadata):
 class TypePoste(AUFMetadata):
-    """Catégorie de Poste.
+    """
+    Catégorie de Poste.
     """
     nom = models.CharField(max_length=255)
     """
     nom = models.CharField(max_length=255)
-    nom_feminin = models.CharField(max_length=255,
-                            verbose_name = u"Nom féminin")
-
-    is_responsable = models.BooleanField(default=False,
-                            verbose_name = u"Poste de responsabilité")
-    famille_emploi = models.ForeignKey('FamilleEmploi',
-                            db_column='famille_emploi',
-                            related_name='+',
-                            verbose_name = u"famille d'emploi")
+    nom_feminin = models.CharField(u"nom féminin", max_length=255)
+    is_responsable = models.BooleanField(
+        u"poste de responsabilité", default=False
+    )
+    famille_emploi = models.ForeignKey(
+        'FamilleEmploi', db_column='famille_emploi', related_name='+',
+        verbose_name=u"famille d'emploi"
+    )
 
     class Meta:
         ordering = ['nom']
 
     class Meta:
         ordering = ['nom']
@@ -1112,7 +1277,6 @@ class TypePoste(AUFMetadata):
     def __unicode__(self):
         return u'%s' % (self.nom)
 
     def __unicode__(self):
         return u'%s' % (self.nom)
 
-
 TYPE_PAIEMENT_CHOICES = (
     (u'Régulier', u'Régulier'),
     (u'Ponctuel', u'Ponctuel'),
 TYPE_PAIEMENT_CHOICES = (
     (u'Régulier', u'Régulier'),
     (u'Ponctuel', u'Ponctuel'),
@@ -1126,18 +1290,21 @@ NATURE_REMUNERATION_CHOICES = (
     (u'Traitement', u'Traitement'),
 )
 
     (u'Traitement', u'Traitement'),
 )
 
+
 class TypeRemuneration(AUFMetadata):
 class TypeRemuneration(AUFMetadata):
-    """Catégorie de Remuneration.
+    """
+    Catégorie de Remuneration.
     """
     objects = TypeRemunerationManager()
 
     nom = models.CharField(max_length=255)
     """
     objects = TypeRemunerationManager()
 
     nom = models.CharField(max_length=255)
-    type_paiement = models.CharField(max_length=30,
-                            choices=TYPE_PAIEMENT_CHOICES,
-                            verbose_name = u"Type de paiement")
-    nature_remuneration = models.CharField(max_length=30,
-                            choices=NATURE_REMUNERATION_CHOICES,
-                            verbose_name = u"Nature de la rémunération")
+    type_paiement = models.CharField(
+        u"type de paiement", max_length=30, choices=TYPE_PAIEMENT_CHOICES
+    )
+    nature_remuneration = models.CharField(
+        u"nature de la rémunération", max_length=30,
+        choices=NATURE_REMUNERATION_CHOICES
+    )
     archive = models.BooleanField(verbose_name=u"Archivé", default=False)
 
     class Meta:
     archive = models.BooleanField(verbose_name=u"Archivé", default=False)
 
     class Meta:
@@ -1149,11 +1316,13 @@ class TypeRemuneration(AUFMetadata):
         if self.archive:
             archive = u"(archivé)"
         else:
         if self.archive:
             archive = u"(archivé)"
         else:
-            archive = "" 
+            archive = ""
         return u'%s %s' % (self.nom, archive)
 
         return u'%s %s' % (self.nom, archive)
 
+
 class TypeRevalorisation(AUFMetadata):
 class TypeRevalorisation(AUFMetadata):
-    """Justification du changement de la Remuneration.
+    """
+    Justification du changement de la Remuneration.
     (Actuellement utilisé dans aucun traitement informatique.)
     """
     nom = models.CharField(max_length=255)
     (Actuellement utilisé dans aucun traitement informatique.)
     """
     nom = models.CharField(max_length=255)
@@ -1166,8 +1335,10 @@ class TypeRevalorisation(AUFMetadata):
     def __unicode__(self):
         return u'%s' % (self.nom)
 
     def __unicode__(self):
         return u'%s' % (self.nom)
 
+
 class Service(AUFMetadata):
 class Service(AUFMetadata):
-    """Unité administrative où les Postes sont rattachés.
+    """
+    Unité administrative où les Postes sont rattachés.
     """
     objects = ServiceManager()
 
     """
     objects = ServiceManager()
 
@@ -1183,7 +1354,7 @@ class Service(AUFMetadata):
         if self.archive:
             archive = u"(archivé)"
         else:
         if self.archive:
             archive = u"(archivé)"
         else:
-            archive = "" 
+            archive = ""
         return u'%s %s' % (self.nom, archive)
 
 
         return u'%s %s' % (self.nom, archive)
 
 
@@ -1192,8 +1363,10 @@ TYPE_ORGANISME_CHOICES = (
     ('DET', 'Détachement'),
 )
 
     ('DET', 'Détachement'),
 )
 
+
 class OrganismeBstg(AUFMetadata):
 class OrganismeBstg(AUFMetadata):
-    """Organisation d'où provient un Employe mis à disposition (MAD) de
+    """
+    Organisation d'où provient un Employe mis à disposition (MAD) de
     ou détaché (DET) à l'AUF à titre gratuit.
 
     (BSTG = bien et service à titre gratuit.)
     ou détaché (DET) à l'AUF à titre gratuit.
 
     (BSTG = bien et service à titre gratuit.)
@@ -1214,15 +1387,25 @@ class OrganismeBstg(AUFMetadata):
         return u'%s (%s)' % (self.nom, self.get_type_display())
 
     prefix_implantation = "pays__region"
         return u'%s (%s)' % (self.nom, self.get_type_display())
 
     prefix_implantation = "pays__region"
+
     def get_regions(self):
         return [self.pays.region]
 
 
 class Statut(AUFMetadata):
     def get_regions(self):
         return [self.pays.region]
 
 
 class Statut(AUFMetadata):
-    """Statut de l'Employe dans le cadre d'un Dossier particulier.
+    """
+    Statut de l'Employe dans le cadre d'un Dossier particulier.
     """
     # Identification
     """
     # Identification
-    code = models.CharField(max_length=25, unique=True, help_text="Saisir un code court mais lisible pour ce statut : le code est utilisé pour associer les statuts aux autres données tout en demeurant plus lisible qu'un identifiant numérique.")
+    code = models.CharField(
+        max_length=25, unique=True,
+        help_text=(
+            u"Saisir un code court mais lisible pour ce statut : "
+            u"le code est utilisé pour associer les statuts aux autres "
+            u"données tout en demeurant plus lisible qu'un identifiant "
+            u"numérique."
+        )
+    )
     nom = models.CharField(max_length=255)
 
     class Meta:
     nom = models.CharField(max_length=255)
 
     class Meta:
@@ -1244,19 +1427,23 @@ TYPE_CLASSEMENT_CHOICES = (
     ('HG', 'HG - Hors grille [direction]'),
 )
 
     ('HG', 'HG - Hors grille [direction]'),
 )
 
+
 class ClassementManager(models.Manager):
     """
     Ordonner les spcéfiquement les classements.
     """
     def get_query_set(self):
         qs = super(self.__class__, self).get_query_set()
 class ClassementManager(models.Manager):
     """
     Ordonner les spcéfiquement les classements.
     """
     def get_query_set(self):
         qs = super(self.__class__, self).get_query_set()
-        qs = qs.extra(select={'ponderation': 'FIND_IN_SET(type,"SO,HG,S,T,P,C,D")'})
+        qs = qs.extra(select={
+            'ponderation': 'FIND_IN_SET(type,"SO,HG,S,T,P,C,D")'
+        })
         qs = qs.extra(order_by=('ponderation', 'echelon',  'degre', ))
         return qs.all()
 
 
 class Classement_(AUFMetadata):
         qs = qs.extra(order_by=('ponderation', 'echelon',  'degre', ))
         return qs.all()
 
 
 class Classement_(AUFMetadata):
-    """Éléments de classement de la
+    """
+    Éléments de classement de la
     "Grille générique de classement hiérarchique".
 
     Utile pour connaître, pour un Dossier, le salaire de base théorique lié au
     "Grille générique de classement hiérarchique".
 
     Utile pour connaître, pour un Dossier, le salaire de base théorique lié au
@@ -1268,35 +1455,37 @@ class Classement_(AUFMetadata):
 
     # Identification
     type = models.CharField(max_length=10, choices=TYPE_CLASSEMENT_CHOICES)
 
     # Identification
     type = models.CharField(max_length=10, choices=TYPE_CLASSEMENT_CHOICES)
-    echelon = models.IntegerField(verbose_name=u"Échelon", blank=True, default=0)
-    degre = models.IntegerField(verbose_name=u"Degré", blank=True, default=0)
-    coefficient = models.FloatField(default=0, verbose_name=u"Coefficient",
-                                    null=True)
+    echelon = models.IntegerField(u"échelon", blank=True, default=0)
+    degre = models.IntegerField(u"degré", blank=True, default=0)
+    coefficient = models.FloatField(u"coefficient", default=0, null=True)
+
     # Méta
     # annee # au lieu de date_debut et date_fin
     commentaire = models.TextField(null=True, blank=True)
 
     class Meta:
         abstract = True
     # Méta
     # annee # au lieu de date_debut et date_fin
     commentaire = models.TextField(null=True, blank=True)
 
     class Meta:
         abstract = True
-        ordering = ['type','echelon','degre','coefficient']
+        ordering = ['type', 'echelon', 'degre', 'coefficient']
         verbose_name = u"Classement"
         verbose_name_plural = u"Classements"
 
     def __unicode__(self):
         return u'%s.%s.%s' % (self.type, self.echelon, self.degre, )
 
         verbose_name = u"Classement"
         verbose_name_plural = u"Classements"
 
     def __unicode__(self):
         return u'%s.%s.%s' % (self.type, self.echelon, self.degre, )
 
+
 class Classement(Classement_):
     __doc__ = Classement_.__doc__
 
 
 class TauxChange_(AUFMetadata):
 class Classement(Classement_):
     __doc__ = Classement_.__doc__
 
 
 class TauxChange_(AUFMetadata):
-    """Taux de change de la devise vers l'euro (EUR)
+    """
+    Taux de change de la devise vers l'euro (EUR)
     pour chaque année budgétaire.
     """
     # Identification
     devise = models.ForeignKey('Devise', db_column='devise')
     pour chaque année budgétaire.
     """
     # Identification
     devise = models.ForeignKey('Devise', db_column='devise')
-    annee = models.IntegerField(verbose_name = u"Année")
-    taux = models.FloatField(verbose_name = u"Taux vers l'euro")
+    annee = models.IntegerField(u"année")
+    taux = models.FloatField(u"taux vers l'euro")
 
     class Meta:
         abstract = True
 
     class Meta:
         abstract = True
@@ -1311,14 +1500,17 @@ class TauxChange_(AUFMetadata):
 class TauxChange(TauxChange_):
     __doc__ = TauxChange_.__doc__
 
 class TauxChange(TauxChange_):
     __doc__ = TauxChange_.__doc__
 
+
 class ValeurPointManager(NoDeleteManager):
 
     def get_query_set(self):
 class ValeurPointManager(NoDeleteManager):
 
     def get_query_set(self):
-        return super(ValeurPointManager, self).get_query_set().select_related('devise', 'implantation')
+        return super(ValeurPointManager, self).get_query_set() \
+                .select_related('devise', 'implantation')
 
 
 class ValeurPoint_(AUFMetadata):
 
 
 class ValeurPoint_(AUFMetadata):
-    """Utile pour connaître, pour un Dossier, le salaire de base théorique lié
+    """
+    Utile pour connaître, pour un Dossier, le salaire de base théorique lié
     au classement dans la grille. La ValeurPoint s'obtient par l'implantation
     du Poste de ce Dossier : dossier.poste.implantation (pseudo code).
 
     au classement dans la grille. La ValeurPoint s'obtient par l'implantation
     du Poste de ce Dossier : dossier.poste.implantation (pseudo code).
 
@@ -1342,22 +1534,24 @@ class ValeurPoint_(AUFMetadata):
         verbose_name_plural = u"Valeurs du point"
 
     def __unicode__(self):
         verbose_name_plural = u"Valeurs du point"
 
     def __unicode__(self):
-        return u'%s %s %s [%s] %s' % (self.devise.code, self.annee, self.valeur, self.implantation.nom_court, self.devise.nom)
+        return u'%s %s %s [%s] %s' % (
+            self.devise.code, self.annee, self.valeur,
+            self.implantation.nom_court, self.devise.nom
+        )
 
 
 class ValeurPoint(ValeurPoint_):
     __doc__ = ValeurPoint_.__doc__
 
 
 
 
 class ValeurPoint(ValeurPoint_):
     __doc__ = ValeurPoint_.__doc__
 
 
-
 class Devise(AUFMetadata):
 class Devise(AUFMetadata):
-    """Devise monétaire.
     """
     """
-    
+    Devise monétaire.
+    """
     objects = DeviseManager()
 
     archive = models.BooleanField(verbose_name=u"Archivé", default=False)
     objects = DeviseManager()
 
     archive = models.BooleanField(verbose_name=u"Archivé", default=False)
-    code =  models.CharField(max_length=10, unique=True)
+    code = models.CharField(max_length=10, unique=True)
     nom = models.CharField(max_length=255)
 
     class Meta:
     nom = models.CharField(max_length=255)
 
     class Meta:
@@ -1368,8 +1562,10 @@ class Devise(AUFMetadata):
     def __unicode__(self):
         return u'%s - %s' % (self.code, self.nom)
 
     def __unicode__(self):
         return u'%s - %s' % (self.code, self.nom)
 
+
 class TypeContrat(AUFMetadata):
 class TypeContrat(AUFMetadata):
-    """Type de contrat.
+    """
+    Type de contrat.
     """
     nom = models.CharField(max_length=255)
     nom_long = models.CharField(max_length=255)
     """
     nom = models.CharField(max_length=255)
     nom_long = models.CharField(max_length=255)
@@ -1393,15 +1589,18 @@ class ResponsableImplantationProxy(ref.Implantation):
 
 
 class ResponsableImplantation(models.Model):
 
 
 class ResponsableImplantation(models.Model):
-    """Le responsable d'une implantation.
+    """
+    Le responsable d'une implantation.
     Anciennement géré sur le Dossier du responsable.
     """
     Anciennement géré sur le Dossier du responsable.
     """
-    employe = models.ForeignKey('Employe', db_column='employe',
-                            related_name='+',
-                            null=True, blank=True)
-    implantation = models.OneToOneField("ResponsableImplantationProxy",
-                            db_column='implantation', related_name='responsable',
-                            unique=True)
+    employe = models.ForeignKey(
+        'Employe', db_column='employe', related_name='+', null=True,
+        blank=True
+    )
+    implantation = models.OneToOneField(
+        "ResponsableImplantationProxy", db_column='implantation',
+        related_name='responsable', unique=True
+    )
 
     def __unicode__(self):
         return u'%s : %s' % (self.implantation, self.employe)
 
     def __unicode__(self):
         return u'%s : %s' % (self.implantation, self.employe)
@@ -1410,4 +1609,3 @@ class ResponsableImplantation(models.Model):
         ordering = ['implantation__nom']
         verbose_name = "Responsable d'implantation"
         verbose_name_plural = "Responsables d'implantation"
         ordering = ['implantation__nom']
         verbose_name = "Responsable d'implantation"
         verbose_name_plural = "Responsables d'implantation"
-