[#3262] Mettre de l'ordre dans le dashboard
[auf_rh_dae.git] / project / groups.py
1 # -*- encoding: utf-8 -*-
2
3 from django.contrib.auth.models import Group
4 import auf.django.references.models as ref
5
6 def 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:
15 return None
16 return grp
17
18 CORRESPONDANT_RH = 'Correspondants RH'
19 ADMINISTRATEURS ='Administrateurs'
20 DIRECTEUR_DE_BUREAU = 'Directeurs de bureau'
21 DRH_NIVEAU_1 = 'DRH'
22 DRH_NIVEAU_2 = 'DRH-2'
23 ACCIOR = 'ACCIOR'
24 ABF = 'ABF'
25 HAUTE_DIRECTION = 'Haute direction'
26 SERVICE_UTILISATEURS = 'Service utilisateurs'
27
28 # Groupes impliqués dans le Worflow
29 grp_correspondants_rh = safe_create_groupe(name=CORRESPONDANT_RH)
30 grp_administrateurs = safe_create_groupe(name=ADMINISTRATEURS)
31 grp_directeurs_bureau = safe_create_groupe(name=DIRECTEUR_DE_BUREAU)
32 grp_drh = safe_create_groupe(name=DRH_NIVEAU_1)
33 grp_drh2 = safe_create_groupe(name=DRH_NIVEAU_2)
34 grp_accior = safe_create_groupe(name=ACCIOR)
35 grp_abf = safe_create_groupe(name=ABF)
36 grp_haute_direction = safe_create_groupe(name=HAUTE_DIRECTION)
37 grp_service_utilisateurs = safe_create_groupe(name=SERVICE_UTILISATEURS)
38
39 def 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
50 def 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
56 def is_user_dans_region(user):
57 employe = get_employe_from_user(user)
58 return not is_user_dans_services_centraux(user)