[#3302] lien poste sur organig + reorg perm reg
[auf_rh_dae.git] / project / groups.py
CommitLineData
3f5cbabe
OL
1# -*- encoding: utf-8 -*-
2
3from django.contrib.auth.models import Group
afd3be54 4import auf.django.references.models as ref
3f5cbabe
OL
5
6def safe_create_groupe(name):
7 """
8 Création d'un groupe prédéfini. Retourne None, quand la création
9 ne peut se faire. (C'est le cas au syncdb, quand la table de groupe
10 n'a pas été crée encore).
11 """
12 try:
13 grp, created = Group.objects.get_or_create(name=name)
14 except Exception, e:
3f5cbabe
OL
15 return None
16 return grp
17
940c9dd8
OL
18CORRESPONDANT_RH = 'Correspondants RH'
19ADMINISTRATEURS ='Administrateurs'
20DIRECTEUR_DE_BUREAU = 'Directeurs de bureau'
21DRH_NIVEAU_1 = 'DRH'
22DRH_NIVEAU_2 = 'DRH-2'
23ACCIOR = 'ACCIOR'
24ABF = 'ABF'
25HAUTE_DIRECTION = 'Haute direction'
26SERVICE_UTILISATEURS = 'Service utilisateurs'
27
3f5cbabe 28# Groupes impliqués dans le Worflow
940c9dd8
OL
29grp_correspondants_rh = safe_create_groupe(name=CORRESPONDANT_RH)
30grp_administrateurs = safe_create_groupe(name=ADMINISTRATEURS)
31grp_directeurs_bureau = safe_create_groupe(name=DIRECTEUR_DE_BUREAU)
32grp_drh = safe_create_groupe(name=DRH_NIVEAU_1)
33grp_drh2 = safe_create_groupe(name=DRH_NIVEAU_2)
34grp_accior = safe_create_groupe(name=ACCIOR)
35grp_abf = safe_create_groupe(name=ABF)
36grp_haute_direction = safe_create_groupe(name=HAUTE_DIRECTION)
37grp_service_utilisateurs = safe_create_groupe(name=SERVICE_UTILISATEURS)
afd3be54
DB
38
39def get_employe_from_user(user):
40 """
41 Retourne un employé AUF à partir de son user Django.
42 """
43 try:
44 employe = ref.Authentification.objects.get(courriel=user.email).id
45 # ajouter coordonnées via ref.Employe? (courriel, tel, etc.)
46 except:
47 raise Exception(u"L'employé avec le courriel %s n'a pas été trouvé dans le référentiel." % user.email)
48 return employe
49
50def is_user_dans_services_centraux(user):
51 employe = get_employe_from_user(user)
52 if employe.id == 12: # monique chéry gère les DAE des amériques
53 return False
54 return employe.implantation_id in (15, 19)
55
56def is_user_dans_region(user):
57 employe = get_employe_from_user(user)
58 return not is_user_dans_services_centraux(user)