Poste = dae.Poste
postes = Poste.objects.ma_region_ou_service(user).filter(id=id)
- print postes
if len(postes) > 0:
return fn(request, *args, **kwargs)
else :
return inner
+def dossier_dans_ma_region_ou_service(fn):
+ """
+ Test si le user connecté appartient bien à la même région ou service que le poste.
+ """
+ def inner(request, *args, **kwargs):
+ user = request.user
+ poste_key = kwargs.get('key', None)
+ dossier_id = kwargs.get('dossier_id', None)
+
+ # Si on s'intéresse à un dossier, on teste la validation avec le poste associé
+ if dossier_id is not None:
+ dossiers = dae.Dossier.objects.ma_region_ou_service(user).filter(id=dossier_id)
+ if len(dossiers) > 0:
+ return fn(request, *args, **kwargs)
+ else :
+ msg = u"Vous n'avez pas le droit de consulter ce dossier d'embauche."
+ return redirect_interdiction(request, msg)
+
+ # Autoriser la création d'une nouvelle demande
+ if poste_key is None:
+ return fn(request, *args, **kwargs)
+ # On est en train de répondre à un poste
+ else:
+ return poste_dans_ma_region_ou_service(fn)
+ return inner
url(r'^embauches$', 'embauches_liste', name='dae_embauches_liste'),
url(r'^embauche$', 'embauche', name='embauche'),
url(r'^embauche/consulter/(?P<dossier_id>.*)$', 'embauche_consulter', name='embauche_consulter'),
- url(r'^embauche/(?P<key>.*)/(?P<dossier>.*)$', 'embauche', name='embauche'),
+ url(r'^embauche/(?P<key>.*)/(?P<dossier_id>.*)$', 'embauche', name='embauche'),
url(r'^embauche/(?P<key>.*)$', 'embauche', name='embauche'),
# ajax
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
+from decorators import dae_groupe_requis, poste_dans_ma_region_ou_service, dossier_dans_ma_region_ou_service
from forms import *
@dae_groupe_requis
@dae_groupe_requis
-@poste_dans_ma_region_ou_service
+@dossier_dans_ma_region_ou_service
def embauche_consulter(request, dossier_id):
dossier = get_object_or_404(dae.Dossier, pk=dossier_id)
return render_to_response('dae/embauche_consulter.html', vars, RequestContext(request))
@dae_groupe_requis
-def embauche(request, key=None, dossier=None):
+@dossier_dans_ma_region_ou_service
+def embauche(request, key=None, dossier_id=None):
""" Formulaire d'autorisation d'embauche. """
if not key:
vars = dict(step='poste', form=ChoosePosteForm())
if source != 'dae':
return Http404
poste = get_object_or_404(dae.Poste, pk=id)
- if not dossier:
+ if not dossier_id:
vars['new'] = True
if request.POST:
data['employe'] = 'dae-%s' % employe.id
employe_form = EmployeForm(data, instance=employe)
- if not dossier:
+ if not dossier_id:
dossier = dae.Dossier(poste=poste, employe=employe)
else:
- dossier = get_object_or_404(dae.Dossier, pk=dossier)
+ dossier = get_object_or_404(dae.Dossier, pk=dossier_id)
dossier_form = DossierForm(request.POST, instance=dossier)
piecesForm = DossierPieceForm(request.POST, request.FILES, instance=dossier)
justificationsNouveauForm = JustificationNouvelEmployeForm(request.POST, instance=dossier)
# Initialisation d'un formulaire vide
dossier_rh = rh.Dossier()
poste_rh = poste.id_rh
- if dossier:
- dossier = get_object_or_404(dae.Dossier, pk=dossier)
+ if dossier_id:
+ 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)
return render_to_response('dae/embauche.html', vars,
RequestContext(request))
@dae_groupe_requis
+@dossier_dans_ma_region_ou_service
def embauches_liste(request):
""" Liste des embauches. """
vars = dict()