PEP8
authorEric Mc Sween <eric.mcsween@auf.org>
Tue, 8 May 2012 20:28:26 +0000 (16:28 -0400)
committerEric Mc Sween <eric.mcsween@auf.org>
Wed, 9 May 2012 17:17:33 +0000 (13:17 -0400)
project/dae/admin.py
project/dae/forms.py
project/dae/models.py
project/dae/urls.py
project/dae/views.py

index 7492167..b7abb3a 100644 (file)
@@ -1,16 +1,17 @@
 # -*- encoding: utf-8 -*-
 
+from auf.django.workflow.models import WorkflowCommentaire
 from django import forms
-
 from django.core.urlresolvers import reverse
 from django.core.mail import mail_admins
 from django.contrib import admin
 from django.contrib import messages
 from django.shortcuts import redirect
 from reversion.admin import VersionAdmin
-from auf.django.workflow.models import WorkflowCommentaire
-from models import Poste, Dossier, DossierFinalise, PosteFinalise
-from rh.decorators import in_drh_or_admin
+
+from project.dae.models import Poste, Dossier, DossierFinalise, PosteFinalise
+from project.rh.decorators import in_drh_or_admin
+
 
 class PosteAdmin(VersionAdmin):
     list_display = ('nom', 'implantation', 'etat', )
@@ -107,6 +108,7 @@ class StatutAdmin(VersionAdmin):
     _etat.short_description = "État"
     _etat.admin_order_field = "etat"
 
+
 class DossierStatutAdmin(StatutAdmin):
     search_fields = ('employe__nom', 'employe__prenom', 'poste__nom', )
     list_display = ('_poste', '_implantation', 'employe', '_etat', )
@@ -121,6 +123,7 @@ class DossierStatutAdmin(StatutAdmin):
     _implantation.short_description = u"Implantation"
     _implantation.admin_order_field = "poste__implantation"
 
+
 class PosteStatutAdmin(StatutAdmin):
     search_fields = ('nom', )
     list_display = ('nom', 'implantation', )
index a18132d..8206d5a 100644 (file)
@@ -1,32 +1,40 @@
 # -*- encoding: utf-8 -*-
 
 import datetime
-from django.db.models import Q, Max
-from django import forms
-from django.forms.models import inlineformset_factory, modelformset_factory
-from django.contrib.admin import widgets as admin_widgets
-from ajax_select.fields import AutoCompleteSelectField
+
 from auf.django.workflow.forms import WorkflowFormMixin
 from auf.django.references import models as ref
-from dae import models as dae
-from utils import get_employe_from_user, is_user_dans_services_centraux
-from rh import models as rh
-from workflow import grp_drh, POSTE_ETATS_BOUTONS, DOSSIER_ETAT_FINALISE, POSTE_ETAT_FINALISE
+from ajax_select.fields import AutoCompleteSelectField
+from django import forms
+from django.contrib.admin import widgets as admin_widgets
+from django.db.models import Q, Max
+from django.forms.models import inlineformset_factory, modelformset_factory
+
+from project.dae import models as dae
+from project.dae.utils import \
+        get_employe_from_user, is_user_dans_services_centraux
+from project.rh import models as rh
+from project.dae.workflow import \
+        grp_drh, POSTE_ETATS_BOUTONS, DOSSIER_ETAT_FINALISE, \
+        POSTE_ETAT_FINALISE
+
 
 def _implantation_choices(obj, request):
     # TRAITEMENT NORMAL
     employe = get_employe_from_user(request.user)
     # SERVICE
     if is_user_dans_services_centraux(request.user):
-        q = Q(**{ 'id' : employe.implantation_id })
+        q = Q(**{'id': employe.implantation_id})
     # REGION
     else:
-        q = Q(**{ 'region' : employe.implantation.region })
+        q = Q(**{'region': employe.implantation.region})
 
     # TRAITEMENT DRH
     if grp_drh in request.user.groups.all():
         q = Q()
-    return [('', '----------')] + [(i.id, unicode(i), )for i in ref.Implantation.objects.filter(q)]
+    return [('', '----------')] + \
+            [(i.id, unicode(i), )for i in ref.Implantation.objects.filter(q)]
+
 
 def _employe_choices(obj, request):
     # TRAITEMENT NORMAL
@@ -37,55 +45,91 @@ def _employe_choices(obj, request):
         q_rh_region_service = Q(poste__implantation=employe.implantation)
     # REGION
     else:
-        q_dae_region_service = Q(poste__implantation__region=employe.implantation.region)
-        q_rh_region_service = Q(poste__implantation__region=employe.implantation.region)
+        q_dae_region_service = Q(
+            poste__implantation__region=employe.implantation.region
+        )
+        q_rh_region_service = Q(
+            poste__implantation__region=employe.implantation.region
+        )
     # TRAITEMENT DRH
     if grp_drh in request.user.groups.all():
         q_dae_region_service = Q()
         q_rh_region_service = Q()
 
-    # On filtre les employes avec les droits régionaux et on s'assure que c'est bien le dernier dossier en date pour sortir l'employe
-    # On retient un employé qui travaille présentement dans la même région que le user connecté.
-    dossiers_regionaux_ids = [d.id for d in dae.Dossier.objects.filter(q_dae_region_service)]
-    employes_ids = [d['employe'] for d in dae.Dossier.objects.values('employe').annotate(dernier_dossier=Max('id')) if d['dernier_dossier'] in dossiers_regionaux_ids]
+    # On filtre les employes avec les droits régionaux et on s'assure que
+    # c'est bien le dernier dossier en date pour sortir l'employe. On retient
+    # un employé qui travaille présentement dans la même région que le user
+    # connecté.
+    dossiers_regionaux_ids = [
+        d.id for d in dae.Dossier.objects.filter(q_dae_region_service)
+    ]
+    employes_ids = [
+        d['employe']
+        for d in dae.Dossier.objects
+        .values('employe')
+        .annotate(dernier_dossier=Max('id'))
+        if d['dernier_dossier'] in dossiers_regionaux_ids
+    ]
     dae_employe = dae.Employe.objects.filter(id__in=employes_ids)
     dae_ = dae_employe.filter(id_rh__isnull=True)
     copies = dae_employe.filter(Q(id_rh__isnull=False))
     id_copies = [p.id_rh_id for p in copies.all()]
 
-    dossiers_regionaux_ids = [d.id for d in rh.Dossier.objects.filter(q_rh_region_service)]
-    employes_ids = [d['employe'] for d in rh.Dossier.objects.values('employe').annotate(dernier_dossier=Max('id')) if d['dernier_dossier'] in dossiers_regionaux_ids]
-    rhv1 = rh.Employe.objects.filter(id__in=employes_ids).exclude(id__in=id_copies)
-
-    # On ajoute les nouveaux Employés DAE qui ont été crées, mais qui n'ont pas de Dossier associés
+    dossiers_regionaux_ids = [
+        d.id for d in rh.Dossier.objects.filter(q_rh_region_service)
+    ]
+    employes_ids = [
+        d['employe']
+        for d in rh.Dossier.objects
+        .values('employe')
+        .annotate(dernier_dossier=Max('id'))
+        if d['dernier_dossier'] in dossiers_regionaux_ids
+    ]
+    rhv1 = rh.Employe.objects \
+            .filter(id__in=employes_ids) \
+            .exclude(id__in=id_copies)
+
+    # On ajoute les nouveaux Employés DAE qui ont été crées, mais qui n'ont
+    # pas de Dossier associés
     employes_avec_dae = [d.employe_id for d in dae.Dossier.objects.all()]
     employes_orphelins = dae.Employe.objects.exclude(id__in=employes_avec_dae)
 
-
     def option_label(employe):
         return "%s %s" % (employe.nom.upper(), employe.prenom.title())
 
     return [('', 'Nouvel employé')] + \
-           sorted([('dae-%s' % p.id, option_label(p)) for p in dae_ | copies | employes_orphelins] +
-                  [('rh-%s' % p.id, option_label(p)) for p in rhv1],
-                  key=lambda t: t[1])
+           sorted(
+               [('dae-%s' % p.id, option_label(p))
+                for p in dae_ | copies | employes_orphelins] +
+               [('rh-%s' % p.id, option_label(p)) for p in rhv1],
+               key=lambda t: t[1]
+           )
+
 
 def label_poste_display(poste):
     """Formate un visuel pour un poste dans une liste déroulante"""
     annee = ""
     if poste.date_debut:
         annee = poste.date_debut.year
-    label = u"%s %s - %s [%s]" %(annee, poste.type_poste, poste.type_poste.famille_emploi.nom, poste.id)
+    label = u"%s %s - %s [%s]" % (
+        annee, poste.type_poste, poste.type_poste.famille_emploi.nom,
+        poste.id
+    )
     return label
 
 PostePieceForm = inlineformset_factory(dae.Poste, dae.PostePiece)
 DossierPieceForm = inlineformset_factory(dae.Dossier, dae.DossierPiece)
-FinancementForm = inlineformset_factory(dae.Poste, dae.PosteFinancement, extra=2)
+FinancementForm = inlineformset_factory(
+    dae.Poste, dae.PosteFinancement, extra=2
+)
+
 
 class DossierComparaisonForm(forms.ModelForm):
 
     recherche = AutoCompleteSelectField('dossiers', required=False)
-    poste = forms.CharField(max_length=255, widget=forms.TextInput(attrs={'size':'60'}))
+    poste = forms.CharField(
+        max_length=255, widget=forms.TextInput(attrs={'size': '60'})
+    )
 
     class Meta:
         model = dae.DossierComparaison
@@ -95,6 +139,7 @@ DossierComparaisonFormSet = modelformset_factory(
     dae.DossierComparaison, extra=3, max_num=3, form=DossierComparaisonForm
 )
 
+
 class PosteComparaisonForm(forms.ModelForm):
 
     recherche = AutoCompleteSelectField('dae_postes', required=False)
