From 07039f95dd61ab10a840d732e44ccbc24c4d4730 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Olivier=20Larchev=C3=AAque?= Date: Mon, 23 Jul 2012 11:57:14 -0400 Subject: [PATCH] delete offre emploi --- project/recrutement/admin.py | 10 +++- project/recrutement/test/common.py | 25 +++++++++ project/recrutement/test/offre_emploi.py | 89 +++++++++++++++++++++++++++++- project/rh/test/common.py | 2 + 4 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 project/recrutement/test/common.py diff --git a/project/recrutement/admin.py b/project/recrutement/admin.py index 38bf8d6..fa169f7 100644 --- a/project/recrutement/admin.py +++ b/project/recrutement/admin.py @@ -196,10 +196,16 @@ class OffreEmploiAdminMixin(BaseAdmin): 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): diff --git a/project/recrutement/test/common.py b/project/recrutement/test/common.py new file mode 100644 index 0000000..06f8053 --- /dev/null +++ b/project/recrutement/test/common.py @@ -0,0 +1,25 @@ +# -*- 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() + diff --git a/project/recrutement/test/offre_emploi.py b/project/recrutement/test/offre_emploi.py index 60cf573..c9fb4a4 100644 --- a/project/recrutement/test/offre_emploi.py +++ b/project/recrutement/test/offre_emploi.py @@ -1,9 +1,9 @@ # -*- 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 """ @@ -78,3 +78,88 @@ class OffreEmploiAddTest(RhTest): """ 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) diff --git a/project/rh/test/common.py b/project/rh/test/common.py index 361711a..50dd116 100644 --- a/project/rh/test/common.py +++ b/project/rh/test/common.py @@ -79,6 +79,8 @@ class RhTest(TestCase): self.password = "0000" self.today = datetime.datetime.now() + self.tomorrow = self.today + datetime.timedelta(days=1) + ######################### # Régions / Implantations ######################### -- 1.7.10.4