Multiples zones par user implémenté
[auf_rh_dae.git] / project / groups.py
1 # -*- encoding: utf-8 -*-
2
3 from django.core.exceptions import ObjectDoesNotExist
4
5 CORRESPONDANT_RH = 'Correspondants RH'
6 ADMINISTRATEURS = 'Administrateurs'
7 DIRECTEUR_DE_BUREAU = 'Directeurs de bureau'
8 DRH_NIVEAU_1 = 'DRH'
9 DRH_NIVEAU_2 = 'DRH-2'
10 ACCIOR = 'ACCIOR'
11 ABF = 'ABF'
12 FINANCE = 'Finance'
13 HAUTE_DIRECTION = 'Haute direction'
14 SERVICE_UTILISATEURS = 'Service utilisateurs'
15
16
17 def get_zones_from_user(user):
18 from auf.django.references import models as ref
19 try:
20 profile = user.profile
21 except ObjectDoesNotExist:
22 return ref.ZoneAdministrative.objects.none()
23 else:
24 return profile.zones_administratives.all()
25
26
27 def get_employe_from_user(user):
28 """
29 Retourne un employé AUF à partir de son user Django.
30 """
31 import auf.django.references.models as ref
32 try:
33 employe = ref.Employe.objects.get(courriel=user.email)
34 except ObjectDoesNotExist:
35 raise Exception(u"L'employé avec le courriel %s n'a pas \
36 été trouvé dans le référentiel." % user.email)
37 return employe
38
39
40 def is_user_dans_services_centraux(user):
41 # Set de codes de zones.
42 zones = set()
43
44 # Set de comparaison (services centraux Montreal et Paris)
45 central_zones = set(['SCM', 'SCP'])
46
47 # Ajout de zones du profil, si existantes.
48 try:
49 profile = user.profile
50 except ObjectDoesNotExist:
51 pass
52 else:
53 zones.update([
54 x[0] for x in profile.zones_administratives
55 .all().values_list('code')
56 ])
57
58 return len(central_zones.intersection(zones)) > 0
59
60
61 def is_user_dans_region(user):
62 return not is_user_dans_services_centraux(user)