@@ -107,6 +152,7 @@ PosteComparaisonFormSet = modelformset_factory(
     dae.PosteComparaison, extra=3, max_num=3, form=PosteComparaisonForm
 )
 
+
 class FlexibleRemunForm(forms.ModelForm):
 
     montant_mensuel = forms.DecimalField(required=False)
@@ -119,10 +165,15 @@ class FlexibleRemunForm(forms.ModelForm):
         devise = self.cleaned_data['devise']
         if devise.code == 'EUR':
             return devise
-        implantation = ref.Implantation.objects.get(id=self.data['implantation'])
+        implantation = ref.Implantation.objects.get(
+            id=self.data['implantation']
+        )
         liste_taux = devise.tauxchange_set.order_by('-annee')
         if len(liste_taux) == 0:
-            raise forms.ValidationError(u"La devise %s n'a pas de taux pour l'implantation %s" % (devise, implantation))
+            raise forms.ValidationError(
+                u"La devise %s n'a pas de taux pour l'implantation %s" %
+                (devise, implantation)
+            )
         else:
             return devise
 
@@ -130,13 +181,16 @@ RemunForm = inlineformset_factory(
     dae.Dossier, dae.Remuneration, extra=5, form=FlexibleRemunForm
 )
 
+
 class PosteForm(forms.ModelForm):
     """ Formulaire des postes. """
 
     # On ne propose que les services actifs
-    service = forms.ModelChoiceField(queryset=rh.Service.objects.all(), required=True)
+    service = forms.ModelChoiceField(
+        queryset=rh.Service.objects.all(), required=True
+    )
 
-    responsable=AutoCompleteSelectField('responsables', required=True)
+    responsable = AutoCompleteSelectField('responsables', required=True)
     #responsable = forms.ModelChoiceField(
     #        queryset=rh.Poste.objects.select_related(depth=1))
 
@@ -144,9 +198,12 @@ class PosteForm(forms.ModelForm):
     poste = forms.ChoiceField(label="Nouveau poste ou évolution du poste",
                               choices=(), required=False)
 
-    valeur_point_min  = forms.ModelChoiceField(queryset=rh.ValeurPoint.actuelles.all(), required=False)
-    valeur_point_max = forms.ModelChoiceField(queryset=rh.ValeurPoint.actuelles.all(), required=False)
-
+    valeur_point_min = forms.ModelChoiceField(
+        queryset=rh.ValeurPoint.actuelles.all(), required=False
+    )
+    valeur_point_max = forms.ModelChoiceField(
+        queryset=rh.ValeurPoint.actuelles.all(), required=False
+    )
 
     class Meta:
         model = dae.Poste
@@ -195,7 +252,8 @@ class PosteForm(forms.ModelForm):
         request = kwargs.pop('request')
         super(PosteForm, self).__init__(*args, **kwargs)
         self.fields['poste'].choices = self._poste_choices(request)
-        self.fields['implantation'].choices = _implantation_choices(self, request)
+        self.fields['implantation'].choices = \
+                _implantation_choices(self, request)
 
         # Quand le dae.Poste n'existe pas, on recherche dans les dossiers rhv1
         if self.instance and self.instance.id is None:
@@ -203,7 +261,6 @@ class PosteForm(forms.ModelForm):
             if len(dossiers) > 0:
                 self.initial['service'] = dossiers[0].poste.service
 
-
     def _poste_choices(self, request):
         """ Menu déroulant pour les postes.
 
@@ -211,9 +268,13 @@ class PosteForm(forms.ModelForm):
         d'équivalent dans dae.
 
         """
-        copies = dae.Poste.objects.ma_region_ou_service(request.user).exclude(id_rh__isnull=True).filter(etat=POSTE_ETAT_FINALISE)
+        copies = dae.Poste.objects \
+                .ma_region_ou_service(request.user) \
+                .exclude(id_rh__isnull=True) \
+                .filter(etat=POSTE_ETAT_FINALISE)
         id_copies = [p.id_rh_id for p in copies.all()]
-        rhv1 = rh.Poste.objects.ma_region_ou_service(request.user).exclude(id__in=id_copies)
+        rhv1 = rh.Poste.objects.ma_region_ou_service(request.user) \
+                .exclude(id__in=id_copies)
         # Optimisation de la requête
         rhv1 = rhv1.select_related(depth=1)
 
@@ -225,17 +286,18 @@ class PosteForm(forms.ModelForm):
         """
         Validation conditionnelles de certains champs.
         """
-        cleaned_data  = self.cleaned_data
+        cleaned_data = self.cleaned_data
 
-        if cleaned_data.get("local") is False and cleaned_data.get("expatrie") is False:
-            msg = "Le poste doit au moins être ouvert localement ou aux expatriés"
+        if cleaned_data.get("local") is False \
+           and cleaned_data.get("expatrie") is False:
+            msg = "Le poste doit au moins être ouvert localement " \
+                    "ou aux expatriés"
             self._errors["local"] = self.error_class([msg])
             self._errors["expatrie"] = ''
             raise forms.ValidationError(msg)
 
         return cleaned_data
 
-
     def save(self, *args, **kwargs):
         kwargs2 = kwargs.copy()
         kwargs2['commit'] = False
@@ -262,8 +324,10 @@ class ChoosePosteForm(forms.ModelForm):
 
     def _poste_choices(self, request):
         """ Menu déroulant pour les postes. """
