'remplacement_de': 'dossiers',
}, superclass=DossierForm)
+ def has_add_permission(self, request):
+ user_groups = request.user.groups.all()
+ if groups.grp_correspondants_rh in user_groups or \
+ groups.grp_administrateurs in user_groups or \
+ groups.grp_directeurs_bureau in user_groups or \
+ in_drh_or_admin(request.user):
+ return True
+ return False
+
+ def has_delete_permission(self, request, obj=None):
+ return in_drh_or_admin(request.user)
+
def lookup_allowed(self, key, value):
if key in (
'employe__nom__istartswith',
PosteComparaisonInline,
PosteCommentaireInline, )
+ def has_add_permission(self, request):
+ user_groups = request.user.groups.all()
+ if groups.grp_correspondants_rh in user_groups or \
+ groups.grp_administrateurs in user_groups or \
+ groups.grp_directeurs_bureau in user_groups or \
+ in_drh_or_admin(request.user):
+ return True
+ return False
+
+ def has_delete_permission(self, request, obj=None):
+ return in_drh_or_admin(request.user)
+
def lookup_allowed(self, key, value):
return key in (
'date_debut__gte', 'date_debut__isnull', 'date_fin__lte',
print "* %s: %s" % (f, m)
print ""
+def doc_permissions():
+ from project.rh import tests
+ test_classes = [klass for k, klass in tests.__dict__.items() if
+ k.endswith('Test')]
+ for klass in test_classes:
+ print klass.__name__
+ print "="*len(klass.__name__)
+ methods = [m for m in klass.__dict__ if m.startswith('test_')]
+ for m in methods:
+ fct = getattr(klass, m)
+ info = "* %s : %s" % (m, fct.__doc__.strip())
+ print info
+ print ""
class Command(BaseCommand):
def handle(self, *args, **options):
+ if args[0] == "doc_permissions":
+ doc_permissions()
if args[0] == "check_data":
check_employes()
from django.test import TestCase
from project.rh import models as rh
-def fake_get_employe_from_user(user):
- """
- Pour les tests on ne peut pas changer la table d'autentification
- """
- print "GET EMPLOYE"
- return ref.Employe.objects.get(id=user.id)
-
-import project.dae.utils
-project.dae.utils.get_employe_from_user = fake_get_employe_from_user
class RhTest(TestCase):
--- /dev/null
+# -*- coding: utf-8 -*-
+
+from django.core.urlresolvers import reverse
+from project.rh.test.common import RhTest
+
+class DossierAddTest(RhTest):
+ """
+ Test l'ajout d'un dossier
+ """
+ url = reverse('admin:rh_dossier_add')
+
+ def test_anonyme(self):
+ """
+ Un anonyme ne peut pas créer d'dossier
+ """
+ self._test_anonyme()
+ self._test_acces_ko(self.url)
+
+ def test_correspondant_rh(self):
+ """
+ Un correspodant RH peut ajouter un dossier
+ """
+ self._test_correspondant_rh()
+ self._test_acces_ok(self.url)
+
+ def test_administrateur_regional(self):
+ """
+ Un administrateur peut ajouter un dossier
+ """
+ self._test_administrateur_regional()
+ self._test_acces_ok(self.url)
+
+ def test_directeur_bureau(self):
+ """
+ Un directeur de bureau peut ajouter un dossier
+ """
+ self._test_directeur_bureau()
+ self._test_acces_ok(self.url)
+
+ def test_drh(self):
+ """
+ Un DRH peut ajouter un dossier
+ """
+ self._test_drh()
+ self._test_acces_ok(self.url)
+
+ def test_drh2(self):
+ """
+ Un DRH (2ieme niveau) peut ajouter un dossier
+ """
+ self._test_drh2()
+ self._test_acces_ok(self.url)
+
+ def _test_grp_accior(self):
+ """
+ Un membre de l'ACCIOR ne peut pas ajouter un dossier
+ """
+ self._test_grp_accior()
+ self._test_acces_ko(self.url)
+
+ def _test_grp_abf(self):
+ """
+ Un membre de l'ABF ne peut pas ajouter un dossier
+ """
+ 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 ajouter un dossier
+ """
+ self._test_grp_haute_direction()
+ self._test_acces_ko(self.url)
+
+ def _test_grp_service_utilisateurs(self):
+ """
+ Un membre du groupe service utilisateur ne peut pas ajouter un dossier
+ """
+ self._test_grp_service_utilisateurs()
+ self._test_acces_ko(self.url)
+
+
+class DossierDeleteTest(RhTest):
+ """
+ Test la suppression d'un dossier
+ """
+
+ def setUp(self):
+ super(DossierDeleteTest, self).setUp()
+ self.url = reverse('admin:rh_dossier_delete',
+ args=[self.dossier_cnf_ngaoundere.id])
+
+ def test_anonyme(self):
+ """
+ Un anonyme ne peut pas supprimer un dossier
+ """
+ self._test_anonyme()
+ self._test_acces_ko(self.url)
+
+ def test_correspondant_rh(self):
+ """
+ Un correspodant RH ne peut pas supprimer un dossier
+ """
+ self._test_correspondant_rh()
+ self._test_acces_ko(self.url)
+
+ def test_administrateur_regional(self):
+ """
+ Un administrateur ne peut pas supprimer un dossier
+ """
+ self._test_administrateur_regional()
+ self._test_acces_ko(self.url)
+
+ def test_directeur_bureau(self):
+ """
+ Un directeur de bureau ne peut pas supprimer un dossier
+ """
+ self._test_directeur_bureau()
+ self._test_acces_ko(self.url)
+
+ def test_drh(self):
+ """
+ Un DRH peut supprimer un dossier
+ """
+ self._test_drh()
+ self._test_acces_ok(self.url)
+
+ def test_drh2(self):
+ """
+ Un DRH (2ieme niveau) peut supprimer un dossier
+ """
+ self._test_drh2()
+ self._test_acces_ok(self.url)
+
+ def _test_grp_accior(self):
+ """
+ Un membre de l'ACCIOR ne peut pas supprimer un dossier
+ """
+ self._test_grp_accior()
+ self._test_acces_ko(self.url)
+
+ def _test_grp_abf(self):
+ """
+ Un membre de l'ABF ne peut pas supprimer un dossier
+ """
+ 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 supprimer un dossier
+ """
+ self._test_grp_haute_direction()
+ self._test_acces_ko(self.url)
+
+ def _test_grp_service_utilisateurs(self):
+ """
+ Un membre du groupe service utilisateur ne peut pas supprimer un dossier
+ """
+ self._test_grp_service_utilisateurs()
+ self._test_acces_ko(self.url)
+
+
+class DossierListTest(RhTest):
+ """
+ Test la suppression d'un dossier
+ """
+
+ def setUp(self):
+ super(DossierListTest, self).setUp()
+ self.url = reverse('admin:rh_dossier_changelist')
+
+ def test_anonyme(self):
+ """
+ Un anonyme ne peut pas voir les dossiers
+ """
+ self._test_anonyme()
+ self._test_acces_ko(self.url)
+
+ def test_correspondant_rh(self):
+ """
+ Un correspodant RH peut voir les dossiers
+ """
+ self._test_correspondant_rh()
+ self._test_acces_ok(self.url)
+ qs = self.client.get(self.url).context['cl'].query_set
+ self.assertEqual(len(qs), 2)
+
+ def test_administrateur_regional(self):
+ """
+ Un administrateur peut voir les dossiers de sa région
+ """
+ self._test_administrateur_regional()
+ self._test_acces_ok(self.url)
+ qs = self.client.get(self.url).context['cl'].query_set
+ self.assertEqual(len(qs), 2)
+
+ def test_directeur_bureau(self):
+ """
+ Un directeur de bureau peut voir les dossiers de sa région
+ """
+ self._test_directeur_bureau()
+ self._test_acces_ok(self.url)
+ qs = self.client.get(self.url).context['cl'].query_set
+ self.assertEqual(len(qs), 2)
+
+ def test_drh(self):
+ """
+ Un DRH peut voir tous les dossiers
+ """
+ self._test_drh()
+ self._test_acces_ok(self.url)
+ qs = self.client.get(self.url).context['cl'].query_set
+ self.assertEqual(len(qs), 4)
+
+ def test_drh2(self):
+ """
+ Un DRH (2ieme niveau) peut voir tous les dossiers
+ """
+ self._test_drh2()
+ self._test_acces_ok(self.url)
+
+ def _test_grp_accior(self):
+ """
+ Un membre de l'ACCIOR ne peut pas voir les dossiers
+ """
+ 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 dossiers
+ """
+ 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 dossiers
+ """
+ self._test_grp_haute_direction()
+ self._test_acces_ko(self.url)
+
+ def _test_grp_service_utilisateurs(self):
+ """
+ Un membre du groupe service utilisateur peut voir les dossiers
+ """
+ self._test_grp_service_utilisateurs()
+ self._test_acces_ko(self.url)
def _test_grp_service_utilisateurs(self):
"""
- Un membre du groupe service utilisateur voir les employés
+ Un membre du groupe service utilisateur peut voir les employés
"""
self._test_grp_service_utilisateurs()
self._test_acces_ko(self.url)
--- /dev/null
+# -*- coding: utf-8 -*-
+
+from django.core.urlresolvers import reverse
+from project.rh.test.common import RhTest
+
+class PosteAddTest(RhTest):
+ """
+ Test l'ajout d'un poste
+ """
+ url = reverse('admin:rh_poste_add')
+
+ def test_anonyme(self):
+ """
+ Un anonyme ne peut pas créer d'poste
+ """
+ self._test_anonyme()
+ self._test_acces_ko(self.url)
+
+ def test_correspondant_rh(self):
+ """
+ Un correspodant RH peut ajouter un poste
+ """
+ self._test_correspondant_rh()
+ self._test_acces_ok(self.url)
+
+ def test_administrateur_regional(self):
+ """
+ Un administrateur peut ajouter un poste
+ """
+ self._test_administrateur_regional()
+ self._test_acces_ok(self.url)
+
+ def test_directeur_bureau(self):
+ """
+ Un directeur de bureau peut ajouter un poste
+ """
+ self._test_directeur_bureau()
+ self._test_acces_ok(self.url)
+
+ def test_drh(self):
+ """
+ Un DRH peut ajouter un poste
+ """
+ self._test_drh()
+ self._test_acces_ok(self.url)
+
+ def test_drh2(self):
+ """
+ Un DRH (2ieme niveau) peut ajouter un poste
+ """
+ self._test_drh2()
+ self._test_acces_ok(self.url)
+
+ def _test_grp_accior(self):
+ """
+ Un membre de l'ACCIOR ne peut pas ajouter un poste
+ """
+ self._test_grp_accior()
+ self._test_acces_ko(self.url)
+
+ def _test_grp_abf(self):
+ """
+ Un membre de l'ABF ne peut pas ajouter un poste
+ """
+ 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 ajouter un poste
+ """
+ self._test_grp_haute_direction()
+ self._test_acces_ko(self.url)
+
+ def _test_grp_service_utilisateurs(self):
+ """
+ Un membre du groupe service utilisateur ne peut pas ajouter un poste
+ """
+ self._test_grp_service_utilisateurs()
+ self._test_acces_ko(self.url)
+
+
+class PosteDeleteTest(RhTest):
+ """
+ Test la suppression d'un poste
+ """
+
+ def setUp(self):
+ super(PosteDeleteTest, self).setUp()
+ self.url = reverse('admin:rh_poste_delete',
+ args=[self.poste_cnf_ngaoundere.id])
+
+ def test_anonyme(self):
+ """
+ Un anonyme ne peut pas supprimer un poste
+ """
+ self._test_anonyme()
+ self._test_acces_ko(self.url)
+
+ def test_correspondant_rh(self):
+ """
+ Un correspodant RH ne peut pas supprimer un poste
+ """
+ self._test_correspondant_rh()
+ self._test_acces_ko(self.url)
+
+ def test_administrateur_regional(self):
+ """
+ Un administrateur ne peut pas supprimer un poste
+ """
+ self._test_administrateur_regional()
+ self._test_acces_ko(self.url)
+
+ def test_directeur_bureau(self):
+ """
+ Un directeur de bureau ne peut pas supprimer un poste
+ """
+ self._test_directeur_bureau()
+ self._test_acces_ko(self.url)
+
+ def test_drh(self):
+ """
+ Un DRH peut supprimer un poste
+ """
+ self._test_drh()
+ self._test_acces_ok(self.url)
+
+ def test_drh2(self):
+ """
+ Un DRH (2ieme niveau) peut supprimer un poste
+ """
+ self._test_drh2()
+ self._test_acces_ok(self.url)
+
+ def _test_grp_accior(self):
+ """
+ Un membre de l'ACCIOR ne peut pas supprimer un poste
+ """
+ self._test_grp_accior()
+ self._test_acces_ko(self.url)
+
+ def _test_grp_abf(self):
+ """
+ Un membre de l'ABF ne peut pas supprimer un poste
+ """
+ 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 supprimer un poste
+ """
+ self._test_grp_haute_direction()
+ self._test_acces_ko(self.url)
+
+ def _test_grp_service_utilisateurs(self):
+ """
+ Un membre du groupe service utilisateur ne peut pas supprimer un poste
+ """
+ self._test_grp_service_utilisateurs()
+ self._test_acces_ko(self.url)
+
+
+class PosteListTest(RhTest):
+ """
+ Test la suppression d'un poste
+ """
+
+ def setUp(self):
+ super(PosteListTest, self).setUp()
+ self.url = reverse('admin:rh_poste_changelist')
+
+ def test_anonyme(self):
+ """
+ Un anonyme ne peut pas voir les postes
+ """
+ self._test_anonyme()
+ self._test_acces_ko(self.url)
+
+ def test_correspondant_rh(self):
+ """
+ Un correspodant RH peut voir les postes
+ """
+ self._test_correspondant_rh()
+ self._test_acces_ok(self.url)
+ qs = self.client.get(self.url).context['cl'].query_set
+ self.assertEqual(len(qs), 2)
+
+ def test_administrateur_regional(self):
+ """
+ Un administrateur peut voir les postes de sa région
+ """
+ self._test_administrateur_regional()
+ self._test_acces_ok(self.url)
+ qs = self.client.get(self.url).context['cl'].query_set
+ self.assertEqual(len(qs), 2)
+
+ def test_directeur_bureau(self):
+ """
+ Un directeur de bureau peut voir les postes de sa région
+ """
+ self._test_directeur_bureau()
+ self._test_acces_ok(self.url)
+ qs = self.client.get(self.url).context['cl'].query_set
+ self.assertEqual(len(qs), 2)
+
+ def test_drh(self):
+ """
+ Un DRH peut voir tous les postes
+ """
+ self._test_drh()
+ self._test_acces_ok(self.url)
+ qs = self.client.get(self.url).context['cl'].query_set
+ self.assertEqual(len(qs), 4)
+
+ def test_drh2(self):
+ """
+ Un DRH (2ieme niveau) peut voir tous les postes
+ """
+ self._test_drh2()
+ self._test_acces_ok(self.url)
+
+ def _test_grp_accior(self):
+ """
+ Un membre de l'ACCIOR ne peut pas voir les postes
+ """
+ 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 postes
+ """
+ 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 postes
+ """
+ self._test_grp_haute_direction()
+ self._test_acces_ko(self.url)
+
+ def _test_grp_service_utilisateurs(self):
+ """
+ Un membre du groupe service utilisateur ne peut pas voir les postes
+ """
+ self._test_grp_service_utilisateurs()
+ self._test_acces_ko(self.url)
from project.rh.test.employe import *
+from project.rh.test.dossier import *
+from project.rh.test.poste import *