test offre emploi
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 23 Jul 2012 16:25:33 +0000 (12:25 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 23 Jul 2012 16:25:33 +0000 (12:25 -0400)
project/recrutement/admin.py
project/recrutement/test/offre_emploi.py
project/rh/test/common.py

index fa169f7..8db7f58 100644 (file)
@@ -213,10 +213,21 @@ 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
+        else:
+            if  groups.DIRECTEUR_DE_BUREAU in user_groupes or \
+                    groups.ADMINISTRATEURS in user_groupes:
+                return True
+
+
         return False
 
 
index c9fb4a4..331adc8 100644 (file)
@@ -163,3 +163,180 @@ class OffreEmploiDeleteTest(RecrutementTest):
         """
         self._test_grp_service_utilisateurs()
         self._test_acces_ko(self.url)
+
+
+class OffreEmploiChangeTest(RecrutementTest):
+    """
+    Test la modification d'une offre d'emploi
+    """
+
+    def setUp(self):
+        super(OffreEmploiChangeTest, self).setUp()
+        self.url = reverse('admin:emploi_offreemploi_change',
+                args=[self.offre_cnf_ngaoundere.id])
+
+    def test_anonyme(self):
+        """
+        Un anonyme ne peut pas modifier une offre d'emploi
+        """
+        self._test_anonyme()
+        self._test_acces_ko(self.url)
+
+    def test_correspondant_rh(self):
+        """
+        Un correspondant RH ne peut pas modifier une offre d'emploi
+        """
+        self._test_correspondant_rh()
+        self._test_acces_ko(self.url)
+
+    def test_administrateur_regional(self):
+        """
+        Un administrateur peut modifier une offre d'emploi
+        """
+        self._test_administrateur_regional()
+        self._test_acces_ok(self.url)
+        self._test_administrateur_regional(email="2@test.auf")
+        self._test_acces_ko(self.url)
+
+    def test_directeur_bureau(self):
+        """
+        Un directeur de bureau peut modifier 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 modifier une offre d'emploi
+        """
+        self._test_drh()
+        self._test_acces_ok(self.url)
+
+    def test_drh2(self):
+        """
+        Un DRH (2ieme niveau) peut modifier 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 modifier 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 modifier 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 modifier 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 modifier une offre d'emploi
+        """
+        self._test_grp_service_utilisateurs()
+        self._test_acces_ko(self.url)
+
+
+class OffreEmploiChangeListTest(RecrutementTest):
+    """
+    Test l'acces à la liste des offres d'emploi
+    """
+
+    def setUp(self):
+        super(OffreEmploiChangeListTest, self).setUp()
+        self.url = reverse('admin:emploi_offreemploi_changelist')
+
+    def test_anonyme(self):
+        """
+        Un anonyme ne peut pas lister les offres d'emploi
+        """
+        self._test_anonyme()
+        self._test_acces_ko(self.url)
+
+    def test_correspondant_rh(self):
+        """
+        Un correspondant RH ne peut pas lister les offres d'emploi
+        """
+        self._test_correspondant_rh()
+        self._test_acces_ko(self.url)
+
+    def test_administrateur_regional(self):
+        """
+        Un administrateur peut lister les offres d'emploi
+        """
+        self._test_administrateur_regional()
+        self._test_acces_ok(self.url)
+        qs = self.client.get(self.url).context['cl'].query_set
+        self.assertEqual(len(qs), 1)
+        self._test_administrateur_regional(email="2@test.auf")
+        self._test_acces_ok(self.url)
+        qs = self.client.get(self.url).context['cl'].query_set
+        self.assertEqual(len(qs), 0)
+
+    def test_directeur_bureau(self):
+        """
+        Un directeur de bureau peut lister les offres d'emploi
+        """
+        self._test_directeur_bureau()
+        self._test_acces_ok(self.url)
+        qs = self.client.get(self.url).context['cl'].query_set
+        self.assertEqual(len(qs), 1)
+        self._test_directeur_bureau(email="2@test.auf")
+        self._test_acces_ok(self.url)
+        qs = self.client.get(self.url).context['cl'].query_set
+        self.assertEqual(len(qs), 0)
+
+    def test_drh(self):
+        """
+        Un DRH peut lister les offres d'emploi
+        """
+        self._test_drh()
+        self._test_acces_ok(self.url)
+
+    def test_drh2(self):
+        """
+        Un DRH (2ieme niveau) peut lister les offres d'emploi
+        """
+        self._test_drh2()
+        self._test_acces_ok(self.url)
+
+    def _test_grp_accior(self):
+        """
+        Un membre de l'ACCIOR ne peut lister les offres d'emploi
+        """
+        self._test_grp_accior()
+        self._test_acces_ko(self.url)
+
+    def _test_grp_abf(self):
+        """
+        Un membre de l'ABF ne  peut lister les offres 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 lister les offres 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 lister les offres d'emploi
+        """
+        self._test_grp_service_utilisateurs()
+        self._test_acces_ko(self.url)
index 50dd116..a297716 100644 (file)
@@ -201,7 +201,7 @@ class RhTest(TestCase):
 
     def _test_acces_ko(self, url):
         response = self.client.get(url, follow=True)
-        is_ko = response.status_code == 403 or 'next' in response.context
+        is_ko = response.status_code in (403, 404) or 'next' in response.context
         self.assertEqual(is_ko, True)
 
     def _test_anonyme(self):