-        dae_ = dae.Poste.objects.ma_region_ou_service(request.user).filter(id_rh__isnull=True)
-        copies = dae.Poste.objects.ma_region_ou_service(request.user).exclude(id_rh__isnull=True)
+        dae_ = dae.Poste.objects.ma_region_ou_service(request.user) \
+                .filter(id_rh__isnull=True)
+        copies = dae.Poste.objects.ma_region_ou_service(request.user) \
+                .exclude(id_rh__isnull=True)
 
         return [('', '----------')] + \
                sorted([('dae-%s' % p.id, unicode(p)) for p in dae_ | copies],
@@ -289,7 +353,7 @@ class EmployeForm(forms.ModelForm):
 class DossierForm(forms.ModelForm):
     """ Formulaire des dossiers. """
     class Meta:
-        exclude= ('etat', 'employe', 'poste', 'date_debut', )
+        exclude = ('etat', 'employe', 'poste', 'date_debut',)
         model = dae.Dossier
         widgets = dict(statut_residence=forms.RadioSelect(),
                        contrat_date_debut=admin_widgets.AdminDateWidget(),
@@ -305,8 +369,10 @@ class DossierForm(forms.ModelForm):
 
 WF_HELP_TEXT = ""
 
+
 class PosteWorkflowForm(WorkflowFormMixin):
     bouton_libelles = POSTE_ETATS_BOUTONS
+
     class Meta:
         fields = ('etat', )
         model = dae.Poste
@@ -317,7 +383,8 @@ class PosteWorkflowForm(WorkflowFormMixin):
 
 
 class DossierWorkflowForm(WorkflowFormMixin):
-    bouton_libelles = POSTE_ETATS_BOUTONS # meme workflow que poste...
+    bouton_libelles = POSTE_ETATS_BOUTONS  # meme workflow que poste...
+
     class Meta:
         fields = ('etat', )
         model = dae.Dossier
@@ -334,23 +401,30 @@ class DossierWorkflowForm(WorkflowFormMixin):
             poste.etat = self.instance.etat
             poste.save()
 
+
 class ContratForm(forms.ModelForm):
 
     class Meta:
         fields = ('type_contrat', 'fichier', )
         model = dae.Contrat
 
+
 class DAENumeriseeForm(forms.ModelForm):
 
     class Meta:
         model = dae.Dossier
         fields = ('dae_numerisee',)
 
+
 class DAEImportableForm(forms.Form):
     qs_poste = dae.Poste.objects.filter(etat=POSTE_ETAT_FINALISE)
     qs_dossier = dae.Dossier.objects.filter(etat=DOSSIER_ETAT_FINALISE)
-    poste = forms.ModelChoiceField(queryset=qs_poste, label="Poste finalisé", required=False)
-    dossier = forms.ModelChoiceField(queryset=qs_dossier, label="DAE finalisée", required=False)
+    poste = forms.ModelChoiceField(
+        queryset=qs_poste, label="Poste finalisé", required=False
+    )
+    dossier = forms.ModelChoiceField(
+        queryset=qs_dossier, label="DAE finalisée", required=False
+    )
 
     def clean_poste(self):
         poste = self.cleaned_data['poste']
@@ -361,11 +435,13 @@ class DAEImportableForm(forms.Form):
     def clean_dossier(self):
         dossier = self.cleaned_data['dossier']
         if dossier is not None and not dossier.poste.est_importe():
-            raise forms.ValidationError("Le poste de ce dossier doit être importé avant de pouvoir importer le dossier.")
+            raise forms.ValidationError(
+                "Le poste de ce dossier doit être importé avant de pouvoir "
+                "importer le dossier."
+            )
         return dossier
 
     def importer_poste(self):
         poste = self.cleaned_data['poste']
         if poste is not None and not poste.est_importe():
             poste.importer()
-        
index ad18708..1fccc03 100644 (file)
@@ -1,17 +1,25 @@
 # -=- encoding: utf-8 -=-
 
+import reversion
+from auf.django.metadata.models import AUFMetadata
 from django.conf import settings
 from django.core.files.storage import FileSystemStorage
 from django.db import models
-import reversion
+
+from project.dae.exporter import DossierCopier, PosteCopier
+from project.dae.managers import \
+        PosteManager, DossierManager, DossierFinaliseManager, \
+        PosteFinaliseManager
+from project.dae.workflow import PosteWorkflow, DossierWorkflow
+from project.dae.workflow import \
+        DOSSIER_ETAT_DRH_FINALISATION, DOSSIER_ETAT_REGION_FINALISATION, \
+        DOSSIER_ETAT_FINALISE
+
+# XXX: Saloperie, il faut importer rh.models à partir d'un autre namespace
+# à cause du hack app_context() dans project.rh.models. Très fragile. Il
+# faut régler ça aussi vite que possible.
 from rh import models as rh
-from workflow import PosteWorkflow, DossierWorkflow
-from workflow import DOSSIER_ETAT_DRH_FINALISATION, DOSSIER_ETAT_REGION_FINALISATION, \
-                     DOSSIER_ETAT_FINALISE
-from auf.django.metadata.models import AUFMetadata
-from managers import *
 from rh.models import HELP_TEXT_DATE
-from exporter import DossierCopier, PosteCopier
 
 # Upload de fichiers
 UPLOAD_STORAGE = FileSystemStorage(settings.PRIVE_MEDIA_ROOT)
@@ -31,12 +39,14 @@ POSTE_ACTION = (
 
 
 class DeviseException(Exception):
-  silent_variable_failure = True
+    silent_variable_failure = True
 
 
 class Poste(PosteWorkflow, rh.Poste_):
 
-    type_intervention = models.CharField(max_length=1, choices=POSTE_ACTION, default='N')
+    type_intervention = models.CharField(
+        max_length=1, choices=POSTE_ACTION, default='N'
+    )
 
     # Modèle existant
     id_rh = models.ForeignKey(rh.Poste, null=True, related_name='+',
@@ -44,12 +54,24 @@ class Poste(PosteWorkflow, rh.Poste_):
                             verbose_name=u"Mise à jour du poste")
 
     # Rémunération
-    indemn_expat_min = models.DecimalField(max_digits=13, decimal_places=2, default=0)
-    indemn_expat_max = models.DecimalField(max_digits=12, decimal_places=2, default=0)
-    indemn_fct_min = models.DecimalField(max_digits=12, decimal_places=2, default=0)
-    indemn_fct_max = models.DecimalField(max_digits=12, decimal_places=2, default=0)
-    charges_patronales_min = models.DecimalField(max_digits=12, decimal_places=2, default=0)
-    charges_patronales_max = models.DecimalField(max_digits=12, decimal_places=2, default=0)
+    indemn_expat_min = models.DecimalField(
+        max_digits=13, decimal_places=2, default=0
+    )
+    indemn_expat_max = models.DecimalField(
+        max_digits=12, decimal_places=2, default=0
+    )
+    indemn_fct_min = models.DecimalField(
+        max_digits=12, decimal_places=2, default=0
+    )
+    indemn_fct_max = models.DecimalField(
+        max_digits=12, decimal_places=2, default=0
+    )
+    charges_patronales_min = models.DecimalField(
+        max_digits=12, decimal_places=2, default=0
+    )
+    charges_patronales_max = models.DecimalField(
+        max_digits=12, decimal_places=2, default=0
+    )
 
     # Managers
     objects = PosteManager()
@@ -106,7 +128,7 @@ class Poste(PosteWorkflow, rh.Poste_):
             implantation_devise = rh.TauxChange.objects \
                             .filter(implantation=self.implantation)[0].devise
         except:
-            implantation_devise = 5 # EUR
+            implantation_devise = 5  # EUR
         return implantation_devise
 
     #####################
@@ -114,17 +136,21 @@ class Poste(PosteWorkflow, rh.Poste_):
     #####################
 
     def get_couts_minimum(self):
-        return self.salaire_min + self.indemn_expat_min + self.indemn_fct_min + self.charges_patronales_min + self.autre_min
+        return self.salaire_min + self.indemn_expat_min + \
+                self.indemn_fct_min + self.charges_patronales_min + \
+                self.autre_min
 
     def get_salaire_minimum(self):
         return self.get_couts_minimum() - self.charges_patronales_min
 
     def get_taux_minimum(self):
         if self.devise_min.code == 'EUR':
-          return 1
+            return 1
         liste_taux = self.devise_min.tauxchange_set.order_by('-annee')
         if len(liste_taux) == 0:
-            raise DeviseException(u"La devise %s n'a pas de taux pour l'implantation %s" % (self.devise_min, self.implantation))
+            raise DeviseException(
+                u"La devise %s n'a pas de taux pour l'implantation %s" %
+                (self.devise_min, self.implantation))
         else:
             return liste_taux[0].taux
 
@@ -135,17 +161,22 @@ class Poste(PosteWorkflow, rh.Poste_):
         return float(self.get_salaire_minimum()) * self.get_taux_minimum()
 
     def get_couts_maximum(self):
-        return self.salaire_max + self.indemn_expat_max + self.indemn_fct_max + self.charges_patronales_max + self.autre_max
+        return self.salaire_max + self.indemn_expat_max + \
+                self.indemn_fct_max + self.charges_patronales_max + \
+                self.autre_max
 
     def get_salaire_maximum(self):
         return self.get_couts_maximum() - self.charges_patronales_max
 
     def get_taux_maximum(self):
         if self.devise_max.code == 'EUR':
-          return 1
+            return 1
         liste_taux = self.devise_max.tauxchange_set.order_by('-annee')
         if len(liste_taux) == 0:
-            raise DeviseException(u"La devise %s n'a pas de taux pour l'implantation %s" % (self.devise_max, self.implantation))
+            raise DeviseException(
+                u"La devise %s n'a pas de taux pour l'implantation %s" %
+                (self.devise_max, self.implantation)
+            )
         else:
             return liste_taux[0].taux
 
@@ -191,15 +222,11 @@ class Poste(PosteWorkflow, rh.Poste_):
         except DeviseException, e:
             return e
 
-
-    ######################
     # Comparaison de poste
-    ######################
-
     def est_comparable(self):
         """
-        Si on a au moins une valeur de saisie dans les comparaisons, alors le poste
-        est comparable.
+        Si on a au moins une valeur de saisie dans les comparaisons, alors
+        le poste est comparable.
         """
         if self.comp_universite_min is None and \
            self.comp_fonctionpub_min is None and \
@@ -215,10 +242,10 @@ class Poste(PosteWorkflow, rh.Poste_):
         else:
             return True
 
-
     def get_taux_comparaison(self):
         try:
-            return rh.TauxChange.objects.filter(devise=self.devise_comparaison)[0].taux
+            return rh.TauxChange.objects \
+                    .filter(devise=self.devise_comparaison)[0].taux
         except:
             return 1
 
@@ -252,7 +279,6 @@ class Poste(PosteWorkflow, rh.Poste_):
     def get_comp_autre_max_euros(self):
         return (float)(self.comp_autre_max) * self.get_taux_comparaison()
 
-
     def __unicode__(self):
         """
         Cette fonction est consommatrice SQL car elle cherche les dossiers
@@ -265,27 +291,34 @@ class Poste(PosteWorkflow, rh.Poste_):
         )
         return u'%s - %s (%s)' % data
 
-
 # Tester l'enregistrement car les models.py sont importés au complet
 if not reversion.is_registered(Poste):
     reversion.register(Poste)
 
-
 POSTE_FINANCEMENT_CHOICES = (
     ('A', 'A - Frais de personnel'),
     ('B', 'B - Projet(s)-Titre(s)'),
     ('C', 'C - Autre')
 )
 
+
 class PosteFinancement(rh.PosteFinancement_):
     pass
 
+
 class PostePiece(rh.PostePiece_):
     pass
 
+
 class PosteComparaison(rh.PosteComparaison_):
-    statut = models.ForeignKey(rh.Statut, related_name='+', verbose_name=u'Statut', null=True, blank=True, )
-    classement = models.ForeignKey(rh.Classement, related_name='+', verbose_name=u'Classement', null=True, blank=True, )
+    statut = models.ForeignKey(
+        rh.Statut, related_name='+', verbose_name=u'Statut', null=True,
+        blank=True
+    )
+    classement = models.ForeignKey(
+        rh.Classement, related_name='+', verbose_name=u'Classement',
+        null=True, blank=True
+    )
 
 ### EMPLOYÉ/PERSONNE
 
@@ -296,6 +329,7 @@ GENRE_CHOICES = (
     ('f', 'Femme'),
 )
 
+
 class Employe(AUFMetadata):
 
     # Modèle existant
@@ -322,11 +356,15 @@ COMPTE_COMPTA_CHOICES = (
     ('aucun', 'Aucun'),
 )
 
+
 class Dossier(DossierWorkflow, rh.Dossier_):
-    poste = models.ForeignKey('Poste', db_column='poste', related_name='%(app_label)s_dossiers')
-    employe = models.ForeignKey('Employe', db_column='employe', 
-                            related_name='%(app_label)s_dossiers',
-                            verbose_name=u"Employé")
+    poste = models.ForeignKey(
+        'Poste', db_column='poste', related_name='%(app_label)s_dossiers'
+    )
+    employe = models.ForeignKey(
+        'Employe', db_column='employe',
+        related_name='%(app_label)s_dossiers', verbose_name=u"Employé"
+    )
     organisme_bstg_autre = models.CharField(max_length=255,
         verbose_name=u"Autre organisme",
         help_text="indiquer l'organisme ici s'il n'est pas dans la liste",
@@ -343,11 +381,13 @@ class Dossier(DossierWorkflow, rh.Dossier_):
     salaire_anterieur = models.DecimalField(
             max_digits=12, decimal_places=2, null=True, default=None,
             blank=True, verbose_name=u'Salaire précédent')
-    devise_anterieur = models.ForeignKey(rh.Devise, related_name='+', 
-            null=True, blank=True)
-    type_contrat_anterieur = models.ForeignKey(rh.TypeContrat, 
-            related_name='+', null=True, blank=True, 
-            verbose_name=u'Type contrat antérieur', )
+    devise_anterieur = models.ForeignKey(
+        rh.Devise, related_name='+', null=True, blank=True
+    )
+    type_contrat_anterieur = models.ForeignKey(
+        rh.TypeContrat, related_name='+', null=True, blank=True,
+        verbose_name=u'Type contrat antérieur'
+    )
 
     # Données du titulaire précédent
     employe_anterieur = models.ForeignKey(
@@ -362,7 +402,9 @@ class Dossier(DossierWorkflow, rh.Dossier_):
     salaire_titulaire_anterieur = models.DecimalField(
             max_digits=12, decimal_places=2, default=None, null=True,
             blank=True, verbose_name=u'Salaire titulaire précédent')
-    devise_titulaire_anterieur = models.ForeignKey(rh.Devise, related_name='+', null=True, blank=True)
+    devise_titulaire_anterieur = models.ForeignKey(
+        rh.Devise, related_name='+', null=True, blank=True
+    )
 
     # Rémunération
     salaire = models.DecimalField(max_digits=13, decimal_places=2,
@@ -377,24 +419,53 @@ class Dossier(DossierWorkflow, rh.Dossier_):
                                         help_text=HELP_TEXT_DATE)
 
     # Justifications
-    justif_nouveau_statut_label = u'Justifier le statut que ce type de poste nécessite (national, expatrié, màd ou détachement)'
-    justif_nouveau_statut = models.TextField(verbose_name=justif_nouveau_statut_label, null=True, blank=True)
-    justif_nouveau_tmp_remplacement_label = u"Si l'employé effectue un remplacement temporaire, préciser"
-    justif_nouveau_tmp_remplacement = models.TextField(verbose_name=justif_nouveau_tmp_remplacement_label, null=True, blank=True)
-    justif_nouveau_salaire_label = u"Si le salaire de l'employé ne correspond pas au classement du poste ou est différent du salaire antérieur, justifier "
-    justif_nouveau_salaire = models.TextField(verbose_name=justif_nouveau_salaire_label, null=True, blank=True)
+    justif_nouveau_statut_label = u'Justifier le statut que ce type ' \
+            u'de poste nécessite (national, expatrié, màd ou détachement)'
+    justif_nouveau_statut = models.TextField(
+        verbose_name=justif_nouveau_statut_label, null=True, blank=True
+    )
+    justif_nouveau_tmp_remplacement_label = u"Si l'employé effectue un " \
+            u"remplacement temporaire, préciser"
+    justif_nouveau_tmp_remplacement = models.TextField(
+        verbose_name=justif_nouveau_tmp_remplacement_label, null=True,
+        blank=True
+    )
+    justif_nouveau_salaire_label = u"Si le salaire de l'employé ne " \
+            u"correspond pas au classement du poste ou est différent " \
+            u"du salaire antérieur, justifier "
+    justif_nouveau_salaire = models.TextField(
+        verbose_name=justif_nouveau_salaire_label, null=True, blank=True
+    )
     justif_nouveau_commentaire_label = u"COMMENTAIRES ADDITIONNELS"
-    justif_nouveau_commentaire = models.TextField(verbose_name=justif_nouveau_commentaire_label, null=True, blank=True)
-    justif_rempl_type_contrat_label = u"Changement de type de contrat, ex : d'un CDD en CDI"
-    justif_rempl_type_contrat = models.TextField(verbose_name=justif_rempl_type_contrat_label, null=True, blank=True)
-    justif_rempl_statut_employe_label = u"Si le statut de l'employé a été modifié pour ce poste ; ex :national, expatrié, màd, détachement ? Si oui, justifier"
-    justif_rempl_statut_employe = models.TextField(verbose_name=justif_rempl_statut_employe_label, null=True, blank=True)
-    justif_rempl_evaluation_label = u"L'évaluation de l'employé est-elle favorable? Préciser"
-    justif_rempl_evaluation = models.TextField(verbose_name=justif_rempl_evaluation_label, null=True, blank=True)
-    justif_rempl_salaire_label = u"Si le salaire de l'employé est modifié et/ou ne correspond pas à son classement, justifier"
-    justif_rempl_salaire = models.TextField(verbose_name=justif_rempl_salaire_label, null=True, blank=True)
+    justif_nouveau_commentaire = models.TextField(
+        verbose_name=justif_nouveau_commentaire_label, null=True, blank=True
+    )
+    justif_rempl_type_contrat_label = \
+            u"Changement de type de contrat, ex : d'un CDD en CDI"
+    justif_rempl_type_contrat = models.TextField(
+        verbose_name=justif_rempl_type_contrat_label, null=True, blank=True
+    )
+    justif_rempl_statut_employe_label = \
+            u"Si le statut de l'employé a été modifié pour ce poste ; " \
+            u"ex : national, expatrié, màd, détachement ? Si oui, justifier"
+    justif_rempl_statut_employe = models.TextField(
+        verbose_name=justif_rempl_statut_employe_label, null=True, blank=True
+    )
+    justif_rempl_evaluation_label = \
+            u"L'évaluation de l'employé est-elle favorable? Préciser"
+    justif_rempl_evaluation = models.TextField(
+        verbose_name=justif_rempl_evaluation_label, null=True, blank=True
+    )
+    justif_rempl_salaire_label = \
+            u"Si le salaire de l'employé est modifié et/ou ne correspond " \
+            u"pas à son classement, justifier"
+    justif_rempl_salaire = models.TextField(
+        verbose_name=justif_rempl_salaire_label, null=True, blank=True
+    )
     justif_rempl_commentaire_label = u"COMMENTAIRES ADDITIONNELS"
-    justif_rempl_commentaire = models.TextField(verbose_name=justif_rempl_commentaire_label, null=True, blank=True)
+    justif_rempl_commentaire = models.TextField(
+        verbose_name=justif_rempl_commentaire_label, null=True, blank=True
+    )
 
     # Comptes
     compte_compta = models.CharField(max_length=10, default='aucun',
@@ -403,22 +474,26 @@ class Dossier(DossierWorkflow, rh.Dossier_):
     compte_courriel = models.BooleanField()
 
     # DAE numérisée
-    dae_numerisee = models.FileField(upload_to='dae/dae_numerisee', storage=UPLOAD_STORAGE,
-                                     blank=True, null=True, verbose_name="DAE numérisée")
+    dae_numerisee = models.FileField(
+        upload_to='dae/dae_numerisee', storage=UPLOAD_STORAGE, blank=True,
+        null=True, verbose_name="DAE numérisée"
+    )
 
     # Managers
     objects = DossierManager()
 
     def __init__(self, *args, **kwargs):
-        # Bouchon pour créer une date fictive necessaire pour valider un dossier 
-        # à cause de l'héritage
+        # Bouchon pour créer une date fictive necessaire pour valider un
+        # dossier à cause de l'héritage
         super(rh.Dossier_, self).__init__(*args, **kwargs)
         super(DossierWorkflow, self).__init__(*args, **kwargs)
         import datetime
         self.date_debut = datetime.datetime.today()
 
     def __unicode__(self):
-        return u'[%s] %s - %s' % (self.poste.implantation, self.poste.nom, self.employe)
+        return u'[%s] %s - %s' % (
+            self.poste.implantation, self.poste.nom, self.employe
+        )
 
     def importer(self, verbosity=0, dry_run=False):
         copieur = DossierCopier(verbosity=verbosity, dry_run=dry_run)
@@ -435,7 +510,6 @@ class Dossier(DossierWorkflow, rh.Dossier_):
             return None
         return int(round(float(self.salaire_anterieur) * float(taux), 2))
 
-
     def get_salaire_titulaire_anterieur_euros(self):
         if self.devise_titulaire_anterieur is None:
             return None
@@ -445,7 +519,9 @@ class Dossier(DossierWorkflow, rh.Dossier_):
             return e
         if not taux:
             return None
-        return int(round(float(self.salaire_titulaire_anterieur) * float(taux), 2))
+        return int(round(
+            float(self.salaire_titulaire_anterieur) * float(taux), 2
+        ))
 
     def valide(self):
         return self.etat in (DOSSIER_ETAT_REGION_FINALISATION,
@@ -457,18 +533,26 @@ class Dossier(DossierWorkflow, rh.Dossier_):
 if not reversion.is_registered(Dossier):
     reversion.register(Dossier)
 
+
 class DossierPiece(rh.DossierPiece_):
     """Documents relatifs au Dossier (à l'occupation de ce poste par employé).
     Ex.: Lettre de motivation.
     """
     pass
 
+
 class DossierComparaison(rh.DossierComparaison_):
     """
     Photo d'une comparaison salariale au moment de l'embauche.
     """
-    statut = models.ForeignKey(rh.Statut, related_name='+', verbose_name='Statut', null=True, blank=True, )
-    classement = models.ForeignKey(rh.Classement, related_name='+', verbose_name='Classement', null=True, blank=True, )
+    statut = models.ForeignKey(
+        rh.Statut, related_name='+', verbose_name='Statut', null=True,
+        blank=True
+    )
+    classement = models.ForeignKey(
+        rh.Classement, related_name='+', verbose_name='Classement',
+        null=True, blank=True
+    )
 
 
 ### RÉMUNÉRATION
@@ -476,6 +560,7 @@ class DossierComparaison(rh.DossierComparaison_):
 class Remuneration(rh.Remuneration_):
     pass
 
+
 ### CONTRATS
 
 class Contrat(rh.Contrat_):
@@ -491,6 +576,7 @@ class DossierFinalise(Dossier):
         verbose_name = "Import d'un dossier dans RH"
         verbose_name_plural = "Import des dossiers dans RH"
 
+
 class PosteFinalise(Poste):
 
     objects = PosteFinaliseManager()
@@ -500,12 +586,14 @@ class PosteFinalise(Poste):
         verbose_name = "Import d'un poste dans RH"
         verbose_name_plural = "Import des postes dans RH"
 
+
 # modèle de liaison entre les systèmes
 
 class ImportDossier(models.Model):
     dae = models.ForeignKey('dae.Dossier', related_name='+')
     rh = models.ForeignKey('rh.Dossier', related_name='+')
 
+
 class ImportPoste(models.Model):
     dae = models.ForeignKey('dae.Poste', related_name='+')
     rh = models.ForeignKey('rh.Poste', related_name='+')
index 7384b2e..cb09545 100644 (file)
@@ -1,5 +1,5 @@
 # -*- encoding: utf-8 -*
-from django.conf.urls.defaults import patterns, url, include
+from django.conf.urls.defaults import patterns, url
 
 urlpatterns = patterns(
     'project.dae.views',
@@ -7,31 +7,37 @@ urlpatterns = patterns(
 
     # poste
     url(r'^postes$', 'postes_liste', name='dae_postes_liste'),
-    url(r'^poste/consulter/(?P<key>.*)$', 'poste_consulter', name='poste_consulter'),
+    url(r'^poste/consulter/(?P<key>.*)$', 'poste_consulter',
+        name='poste_consulter'),
     url(r'^poste$', 'poste', name='poste'),
     url(r'^poste/(?P<key>.*)$', 'poste', name='poste'),
     url(r'^pieces-postes/(\d+)/(.*)$', 'poste_piece', name='poste_piece'),
 
     # embauche
     url(r'^embauches$', 'embauches_liste', name='dae_embauches_liste'),
-    url(r'^embauches-finalisees$', 'embauches_finalisees', name='embauches_finalisees'),
+    url(r'^embauches-finalisees$', 'embauches_finalisees',
+        name='embauches_finalisees'),
     url(r'^embauche$', 'embauche_choisir_poste', name='embauche'),
-    url(r'^embauche/consulter/(?P<dossier_id>.*)$', 'embauche_consulter', name='embauche_consulter'),
-    url(r'^embauche/(?P<key>.*)/(?P<dossier_id>.*)$', 'embauche', name='embauche'),
+    url(r'^embauche/consulter/(?P<dossier_id>.*)$', 'embauche_consulter',
+        name='embauche_consulter'),
+    url(r'^embauche/(?P<key>.*)/(?P<dossier_id>.*)$', 'embauche',
+        name='embauche'),
     url(r'^embauche/(?P<key>.*)$', 'embauche', name='embauche'),
 
     # contrats
-    url(r'^embauches/(?P<dossier_id>\d+)/contrats/ajouter$', 'embauche_ajouter_contrat',
-        name='embauche_ajouter_contrat'),
+    url(r'^embauches/(?P<dossier_id>\d+)/contrats/ajouter$',
+        'embauche_ajouter_contrat', name='embauche_ajouter_contrat'),
     url(r'^contrats/(\d+)/fichier/(.*)$', 'contrat', name='contrat'),
-    url(r'^contrats/(\d+)/supprimer$', 'contrat_supprimer', name='contrat_supprimer'),
+    url(r'^contrats/(\d+)/supprimer$', 'contrat_supprimer',
+        name='contrat_supprimer'),
 
     # DAE numérisée
-    url(r'^embauches/(\d+)/dae_numerisee$', 'dae_numerisee', name='dae_numerisee'),
+    url(r'^embauches/(\d+)/dae_numerisee$', 'dae_numerisee',
+        name='dae_numerisee'),
     url(r'^embauches/(\d+)/dae_numerisee/modifier$', 'dae_numerisee_modifier',
         name='dae_numerisee_modifier'),
-    url(r'^embauches/(\d+)/dae_numerisee/supprimer$', 'dae_numerisee_supprimer',
-        name='dae_numerisee_supprimer'),
+    url(r'^embauches/(\d+)/dae_numerisee/supprimer$',
+        'dae_numerisee_supprimer', name='dae_numerisee_supprimer'),
 
     url(r'^importer$', 'importer_choix_dossier', name='importer_dae'),
 
@@ -39,14 +45,19 @@ urlpatterns = patterns(
     url(r'^employe$', 'employe', name='employe'),
     url(r'^employe/(?P<key>.*)$', 'employe', name='employe'),
     url(r'^dossier$', 'dossier', name='dossier'),
-    url(r'^dossier/(?P<poste_key>.*)/(?P<employe_key>.*)$', 'dossier', name='dossier'),
-    url(r'^pieces-dossiers/(\d+)/(.*)$', 'dossier_piece', name='dossier_piece'),
-    url(r'^dossier_resume/(?P<dossier_id>.*)$', 'dossier_resume', name='dossier_resume'),
-    url(r'^poste_resume/(?P<dossier_id>.*)$', 'poste_resume', name='poste_resume'),
+    url(r'^dossier/(?P<poste_key>.*)/(?P<employe_key>.*)$', 'dossier',
+        name='dossier'),
+    url(r'^pieces-dossiers/(\d+)/(.*)$', 'dossier_piece',
+        name='dossier_piece'),
+    url(r'^dossier_resume/(?P<dossier_id>.*)$', 'dossier_resume',
+        name='dossier_resume'),
+    url(r'^poste_resume/(?P<dossier_id>.*)$', 'poste_resume',
+        name='poste_resume'),
     url(r'^salaire$', 'salaire', name='salaire'),
     url(r'^salaire/(.*)/(.*)/(.*)$', 'salaire', name='salaire'),
     url(r'^coefficient$', 'coefficient', name='dae_coefficient'),
-    url(r'^liste_valeurs_point$', 'liste_valeurs_point', name='liste_valeurs_point'),
+    url(r'^liste_valeurs_point$', 'liste_valeurs_point',
+        name='liste_valeurs_point'),
     url(r'^liste_postes$', 'liste_postes', name='liste_postes'),
     url(r'^devise$', 'devise', name='dae_devise'),
     url(r'^devises$', 'devises', name='devises'),
index 49f7f5e..674c7fc 100644 (file)
@@ -4,32 +4,38 @@ import datetime
 from datetime import date
 from simplejson import dumps
 
+from auf.django.permissions.decorators import get_object
+from django.contrib import messages
+from django.contrib.auth.decorators import login_required
+from django.contrib.contenttypes.models import ContentType
 from django.core.exceptions import MultipleObjectsReturned
 from django.core.paginator import Paginator, InvalidPage
+from django.db.models import Q
 from django.http import Http404, HttpResponse, HttpResponseGone
 from django.shortcuts import redirect, render_to_response, get_object_or_404
 from django.template import RequestContext
-from django.contrib import messages
-from django.contrib.auth.decorators import login_required
-from django.contrib.contenttypes.models import ContentType
-
 from sendfile import sendfile
 
-from auf.django.permissions.decorators import get_object
-
-from dae import models as dae
-from dae.forms import *
-from dae.workflow import DOSSIER_ETAT_FINALISE, DOSSIER_ETAT_REGION_FINALISATION, \
-                         DOSSIER_ETAT_DRH_FINALISATION, POSTE_ETAT_FINALISE
-from dae.decorators import redirect_interdiction, dae_groupe_requis, \
+from project.dae import models as dae
+from project.dae.decorators import \
+        redirect_interdiction, dae_groupe_requis, \
         poste_dans_ma_region_ou_service, \
         dossier_dans_ma_region_ou_service, \
         vieux_dossier_dans_ma_region_ou_service, \
         employe_dans_ma_region_ou_service, \
         dossier_est_modifiable, \
         poste_est_modifiable, get_contrat
-from dae.mail import send_drh_finalisation_mail
-from rh import models as rh
+from project.dae.forms import \
+        PosteWorkflowForm, PosteForm, FinancementForm, PostePieceForm, \
+        PosteComparaisonFormSet, DossierWorkflowForm, ChoosePosteForm, \
+        EmployeForm, DossierForm, DossierPieceForm, \
+        DossierComparaisonFormSet, RemunForm, ContratForm, DAENumeriseeForm, \
+        label_poste_display, DAEImportableForm
+from project.dae.mail import send_drh_finalisation_mail
+from project.dae.workflow import \
+        DOSSIER_ETAT_FINALISE, DOSSIER_ETAT_REGION_FINALISATION, \
+        DOSSIER_ETAT_DRH_FINALISATION, POSTE_ETAT_FINALISE
+from project.rh import models as rh
 
 
 def devises():
@@ -46,6 +52,7 @@ def devises():
         liste.append(data)
     return liste
 
+
 @dae_groupe_requis
 def index(request):
     return render_to_response('dae/index.html', {}, RequestContext(request))
@@ -60,22 +67,30 @@ def poste_consulter(request, key):
     poste = get_object_or_404(dae.Poste, pk=id)
 
     if request.POST:
-        validationForm = PosteWorkflowForm(request.POST, instance=poste, request=request)
+        validationForm = PosteWorkflowForm(
+            request.POST, instance=poste, request=request
+        )
         if validationForm.is_valid():
             validationForm.save()
-            messages.add_message(request, messages.SUCCESS, "La validation a été enregistrée.")
+            messages.add_message(
+                request, messages.SUCCESS, "La validation a été enregistrée."
+            )
             return redirect('dae_postes_liste')
     else:
         validationForm = PosteWorkflowForm(instance=poste, request=request)
 
-    comparaisons_internes = poste.dae_comparaisons_internes.ma_region_ou_service(request.user)
+    comparaisons_internes = \
+            poste.dae_comparaisons_internes.ma_region_ou_service(request.user)
     vars = {
         'poste': poste,
         'validationForm': validationForm,
         'comparaisons_internes': comparaisons_internes
     }
 
-    return render_to_response('dae/poste_consulter.html', vars, RequestContext(request))
+    return render_to_response(
+        'dae/poste_consulter.html', vars, RequestContext(request)
+    )
+
 
 @dae_groupe_requis
 @poste_dans_ma_region_ou_service
@@ -110,19 +125,23 @@ def poste(request, key=None):
         data.update(dict(request.POST.items()))
         form = PosteForm(data, instance=poste, request=request)
         financementForm = FinancementForm(request.POST, instance=poste)
-        piecesForm = PostePieceForm(request.POST, request.FILES, instance=poste)
+        piecesForm = PostePieceForm(
+            request.POST, request.FILES, instance=poste
+        )
         if isinstance(poste, dae.Poste):
             comparaisons_formset = PosteComparaisonFormSet(
                 request.POST,
-                queryset=poste.dae_comparaisons_internes.ma_region_ou_service(request.user)
+                queryset=poste.dae_comparaisons_internes.ma_region_ou_service(
+                    request.user
+                )
             )
         else:
             comparaisons_formset = PosteComparaisonFormSet(
                 request.POST,
                 queryset=dae.PosteComparaison.objects.none()
             )
-        if form.is_valid() and piecesForm.is_valid() and financementForm.is_valid() and \
-           comparaisons_formset.is_valid():
+        if form.is_valid() and piecesForm.is_valid() and \
+           financementForm.is_valid() and comparaisons_formset.is_valid():
             poste = form.save()
             piecesForm.instance = poste
             piecesForm.save()
@@ -135,14 +154,20 @@ def poste(request, key=None):
                 comparaison.poste = poste
                 comparaison.save()
 
-            messages.add_message(request, messages.SUCCESS, "Le poste %s a été sauvegardé." % poste)
-            if request.POST.has_key('save'):
+            messages.add_message(
+                request, messages.SUCCESS,
+                "Le poste %s a été sauvegardé." % poste
+            )
+            if 'save' in request.POST:
                 return redirect('poste_consulter', key='dae-%s' % poste.id)
             else:
                 return redirect('poste', key='dae-%s' % poste.id)
 
         else:
-            messages.add_message(request, messages.ERROR, 'Il y a des erreurs dans le formulaire.')
+            messages.add_message(
+                request, messages.ERROR,
+                'Il y a des erreurs dans le formulaire.'
+            )
 
     else:
         # 'initial' évite la validation prémature lors d'une copie de poste de
@@ -152,7 +177,9 @@ def poste(request, key=None):
         financementForm = FinancementForm(instance=poste)
         if isinstance(poste, dae.Poste):
             comparaisons_formset = PosteComparaisonFormSet(
-                queryset=poste.dae_comparaisons_internes.ma_region_ou_service(request.user)
+                queryset=poste.dae_comparaisons_internes.ma_region_ou_service(
+                    request.user
+                )
             )
         else:
             comparaisons_formset = PosteComparaisonFormSet(
@@ -167,28 +194,34 @@ def poste(request, key=None):
 
     return render_to_response('dae/poste.html', vars, RequestContext(request))
 
+
 @dae_groupe_requis
 def postes_liste(request):
     """ Liste des postes. """
     content_type = ContentType.objects.get_for_model(dae.Poste)
     extra_select = {'derniere_validation': (
         "SELECT MAX(date) FROM workflow_workflowcommentaire "
-        "WHERE content_type_id = '%s' AND object_id = dae_poste.id" % content_type.id
+        "WHERE content_type_id = '%s' AND object_id = dae_poste.id" %
+        content_type.id
     )}
     postes_a_traiter = dae.Poste.objects.mes_choses_a_faire(request.user) \
             .extra(select=extra_select).order_by('-date_creation')
     postes_en_cours = dae.Poste.objects.ma_region_ou_service(request.user) \
-            .extra(select=extra_select).filter(~Q(etat=POSTE_ETAT_FINALISE)).order_by('-date_creation')
+            .extra(select=extra_select) \
+            .filter(~Q(etat=POSTE_ETAT_FINALISE)) \
+            .order_by('-date_creation')
     return render_to_response('dae/postes_liste.html', {
         'postes_a_traiter': postes_a_traiter,
         'postes_en_cours': postes_en_cours,
     }, RequestContext(request))
 
+
 @login_required
 def poste_piece(request, id, filename):
     """Téléchargement d'une pièce jointe à un poste."""
     piece = get_object_or_404(dae.PostePiece, pk=id)
-    if dae.Poste.objects.ma_region_ou_service(request.user).filter(id=piece.poste_id).exists():
+    if dae.Poste.objects.ma_region_ou_service(request.user) \
+       .filter(id=piece.poste_id).exists():
         return sendfile(request, piece.fichier.path)
     else:
         return redirect_interdiction(request)
@@ -197,9 +230,11 @@ def poste_piece(request, id, filename):
 ### DOSSIER
 
 def filtered_type_remun():
-    defaut = (2, 3, 8, 17) # salaire de base, indemnité de fonction, charges patronales
+    defaut = (2, 3, 8, 17)  # salaire de base, indemnité de fonction,
+                            # charges patronales
     return rh.TypeRemuneration.objects.filter(pk__in=defaut)
 
+
 @dae_groupe_requis
 @dossier_dans_ma_region_ou_service
 def embauche_consulter(request, dossier_id):
@@ -207,18 +242,26 @@ def embauche_consulter(request, dossier_id):
     etat_precedent = dossier.etat
 
     if request.POST:
-        validationForm = DossierWorkflowForm(request.POST, instance=dossier, request=request)
+        validationForm = DossierWorkflowForm(
+            request.POST, instance=dossier, request=request
+        )
         if validationForm.is_valid():
             if etat_precedent == DOSSIER_ETAT_REGION_FINALISATION and \
-               validationForm.cleaned_data['etat'] == DOSSIER_ETAT_DRH_FINALISATION:
+               validationForm.cleaned_data['etat'] == \
+               DOSSIER_ETAT_DRH_FINALISATION:
                 send_drh_finalisation_mail(request, dossier)
             validationForm.save()
-            messages.add_message(request, messages.SUCCESS, "La validation a été enregistrée.")
+            messages.add_message(
+                request, messages.SUCCESS, "La validation a été enregistrée."
+            )
             return redirect('dae_embauches_liste')
     else:
         validationForm = DossierWorkflowForm(instance=dossier, request=request)
 
-    comparaisons_internes = dossier.poste.dae_comparaisons_internes.ma_region_ou_service(request.user)
+    comparaisons_internes = \
+            dossier.poste.dae_comparaisons_internes.ma_region_ou_service(
+                request.user
+            )
     comparaisons = dossier.dae_comparaisons.ma_region_ou_service(request.user)
     vars = {
         'dossier': dossier,
@@ -227,8 +270,10 @@ def embauche_consulter(request, dossier_id):
         'comparaisons': comparaisons
     }
 
-    mode = request.GET.get('mode', None)
-    return render_to_response('dae/embauche_consulter.html', vars, RequestContext(request))
+    return render_to_response(
+        'dae/embauche_consulter.html', vars, RequestContext(request)
+    )
+
 
 @dae_groupe_requis
 def embauche_choisir_poste(request):
@@ -236,6 +281,7 @@ def embauche_choisir_poste(request):
         'form': ChoosePosteForm(request=request)
     }, RequestContext(request))
 
+
 @dae_groupe_requis
 @dossier_dans_ma_region_ou_service
 @dossier_est_modifiable
@@ -265,7 +311,9 @@ def embauche(request, key=None, dossier_id=None):
             else:
                 raise Http404
 
-        employe_form = EmployeForm(request.POST, instance=employe, request=request)
+        employe_form = EmployeForm(
+            request.POST, instance=employe, request=request
+        )
 
         if employe_form.is_valid():
             data = dict(request.POST.items())
@@ -280,10 +328,14 @@ def embauche(request, key=None, dossier_id=None):
         dossier.employe = employe_form.instance
 
         dossier_form = DossierForm(request.POST, instance=dossier)
-        piecesForm = DossierPieceForm(request.POST, request.FILES, instance=dossier)
+        piecesForm = DossierPieceForm(
+            request.POST, request.FILES, instance=dossier
+        )
         comparaisons_formset = DossierComparaisonFormSet(
             request.POST,
-            queryset=dossier.dae_comparaisons.ma_region_ou_service(request.user)
+            queryset=dossier.dae_comparaisons.ma_region_ou_service(
+                request.user
+            )
         )
         remunForm = RemunForm(request.POST, instance=dossier)
 
@@ -303,14 +355,21 @@ def embauche(request, key=None, dossier_id=None):
                 comparaison.dossier = dossier
                 comparaison.save()
 
-            messages.success(request, "Le dossier %s a été sauvegardé." % dossier)
-            if request.POST.has_key('save'):
+            messages.success(
+                request, "Le dossier %s a été sauvegardé." % dossier
+            )
+            if 'save' in request.POST:
                 return redirect('embauche_consulter', dossier_id=dossier.id)
             else:
-                return redirect('embauche', key=dossier.poste.key, dossier_id=dossier.id)
+                return redirect(
+                    'embauche', key=dossier.poste.key, dossier_id=dossier.id
+                )
 
         else:
-            messages.add_message(request, messages.ERROR, 'Il y a des erreurs dans le formulaire.')
+            messages.add_message(
+                request, messages.ERROR,
+                'Il y a des erreurs dans le formulaire.'
+            )
 
     else:
         # Initialisation d'un formulaire vide
@@ -318,7 +377,9 @@ def embauche(request, key=None, dossier_id=None):
             dossier = get_object_or_404(dae.Dossier, pk=dossier_id)
             employe = dossier.employe
             data = dict(employe='dae-%s' % employe.id)
-            employe_form = EmployeForm(initial=data, instance=employe, request=request)
+            employe_form = EmployeForm(
+                initial=data, instance=employe, request=request
+            )
         else:
             dossier_rh = rh.Dossier()
             poste_rh = poste.id_rh
@@ -328,14 +389,17 @@ def embauche(request, key=None, dossier_id=None):
         dossier_form = DossierForm(instance=dossier)
         piecesForm = DossierPieceForm(instance=dossier)
         comparaisons_formset = DossierComparaisonFormSet(
-            queryset=dossier.dae_comparaisons.ma_region_ou_service(request.user)
+            queryset=dossier.dae_comparaisons.ma_region_ou_service(
+                request.user
+            )
         )
         remunForm = RemunForm(instance=dossier)
 
     try:
-        comparaisons_internes = dossier.poste.dae_comparaisons_internes.ma_region_ou_service(
-            request.user
-        )
+        comparaisons_internes = \
+                dossier.poste.dae_comparaisons_internes.ma_region_ou_service(
+                    request.user
+                )
     except dae.Poste.DoesNotExist:
         comparaisons_internes = []
 
@@ -351,6 +415,7 @@ def embauche(request, key=None, dossier_id=None):
         'comparaisons_internes': comparaisons_internes
     }, RequestContext(request))
 
