changelist
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 31 May 2012 20:33:32 +0000 (16:33 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 31 May 2012 20:33:32 +0000 (16:33 -0400)
project/rh/admin.py
project/rh/test/employe.py
project/rh/tests.py

index f6230f7..77ca1ab 100644 (file)
@@ -539,6 +539,9 @@ class EmployeAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
             return True
         return False
 
+    def has_delete_permission(self, request, obj=None):
+        return in_drh_or_admin(request.user)
+
     def _apercu(self, obj):
         return u"""<a title="Aperçu de l'employé"
                       onclick="return showAddAnotherPopup(this);"
index b295a10..c4c9871 100644 (file)
@@ -159,3 +159,83 @@ class EmployeDeleteTest(RhTest):
         """
         self._test_grp_service_utilisateurs()
         self._test_acces_ko(self.url)
+
+
+class EmployeListTest(RhTest):
+    """
+    Test la suppression d'un employé
+    """
+
+    def setUp(self):
+        super(EmployeListTest, self).setUp()
+        self.url = reverse('admin:rh_employe_changelist')
+
+    def test_anonyme(self):
+        """
+        Un anonyme ne peut pas voir les employés
+        """
+        self._test_anonyme()
+        self._test_acces_ko(self.url)
+
+    def test_correspondant_rh(self):
+        """
+        Un correspodant RH peut voir les employés
+        """
+        self._test_correspondant_rh()
+        self._test_acces_ok(self.url)
+
+    def test_administrateur_regional(self):
+        """
+        Un administrateur peut voir les employés
+        """
+        self._test_administrateur_regional()
+        self._test_acces_ok(self.url)
+
+    def test_directeur_bureau(self):
+        """
+        Un directeur de bureau peut voir les employés
+        """
+        self._test_directeur_bureau()
+        self._test_acces_ok(self.url)
+
+    def test_drh(self):
+        """
+        Un DRH  peut voir les employés
+        """
+        self._test_drh()
+        self._test_acces_ok(self.url)
+
+    def test_drh2(self):
+        """
+        Un DRH (2ieme niveau) peut voir les employés
+        """
+        self._test_drh2()
+        self._test_acces_ok(self.url)
+
+    def _test_grp_accior(self):
+        """
+        Un membre de l'ACCIOR ne peut pas voir les employés
+        """
+        self._test_grp_accior()
+        self._test_acces_ko(self.url)
+
+    def _test_grp_abf(self):
+        """
+        Un membre de l'ABF ne peut pas voir les employés
+        """
+        self._test_grp_abf(self)
+        self._test_acces_ko(self.url)
+
+    def _test_grp_haute_direction(self):
+        """
+        Un membre de la haute direction  ne peut pas voir les employés
+        """
+        self._test_grp_haute_direction()
+        self._test_acces_ko(self.url)
+
+    def _test_grp_service_utilisateurs(self):
+        """
+        Un membre du groupe service utilisateur voir les employés
+        """
+        self._test_grp_service_utilisateurs()
+        self._test_acces_ko(self.url)
index b7ae381..a7d9dd3 100644 (file)
@@ -1,244 +1,2 @@
-# -*- coding: utf-8 -*-
 
-import datetime
-from django.core.urlresolvers import reverse
-from django.test.client import RequestFactory, Client
-from django.contrib.auth.models import User
-from project.rh import groups
-from auf.django.references import models as ref
-from django.test import TestCase
-from project.rh import models as rh
-
-
-class RhTest(TestCase):
-
-    def setUp(self):
-        """
-        POSTES
-        ======
-        self.poste_cnf_ngaoundere
-        self.poste_cnf_bangui
-        self.poste_bap_bureau
-        self.poste_bap_ifi
-
-        EMPLOYES
-        ========
-        self.employe_cnf_ngaoundere
-        self.employe_cnf_bangui
-        self.employe_bap_bureau
-        self.employe_bap_ifi
-
-        USERS DJANGO
-        ============
-        cf. EMPLOYES
-
-        DOSSIERS
-        ========
-        self.dossier_cnf_ngaoundere
-        self.dossier_cnf_bangui
-        self.dossier_bap_bureau
-        self.dossier_bap_ifi
-
-
-        """
-        self.factory = RequestFactory()
-        self.password = "0000"
-        today = datetime.datetime.now()
-        #########################
-        # Régions / Implantations
-        #########################
-        self.REGION_ACGL = ref.Region.objects.get(id=1)
-        self.IMPLANTATION_ACGL_CNF_NGAOUNDERE = ref.Implantation.objects.get(id=90)
-        self.IMPLANTATION_ACGL_CNF_BANGUI = ref.Implantation.objects.get(id=85)
-
-        self.REGION_BAP = ref.Region.objects.get(id=4)
-        self.IMPLANTATION_BAP_BUREAU = ref.Implantation.objects.get(id=51)
-        self.IMPLANTATION_BAP_IFI = ref.Implantation.objects.get(id=55)
-
-
-        ##########
-        # Employés
-        ##########
-        self.employe_cnf_ngaoundere = rh.Employe(
-                nom="Employé",
-                prenom="ngaoundere",
-                )
-        self.employe_cnf_ngaoundere.save()
-        self.employe_cnf_bangui = rh.Employe(
-                nom="Employé",
-                prenom="bangui",
-                )
-        self.employe_cnf_bangui.save()
-        self.employe_bap_bureau = rh.Employe(
-                nom="Employé",
-                prenom="BAP bureau",
-                )
-        self.employe_bap_bureau.save()
-        self.employe_bap_ifi = rh.Employe(
-                nom="Employé",
-                prenom="BAP IFI",
-                )
-        self.employe_bap_ifi.save()
-
-        ##############
-        # Users Django
-        ##############
-        for idx, e in enumerate(rh.Employe.objects.all()):
-            email = u"%s@test.auf" % idx
-            u = User(first_name=e.prenom,
-                    is_staff=True,
-                    last_name=e.nom,
-                    username=email,
-                    email=email)
-            u.set_password(self.password)
-            u.save()
-            auth = ref.Authentification(
-                    courriel=u.email,
-                    motdepasse=u.password,
-                    actif=1,
-                    )
-            auth.id_id = e.id
-            auth.save()
-        
-        ######
-        # ACGL
-        ######
-        self.poste_cnf_ngaoundere = rh.Poste(nom="poste à NGAOUNDERE",
-                implantation=self.IMPLANTATION_ACGL_CNF_NGAOUNDERE)
-
-        self.poste_cnf_bangui = rh.Poste(nom="poste à BANGUI",
-                implantation=self.IMPLANTATION_ACGL_CNF_BANGUI)
-
-        self.poste_cnf_ngaoundere.save()
-        self.poste_cnf_bangui.save()
-
-        self.dossier_cnf_ngaoundere = rh.Dossier(poste=self.poste_cnf_ngaoundere,
-            employe=self.employe_cnf_ngaoundere, date_debut=today)
-        self.dossier_cnf_bangui = rh.Dossier(poste=self.poste_cnf_bangui,
-            employe=self.employe_cnf_bangui, date_debut=today)
-
-        self.dossier_cnf_ngaoundere.save()
-        self.dossier_cnf_bangui.save()
-
-        #####
-        # BAP
-        #####
-        self.poste_bap_bureau = rh.Poste(nom="poste au Bureau BAP",
-                implantation=self.IMPLANTATION_BAP_BUREAU)
-        self.poste_bap_ifi = rh.Poste(nom="poste à l'IFI",
-                implantation=self.IMPLANTATION_BAP_IFI)
-
-        self.poste_bap_bureau.save()
-        self.poste_bap_ifi.save()
-
-        self.dossier_bap_bureau = rh.Dossier(poste=self.poste_bap_bureau,
-            employe=self.employe_bap_bureau, date_debut=today)
-        self.dossier_bap_ifi = rh.Dossier(poste=self.poste_bap_ifi,
-            employe=self.employe_bap_ifi, date_debut=today)
-
-        self.dossier_bap_bureau.save()
-        self.dossier_bap_ifi.save()
-
-    def _test_acces_ok(self, url):
-        response = self.client.get(url, follow=True)
-        self.assertEqual(response.status_code, 200)
-        self.assertEqual('next' in response.context, False)
-
-
-class PortalTest(RhTest):
-
-    def test_anonyme_frontend(self):
-        response = self.client.get('/')
-        self.assertEqual(response.status_code, 200)
-
-    def test_anonyme_backend(self):
-        admin_index_url = reverse('admin:index')
-        response = self.client.get(admin_index_url)
-        self.assertEqual(response.context['next'], admin_index_url)
-
-    def test_logged_sans_groupe_backend(self):
-        email = "0@test.auf"
-        admin_index_url = reverse('admin:index')
-        self.client.login(username=email, password=self.password)
-        response = self.client.get(admin_index_url)
-        self.assertEqual(response.context['next'], admin_index_url)
-
-class EmployeAddTest(RhTest):
-    """
-    Test l'ajout d'un employé
-    """
-
-    def test_correspondant_rh(self):
-        """
-        Un correspodant RH peut ajouter un employé
-        """
-        email = "0@test.auf"
-        
-        u = User.objects.get(email=email)
-        groups.grp_correspondants_rh.user_set.add(u)
-        groups.grp_correspondants_rh.save()
-
-        credentials = {'username': email, 'password': self.password}
-        url = reverse('admin:rh_employe_add')
-        self.assertTrue(self.client.login(**credentials), "login failed")
-        self._test_acces_ok(url)
-
-    def test_administrateur_regional(self):
-        """
-        Un administrateur peut ajouter un employé
-        """
-        email = "0@test.auf"
-        
-        u = User.objects.get(email=email)
-        groups.grp_administrateurs.user_set.add(u)
-        groups.grp_administrateurs.save()
-
-        credentials = {'username': email, 'password': self.password}
-        url = reverse('admin:rh_employe_add')
-        self.assertTrue(self.client.login(**credentials), "login failed")
-        self._test_acces_ok(url)
-
-    def test_directeur_bureau(self):
-        """
-        Un directeur de bureau peut ajouter un employé
-        """
-        email = "0@test.auf"
-        
-        u = User.objects.get(email=email)
-        groups.grp_directeurs_bureau.user_set.add(u)
-        groups.grp_directeurs_bureau.save()
-
-        credentials = {'username': email, 'password': self.password}
-        url = reverse('admin:rh_employe_add')
-        self.assertTrue(self.client.login(**credentials), "login failed")
-        self._test_acces_ok(url)
-
-    def test_drh(self):
-        """
-        Un DRH peut ajouter un employé
-        """
-        email = "0@test.auf"
-        
-        u = User.objects.get(email=email)
-        groups.grp_drh.user_set.add(u)
-        groups.grp_drh.save()
-
-        credentials = {'username': email, 'password': self.password}
-        url = reverse('admin:rh_employe_add')
-        self.assertTrue(self.client.login(**credentials), "login failed")
-        self._test_acces_ok(url)
-
-    def test_drh2(self):
-        """
-        Un DRH (2ieme niveau) peut ajouter un employé
-        """
-        email = "0@test.auf"
-        
-        u = User.objects.get(email=email)
-        groups.grp_drh2.user_set.add(u)
-        groups.grp_drh2.save()
-
-        credentials = {'username': email, 'password': self.password}
-        url = reverse('admin:rh_employe_add')
-        self.assertTrue(self.client.login(**credentials), "login failed")
-        self._test_acces_ok(url)
+from project.rh.test.employe import *