[#2244] Envoyer un courriel lorsqu'un contrat est validé par la région
authorEric Mc Sween <eric.mcsween@auf.org>
Fri, 4 Nov 2011 19:35:18 +0000 (15:35 -0400)
committerEric Mc Sween <eric.mcsween@auf.org>
Fri, 4 Nov 2011 19:35:50 +0000 (15:35 -0400)
project/dae/mail.py [new file with mode: 0644]
project/dae/views.py
project/dae/workflow.py
project/development.py

diff --git a/project/dae/mail.py b/project/dae/mail.py
new file mode 100644 (file)
index 0000000..42ad719
--- /dev/null
@@ -0,0 +1,22 @@
+# encoding: utf-8
+
+from django.core.mail import send_mail
+from django.core.urlresolvers import reverse
+
+from dae.workflow import grp_drh
+
+def send_drh_finalisation_mail(request, dossier):
+    subject = 'DAE: contrat pour %s' % dossier
+    dossier_url = request.build_absolute_uri(
+        reverse('embauche_consulter', kwargs={'dossier_id': dossier.id})
+    )
+    message = '\n'.join([
+        'Le contrat pour la DAE %s a été validé' % dossier,
+        '',
+        'Implantation: %s' % dossier.poste.implantation,
+        'Poste: %s' % dossier.poste,
+        '',
+        dossier_url
+    ])
+    recipients = [u.email for u in grp_drh.user_set.filter(is_active=True)]
+    send_mail(subject, message, 'root', recipients)
index 77887c3..c7b67dc 100644 (file)
@@ -23,19 +23,21 @@ from reversion.models import Version
 
 from sendfile import sendfile
 
-from project.dae import models as dae
-from project.rh_v1 import models as rh
-
-from decorators import 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 forms import *
-from workflow import POSTE_ETAT_DRH_FINALISATION, ETATS_VALIDE, DOSSIER_ETAT_FINALISE
-from decorators import redirect_interdiction
+from dae import models as dae
+from dae.forms import *
+from dae.workflow import POSTE_ETAT_DRH_FINALISATION, ETATS_VALIDE, \
+        DOSSIER_ETAT_FINALISE, DOSSIER_ETAT_REGION_FINALISATION, \
+        DOSSIER_ETAT_DRH_FINALISATION
+from 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_v1 import models as rh
+
 
 def devises():
     liste = []
@@ -85,7 +87,7 @@ def index(request):
 def poste_consulter(request, key):
     source, id = key.split('-')
     poste = get_object_or_404(dae.Poste, pk=id)
-    
+
     if request.POST:
         validationForm = PosteWorkflowForm(request.POST, instance=poste, request=request)
         if validationForm.is_valid():
@@ -94,7 +96,7 @@ def poste_consulter(request, key):
             return redirect('dae_postes_liste')
     else:
         validationForm = PosteWorkflowForm(instance=poste, request=request)
-    
+
     vars = {'poste' : poste, 'validationForm' : validationForm, }
 
 
@@ -155,10 +157,10 @@ def poste(request, key=None):
                 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.')
-            
+
     else:
         # 'initial' évite la validation prémature lors d'une copie de poste de
         # rh_v1 vers dae.
@@ -202,10 +204,14 @@ def filtered_type_remun():
 @dossier_dans_ma_region_ou_service
 def embauche_consulter(request, dossier_id):
     dossier = get_object_or_404(dae.Dossier, pk=dossier_id)
+    etat_precedent = dossier.etat
 
     if request.POST:
         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:
+                send_drh_finalisation_mail(request, dossier)
             validationForm.save()
             messages.add_message(request, messages.SUCCESS, "La validation a été enregistrée.")
             return redirect('dae_embauches_liste')
@@ -353,7 +359,8 @@ def embauches_finalisees(request):
     elif tri == 'poste':
         embauches = embauches.order_by(dir + 'poste__nom')
     elif tri == 'personne':
-        embauches = embauches.order_by(dir + 'employe__nom', 'employe__prenom')
+        embauches = embauches.order_by(dir + 'employe__nom',
+                                       dir + 'employe__prenom')
     elif tri == 'date_debut':
         embauches = embauches.order_by(dir + 'debut_contrat')
     elif tri == 'date_fin':
@@ -595,7 +602,7 @@ def poste_resume(request, dossier_id=None):
     return HttpResponse(dumps(data))
 
 def liste_postes(request):
-    """ Appel AJAX : 
+    """ Appel AJAX :
     input : implantation_id
     output : JSON liste de valeur point
     """
@@ -652,19 +659,19 @@ def coefficient(request):
 
 
 def devise(request):
-    """ Appel AJAX : 
+    """ Appel AJAX :
     input : valeur_point
     output : devise, devise_code, taux_euro
     """
     method = request.method
     params = getattr(request, method, [])
     data = dict()
-    if 'valeur_point' in params and params.get('valeur_point') is not u"": 
+    if 'valeur_point' in params and params.get('valeur_point') is not u"":
         valeur_point = params.get('valeur_point')
         valeur_point = rh.ValeurPoint.objects.get(pk=valeur_point)
         annee = valeur_point.annee
         implantation = valeur_point.implantation
-        taux = rh.TauxChange.objects.get(annee=annee, 
+        taux = rh.TauxChange.objects.get(annee=annee,
                                         implantation=implantation)
         data['devise'] = taux.devise.id
         data['valeur'] = valeur_point.valeur
@@ -675,7 +682,7 @@ def devise(request):
     return HttpResponse(dumps(data))
 
 def devise_code(request):
-    """ Appel AJAX : 
+    """ Appel AJAX :
     input : devise
     output : devise_code, taux_euro
     """
@@ -724,7 +731,7 @@ def salaire(request, implantation, devise, classement):
     return HttpResponse(dumps(data))
 
 def liste_valeurs_point(request):
-    """ Appel AJAX : 
+    """ Appel AJAX :
     input : implantation_id
     output : JSON liste de valeur point
     """
index fdcc493..8b39793 100644 (file)
@@ -111,12 +111,12 @@ POSTE_ACTIONS = {
     },
     POSTE_ACTION_ENVOYER_ADMINISTRATEUR : {
         'nom' : u'Envoyer',
-        'etat_initial' : (POSTE_ETAT_BROUILLON,), 
+        'etat_initial' : (POSTE_ETAT_BROUILLON,),
         'etat_final' : POSTE_ETAT_ADMINISTRATEUR,
     },
     POSTE_ACTION_ENVOYER_SRV_UTILISATEURS : {
         'nom' : u'Envoyer',
-        'etat_initial' : (POSTE_ETAT_ADMINISTRATEUR,), 
+        'etat_initial' : (POSTE_ETAT_ADMINISTRATEUR,),
         'etat_final' : POSTE_ETAT_SERVICE_UTILISATEURS,
     },
     POSTE_ACTION_ENVOYER_DIRECTEUR_BUREAU : {
@@ -241,7 +241,7 @@ class PosteWorkflow(WorkflowMixin):
         return False
 
     def acces_region_finalisation(self, action, request):
-        for g in user_groups:
+        for g in request.user.groups.all():
             if g in (grp_administrateurs, grp_drh,):
                 return True
 
index 1a763c0..abacc3b 100644 (file)
@@ -10,3 +10,4 @@ TEMPLATE_DEBUG=DEBUG
 #MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
 
 AUTH_PASSWORD_REQUIRED = False
+EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'