+
 @dae_groupe_requis
 @dossier_dans_ma_region_ou_service
 def embauches_liste(request):
@@ -358,17 +423,23 @@ def embauches_liste(request):
     content_type = ContentType.objects.get_for_model(dae.Dossier)
     extra_select = {'derniere_validation': (
         "SELECT MAX(date) FROM workflow_workflowcommentaire "
-        "WHERE content_type_id = '%s' AND object_id = dae_dossier.id" % content_type.id
+        "WHERE content_type_id = '%s' AND object_id = dae_dossier.id" %
+        content_type.id
     )}
-    embauches_a_traiter = dae.Dossier.objects.mes_choses_a_faire(request.user) \
+    embauches_a_traiter = dae.Dossier.objects \
+            .mes_choses_a_faire(request.user) \
             .extra(select=extra_select).order_by('-date_creation')
-    embauches_en_cours = dae.Dossier.objects.ma_region_ou_service(request.user) \
-            .extra(select=extra_select).order_by('-date_creation').exclude(etat=DOSSIER_ETAT_FINALISE)
+    embauches_en_cours = dae.Dossier.objects \
+            .ma_region_ou_service(request.user) \
+            .extra(select=extra_select) \
+            .order_by('-date_creation') \
+            .exclude(etat=DOSSIER_ETAT_FINALISE)
     return render_to_response('dae/embauches_liste.html', {
         'embauches_a_traiter': embauches_a_traiter,
         'embauches_en_cours': embauches_en_cours,
     }, RequestContext(request))
 
