if request.user.is_superuser is True or \
groups.DRH_NIVEAU_1 in user_groupes or \
groups.DRH_NIVEAU_2 in user_groupes or \
- groups.DIRECTEUR_DE_BUREAU in user_groupes or \
- groups.ADMINISTRATEURS in user_groupes or \
groups.HAUTE_DIRECTION in user_groupes:
return True
+
+ if obj is not None:
+ employe = groups.get_employe_from_user(request.user)
+ if (groups.DIRECTEUR_DE_BUREAU in user_groupes or \
+ groups.ADMINISTRATEURS in user_groupes) and (
+ employe.implantation.region == obj.lieu_affectation.region):
+ return True
+
return False
def has_change_permission(self, request, obj=None):
--- /dev/null
+# -*- coding: utf-8 -*-
+
+from auf.django.references import models as ref
+from auf.django.emploi.models import OffreEmploi
+from project.rh.test.common import RhTest
+
+class RecrutementTest(RhTest):
+
+ def setUp(self):
+ """
+ OFFRE_EMPLOIS
+ =============
+ self.offre_cnf_ngaoundere
+ """
+ super(RecrutementTest, self).setUp()
+
+ self.offre_cnf_ngaoundere = OffreEmploi(nom=u"Offre CNF ngaoundere",
+ region=self.REGION_ACGL,
+ lieu_affectation=self.IMPLANTATION_ACGL_CNF_NGAOUNDERE,
+ date_limite=self.tomorrow,
+ debut_affectation=self.tomorrow,
+ bureau=ref.Bureau.objects.get(region=self.IMPLANTATION_ACGL_CNF_NGAOUNDERE.region),
+ )
+ self.offre_cnf_ngaoundere.save()
+
# -*- coding: utf-8 -*-
from django.core.urlresolvers import reverse
-from project.rh.test.common import RhTest
+from project.recrutement.test.common import RecrutementTest
-class OffreEmploiAddTest(RhTest):
+class OffreEmploiAddTest(RecrutementTest):
"""
Test l'ajout d'une offre d'emploi
"""
"""
self._test_grp_service_utilisateurs()
self._test_acces_ko(self.url)
+
+
+class OffreEmploiDeleteTest(RecrutementTest):
+ """
+ Test la suppression d'une offre d'emploi
+ """
+
+ def setUp(self):
+ super(OffreEmploiDeleteTest, self).setUp()
+ self.url = reverse('admin:emploi_offreemploi_delete',
+ args=[self.offre_cnf_ngaoundere.id])
+
+ def test_anonyme(self):
+ """
+ Un anonyme ne peut pas supprimer une offre d'emploi
+ """
+ self._test_anonyme()
+ self._test_acces_ko(self.url)
+
+ def test_correspondant_rh(self):
+ """
+ Un correspondant RH ne peut pas supprimer une offre d'emploi
+ """
+ self._test_correspondant_rh()
+ self._test_acces_ko(self.url)
+
+ def test_administrateur_regional(self):
+ """
+ Un administrateur peut supprimer une offre d'emploi
+ """
+ self._test_administrateur_regional()
+ self._test_acces_ok(self.url)
+ self._test_directeur_bureau(email="2@test.auf")
+ self._test_acces_ko(self.url)
+
+ def test_directeur_bureau(self):
+ """
+ Un directeur de bureau peut supprimer une offre d'emploi
+ """
+ self._test_directeur_bureau()
+ self._test_acces_ok(self.url)
+ self._test_directeur_bureau(email="2@test.auf")
+ self._test_acces_ko(self.url)
+
+ def test_drh(self):
+ """
+ Un DRH peut supprimer une offre d'emploi
+ """
+ self._test_drh()
+ self._test_acces_ok(self.url)
+
+ def test_drh2(self):
+ """
+ Un DRH (2ieme niveau) peut supprimer une offre d'emploi
+ """
+ self._test_drh2()
+ self._test_acces_ok(self.url)
+
+ def _test_grp_accior(self):
+ """
+ Un membre de l'ACCIOR ne peut supprimer une offre d'emploi
+ """
+ self._test_grp_accior()
+ self._test_acces_ko(self.url)
+
+ def _test_grp_abf(self):
+ """
+ Un membre de l'ABF ne peut supprimer une offre d'emploi
+ """
+ self._test_grp_abf(self)
+ self._test_acces_ko(self.url)
+
+ def _test_grp_haute_direction(self):
+ """
+ Un membre de la haute direction peut supprimer une offre d'emploi
+ """
+ self._test_grp_haute_direction()
+ self._test_acces_ok(self.url)
+
+ def _test_grp_service_utilisateurs(self):
+ """
+ Un membre du groupe service utilisateur ne peut supprimer une offre d'emploi
+ """
+ self._test_grp_service_utilisateurs()
+ self._test_acces_ko(self.url)