delete offre emploi
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 23 Jul 2012 15:57:14 +0000 (11:57 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 23 Jul 2012 15:57:14 +0000 (11:57 -0400)
project/recrutement/admin.py
project/recrutement/test/common.py [new file with mode: 0644]
project/recrutement/test/offre_emploi.py
project/rh/test/common.py

index 38bf8d6..fa169f7 100644 (file)
@@ -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 (file)
index 0000000..06f8053
--- /dev/null
@@ -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()
+
index 60cf573..c9fb4a4 100644 (file)
@@ -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)
index 361711a..50dd116 100644 (file)
@@ -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
         #########################