+
 @dae_groupe_requis
 def embauches_finalisees(request):
     """Liste des embauches finalisées."""
@@ -383,7 +454,9 @@ def embauches_finalisees(request):
     else:
         dir = ''
     if tri == 'region':
-        embauches = embauches.order_by(dir + 'poste__implantation__region__nom')
+        embauches = embauches.order_by(
+            dir + 'poste__implantation__region__nom'
+        )
     elif tri == 'implantation':
         embauches = embauches.order_by(dir + 'poste__implantation__nom')
     elif tri == 'poste':
@@ -407,6 +480,7 @@ def embauches_finalisees(request):
         'embauches': page
     }, RequestContext(request))
 
+
 def employe(request, key):
     """ Récupération AJAX de l'employé pour la page d'embauche. """
     data = dict(employe=key)
@@ -427,7 +501,10 @@ def employe(request, key):
             for field in ('prenom', 'nom', 'genre'):
                 setattr(employe, field, getattr(e, field))
 
-    return HttpResponse(EmployeForm(initial=data, instance=employe, request=request).as_table())
+    return HttpResponse(
+        EmployeForm(initial=data, instance=employe, request=request).as_table()
+    )
+
 
 ### CONTRATS
 
@@ -436,6 +513,7 @@ def employe(request, key):
 def contrat(request, contrat, filename):
     return sendfile(request, contrat.fichier.path)
 
+
 @dae_groupe_requis
 @get_contrat
 def contrat_supprimer(request, contrat):
@@ -447,6 +525,7 @@ def contrat_supprimer(request, contrat):
         'contrat': contrat
     }, RequestContext(request))
 
+
 @dae_groupe_requis
 @dossier_dans_ma_region_ou_service
 def embauche_ajouter_contrat(request, dossier_id=None):
@@ -466,12 +545,14 @@ def embauche_ajouter_contrat(request, dossier_id=None):
         'form': form
     }, RequestContext(request))
 
+
 ### DAE NUMERISEE
 
 @get_object(dae.Dossier, 'consulter')
 def dae_numerisee(request, dossier):
     return sendfile(request, dossier.dae_numerisee.path)
 
+
 @get_object(dae.Dossier, 'modifier_dae_numerisee')
 def dae_numerisee_modifier(request, dossier):
     if request.method == 'POST':
@@ -485,6 +566,7 @@ def dae_numerisee_modifier(request, dossier):
         'form': form
     }, RequestContext(request))
 
+
 @get_object(dae.Dossier, 'modifier_dae_numerisee')
 def dae_numerisee_supprimer(request, dossier):
     if request.method == 'POST':
@@ -492,11 +574,13 @@ def dae_numerisee_supprimer(request, dossier):
             dossier.dae_numerisee = None
             dossier.save()
             return redirect('embauche_consulter', dossier_id=dossier.id)
-    return render_to_response('dae/dae_numerisee_supprimer.html', {}, RequestContext(request))
+    return render_to_response(
+        'dae/dae_numerisee_supprimer.html', {}, RequestContext(request)
+    )
+
 
-################################################################################
 # AJAX SECURISE
-################################################################################
+
 @dae_groupe_requis
 @employe_dans_ma_region_ou_service
 def dossier(request, poste_key, employe_key):
@@ -508,64 +592,65 @@ def dossier(request, poste_key, employe_key):
 
     # Récupérer la devise de l'implantation lié au poste
     implantation_devise = poste.get_default_devise()
-    data.update({'devise' : implantation_devise})
+    data.update({'devise': implantation_devise})
 
     if poste.id_rh_id is not None:
         poste_rh = get_object_or_404(rh.Poste, pk=poste.id_rh_id)
     else:
         poste_rh = None
 
-    ##########################################################################################
     #   NOUVEL EMPLOYE
-    ##########################################################################################
     if employe_key == '':
         employe_source = 'new'
         employe = None
         dossier_rh = rh.Dossier()
         dossier = pre_filled_dossier(dossier_rh, employe_source, poste_rh)
 
-    ##########################################################################################
     #   EMPLOYE DAE
-    ##########################################################################################
     if employe_key.startswith('dae'):
-      employe_source, employe_id = employe_key.split('-')
-      employe_dae = get_object_or_404(dae.Employe, pk=employe_id)
-
-      # récupération de l'ancien dossier rh v1 pour l'employe DAE
-      try:
-          dossier_rh = rh.Dossier.objects.get(employe=employe_dae.id_rh_id, date_fin=None)
-      except (rh.Dossier.DoesNotExist):
-          dossier_rh = rh.Dossier()
-
-      # on tente de récupérer le dossier DAE, au pire on le contruit en le
-      # prépoluant avec son dossier rh v1.
-      try:
-          dossier = dae.Dossier.objects.get(employe=employe_dae, poste=poste)
-      except (dae.Dossier.DoesNotExist):
-          dossier = pre_filled_dossier(dossier_rh, employe_source, poste_rh)
-      employe = employe_dae.id_rh
-    ##########################################################################################
+        employe_source, employe_id = employe_key.split('-')
+        employe_dae = get_object_or_404(dae.Employe, pk=employe_id)
+
+        # récupération de l'ancien dossier rh v1 pour l'employe DAE
+        try:
+            dossier_rh = rh.Dossier.objects.get(
+                employe=employe_dae.id_rh_id, date_fin=None
+            )
+        except (rh.Dossier.DoesNotExist):
+            dossier_rh = rh.Dossier()
+
+        # on tente de récupérer le dossier DAE, au pire on le contruit en le
+        # prépoluant avec son dossier rh v1.
+        try:
+            dossier = dae.Dossier.objects.get(employe=employe_dae, poste=poste)
+        except (dae.Dossier.DoesNotExist):
+            dossier = pre_filled_dossier(dossier_rh, employe_source, poste_rh)
+        employe = employe_dae.id_rh
+
     #   EMPLOYE RH v1
-    ##########################################################################################
     if employe_key.startswith('rh'):
-      employe_source, employe_id = employe_key.split('-')
-      employe_rh = get_object_or_404(rh.Employe, pk=employe_id)
-
-      # récupération de l'ancien dossier rh v1 pour l'employe rh v1, s'il n'en a pas,
-      # on en fournit un nouveau qui servira uniquement un créer un nouveau dossier DAE.
-      try:
-          dossier_rh = rh.Dossier.objects.get(employe=employe_rh, date_fin=None)
-      except (rh.Dossier.DoesNotExist):
-          dossier_rh = rh.Dossier()
-      dossier = pre_filled_dossier(dossier_rh, employe_source, poste_rh)
-      employe = employe_rh
+        employe_source, employe_id = employe_key.split('-')
+        employe_rh = get_object_or_404(rh.Employe, pk=employe_id)
+
+        # récupération de l'ancien dossier rh v1 pour l'employe rh v1, s'il
+        # n'en a pas, on en fournit un nouveau qui servira uniquement un
+        # créer un nouveau dossier DAE.
+        try:
+            dossier_rh = rh.Dossier.objects.get(
+                employe=employe_rh, date_fin=None
+            )
+        except (rh.Dossier.DoesNotExist):
+            dossier_rh = rh.Dossier()
+        dossier = pre_filled_dossier(dossier_rh, employe_source, poste_rh)
+        employe = employe_rh
 
     dossier_form = DossierForm(initial=data, instance=dossier)
     vars = dict(form=dossier_form, poste=poste, employe=employe)
     return render_to_response('dae/embauche-dossier.html', vars,
                           RequestContext(request))
 
-#  @Cette fonction est appelée à partir de fonctions déjà sécurisée
+
+#  Cette fonction est appelée à partir de fonctions déjà sécurisée
 def pre_filled_dossier(dossier_rh, employe_source, poste_rh):
     dossier = dae.Dossier()
 
@@ -577,7 +662,8 @@ def pre_filled_dossier(dossier_rh, employe_source, poste_rh):
             dossier.classement_anterieur = dossier_rh.classement
 
         # Récupération du salaire de base
-        remun = dossier_rh.remunerations().filter(type=1).order_by('-date_debut')
+        remun = dossier_rh.remunerations() \
+                .filter(type=1).order_by('-date_debut')
         if remun:
             dossier.salaire_anterieur = remun[0].montant
             dossier.devise_anterieur = remun[0].devise
@@ -598,7 +684,8 @@ def pre_filled_dossier(dossier_rh, employe_source, poste_rh):
                 dossier.employe_anterieur = titulaire
                 dossier.classement_titulaire_anterieur = d.classement
                 dossier.statut_titulaire_anterieur = d.statut
-                remun = d.remunerations().filter(type=1).order_by('-date_debut')[0]
+                remun = d.remunerations().filter(type=1) \
+                        .order_by('-date_debut')[0]
                 dossier.salaire_titulaire_anterieur = remun.montant
                 dossier.devise_titulaire_anterieur = remun.devise
             except:
@@ -612,6 +699,7 @@ def pre_filled_dossier(dossier_rh, employe_source, poste_rh):
 
     return dossier
 
+
 @dae_groupe_requis
 @vieux_dossier_dans_ma_region_ou_service
 def dossier_resume(request, dossier_id=None):
@@ -626,7 +714,9 @@ def dossier_resume(request, dossier_id=None):
     if dossier.statut is not None:
         data['statut'] = dossier.statut.id
     data['implantation'] = dossier.poste.implantation.id
-    data['poste'] = u"%s %s" % (dossier.poste.type_poste.nom, dossier.poste.nom)
+    data['poste'] = u"%s %s" % (
+        dossier.poste.type_poste.nom, dossier.poste.nom
+    )
     salaire = dossier.get_salaire()
     if salaire is not None:
         data['montant'] = float(salaire.montant)
@@ -640,6 +730,7 @@ def dossier_resume(request, dossier_id=None):
         data['montant_euros'] = 0
     return HttpResponse(dumps(data))
 
+
 @dae_groupe_requis
 @vieux_dossier_dans_ma_region_ou_service
 def poste_resume(request, dossier_id=None):
@@ -655,7 +746,9 @@ def poste_resume(request, dossier_id=None):
     salaire = dossier.get_salaire()
     data = {}
     data['implantation'] = dossier.poste.implantation.id
-    data['poste'] = u"%s %s" % (dossier.poste.type_poste.nom, dossier.poste.nom)
+    data['poste'] = u"%s %s" % (
+        dossier.poste.type_poste.nom, dossier.poste.nom
+    )
     if salaire is not None:
         data['devise'] = salaire.devise.id
         data['montant'] = float(salaire.montant)
@@ -668,6 +761,7 @@ def poste_resume(request, dossier_id=None):
     data['classement'] = dossier.classement_id
     return HttpResponse(dumps(data))
 
+
 def liste_postes(request):
     """ Appel AJAX :
     input : implantation_id
@@ -678,30 +772,39 @@ def liste_postes(request):
     data = []
 
     # Voir le code de _poste_choices dans forms.py
-    copies = dae.Poste.objects.exclude(id_rh__isnull=True).filter(etat=POSTE_ETAT_FINALISE)
+    copies = dae.Poste.objects.exclude(id_rh__isnull=True) \
+            .filter(etat=POSTE_ETAT_FINALISE)
     rh_postes_actifs = rh.Poste.objects.all()
 
-    if 'implantation_id' in params and params.get('implantation_id') is not u"":
+    if 'implantation_id' in params \
+       and params.get('implantation_id') is not u"":
         implantation_id = params.get('implantation_id')
         copies = copies.filter(implantation__id=implantation_id)
-        rh_postes_actifs = rh_postes_actifs.filter(implantation__id=implantation_id)
+        rh_postes_actifs = rh_postes_actifs.filter(
+            implantation__id=implantation_id
+        )
 
     id_copies = [p.id_rh_id for p in copies.all()]
     rhv1 = rh_postes_actifs.exclude(id__in=id_copies)
     rhv1 = rhv1.select_related(depth=1)
 
-    data = [('', 'Nouveau poste')] +  sorted([('rh-%s' % p.id, label_poste_display(p)) for p in rhv1], key=lambda t: t[1])
+    data = [('', 'Nouveau poste')] + \
+            sorted([('rh-%s' % p.id, label_poste_display(p)) for p in rhv1],
+                   key=lambda t: t[1])
     return HttpResponse(dumps(data))
 
+
 @login_required
 def dossier_piece(request, id, filename):
     """Téléchargement d'une pièce jointe à un poste."""
     piece = get_object_or_404(dae.DossierPiece, pk=id)
-    if dae.Dossier.objects.ma_region_ou_service(request.user).filter(id=piece.dossier_id).exists():
+    if dae.Dossier.objects.ma_region_ou_service(request.user) \
+       .filter(id=piece.dossier_id).exists():
         return sendfile(request, piece.fichier.path)
     else:
         return redirect_interdiction(request)
 
+
 @login_required
 def importer_choix_dossier(request):
     method = request.method
@@ -710,17 +813,19 @@ def importer_choix_dossier(request):
         form = DAEImportableForm(params)
         if form.is_valid():
             form.importer_poste()
-            messages.add_message(request, messages.SUCCESS, "L'importation a réussie.")
+            messages.add_message(
+                request, messages.SUCCESS, "L'importation a réussie."
+            )
     else:
         form = DAEImportableForm()
-            
+
     vars = dict(form=form, )
     return render_to_response('admin/dae/importer_choix_dossier.html', vars,
                           RequestContext(request))
 
-################################################################################
+
 # AJAX SECURITE non nécessaire
-################################################################################
+
 def coefficient(request):
     """ Appel AJAX :
     input : classement
@@ -751,10 +856,14 @@ def devise(request):
         valeur_point = rh.ValeurPoint.objects.get(pk=valeur_point)
         annee = valeur_point.annee
         try:
-            taux = rh.TauxChange.objects.get(annee=annee, devise=valeur_point.devise)
+            taux = rh.TauxChange.objects.get(
+                annee=annee, devise=valeur_point.devise
+            )
         except MultipleObjectsReturned:
-            return HttpResponseGone(u"Il existe plusieurs taux pour la devise %s cette année-là : %s" % \
-                (valeur_point.devise.code, annee))
+            return HttpResponseGone(
+                u"Il existe plusieurs taux pour la devise %s "
+                u"cette année-là : %s" % (valeur_point.devise.code, annee)
+            )
 
         data['devise'] = taux.devise.id
         data['valeur'] = valeur_point.valeur
@@ -764,6 +873,7 @@ def devise(request):
         return HttpResponseGone("Vous devez choisir une valeur de point")
     return HttpResponse(dumps(data))
 
+
 def devise_code(request):
     """ Appel AJAX :
     input : devise
@@ -783,6 +893,7 @@ def devise_code(request):
         data['taux_euro'] = taux[0].taux
     return HttpResponse(dumps(data))
 
+
 def add_remun(request, dossier, type_remun):
     dossier = get_object_or_404(dae.Dossier, pk=dossier)
     type_remun = get_object_or_404(rh.TypeRemuneration, pk=type_remun)
@@ -792,13 +903,15 @@ def add_remun(request, dossier, type_remun):
     return render_to_response('dae/embauche-remun.html', dict(dossier=dossier),
                               RequestContext(request))
 
+
 def salaire(request, implantation, devise, classement):
     if not devise or not classement:
         raise Http404
 
     taux = rh.TauxChange.objects.filter(devise=devise).order_by('-annee')
-    vp = rh.ValeurPoint.objects.filter(implantation=implantation, devise=devise) \
-                               .order_by('-annee')
+    vp = rh.ValeurPoint.objects \
+            .filter(implantation=implantation, devise=devise) \
+            .order_by('-annee')
 
     if vp.count() == 0:
         raise Exception(u"pas de valeur de point pour le couple\
@@ -816,6 +929,7 @@ def salaire(request, implantation, devise, classement):
 
     return HttpResponse(dumps(data))
 
+
 def liste_valeurs_point(request):
     """ Appel AJAX :
     input : implantation_id
@@ -825,15 +939,30 @@ def liste_valeurs_point(request):
     params = getattr(request, method, [])
     data = []
     annee_courante = datetime.datetime.now().year
-    if 'implantation_id' in params and params.get('implantation_id') is not u"":
+    if 'implantation_id' in params \
+       and params.get('implantation_id') is not u"":
         implantation_id = params.get('implantation_id')
-        preselectionne = rh.ValeurPoint.objects.filter(implantation=implantation_id, annee__in=(annee_courante,)).order_by("-annee")
+        preselectionne = rh.ValeurPoint.objects \
+                .filter(implantation=implantation_id, annee=annee_courante) \
+                .order_by("-annee")
         for o in preselectionne:
-            data.append({'id' : o.id, 'label' : o.__unicode__(), 'devise' : o.devise_id, 'suggestion' : True})
+            data.append({
+                'id': o.id,
+                'label': o.__unicode__(),
+                'devise': o.devise_id,
+                'suggestion': True
+            })
     else:
         preselectionne = rh.ValeurPoint.objects.none()
 
-    liste_complete = rh.ValeurPoint.objects.filter(annee__in=(annee_courante,)).order_by("-annee")
+    liste_complete = rh.ValeurPoint.objects \
+            .filter(annee__in=(annee_courante,)) \
+            .order_by("-annee")
     for o in liste_complete.exclude(id__in=[p.id for p in preselectionne]):
-        data.append({'id' : o.id, 'label' : o.__unicode__(), 'devise' : o.devise_id, 'suggestion' : False})
+        data.append({
+            'id': o.id,
+            'label': o.__unicode__(),
+            'devise': o.devise_id,
+            'suggestion': False
+        })
     return HttpResponse(dumps(data, indent=4))