Commit | Line | Data |
---|---|---|
0b2edb6e OL |
1 | # -*- encoding: utf-8 -*- |
2 | ||
bbf31587 EMS |
3 | import os |
4 | ||
5579d48d | 5 | from django import template |
75f0e87b | 6 | |
3383b2d1 | 7 | from project import groups |
d41d8e47 | 8 | |
286d0aa9 | 9 | from project.dae.workflow import ETATS_EDITABLE |
d41d8e47 | 10 | |
5579d48d OL |
11 | |
12 | register = template.Library() | |
13 | ||
14 | @register.filter | |
3a62d4fe | 15 | def test_membre_drh(user): |
3383b2d1 OL |
16 | grps = [g.name for g in user.groups.all()] |
17 | if groups.DRH_NIVEAU_1 in grps or groups.DRH_NIVEAU_2 in grps: | |
2c8d834d OL |
18 | return True |
19 | else: | |
20 | return False | |
3a62d4fe OL |
21 | |
22 | @register.filter | |
5579d48d | 23 | def peut_ajouter(user): |
3383b2d1 OL |
24 | for g in [g.name for g in user.groups.all()]: |
25 | if g in (groups.ADMINISTRATEURS, | |
26 | groups.CORRESPONDANT_RH, | |
27 | groups.DRH_NIVEAU_1, | |
28 | groups.DRH_NIVEAU_2): | |
5579d48d OL |
29 | return True |
30 | return False | |
31 | ||
286d0aa9 | 32 | @register.filter |
67c10912 | 33 | def peut_importer(user): |
3383b2d1 | 34 | return groups.DRH_NIVEAU_1 in [g.name for g in user.groups.all()] |
67c10912 OL |
35 | |
36 | @register.filter | |
e7ee680f OL |
37 | def est_editable(obj, user): |
38 | klass = obj.__class__ | |
3383b2d1 | 39 | groupes_users = [g.name for g in user.groups.all()] |
c511cd1f | 40 | if obj.etat in ETATS_EDITABLE and \ |
3383b2d1 OL |
41 | (obj in klass.objects.mes_choses_a_faire(user).all() or \ |
42 | groups.DRH_NIVEAU_1 in groupes_users or \ | |
43 | groups.DRH_NIVEAU_2 in groupes_users): | |
286d0aa9 OL |
44 | return True |
45 | else: | |
46 | return False | |
47 | ||
0b2edb6e | 48 | @register.filter |
bbf31587 EMS |
49 | def basename(path): |
50 | return os.path.basename(path) | |
428e3c0b EMS |
51 | |
52 | @register.inclusion_tag('dae/sort_header.html', takes_context=True) | |
53 | def sort_header(context, field, title): | |
54 | """Génère une entête qu'on peut cliquer pour trier la colonne correspondante dans une table.""" | |
55 | qs = context['request'].GET.copy() | |
56 | current = qs.get('tri', None) | |
57 | if current == field: | |
58 | cls = 'header headerSortUp' | |
59 | qs['tri'] = '-' + field | |
60 | elif current == '-' + field: | |
61 | cls = 'header headerSortDown' | |
62 | qs['tri'] = field | |
63 | else: | |
64 | cls = 'header' | |
65 | qs['tri'] = field | |
66 | return {'title': title, 'qs': qs.urlencode(), 'cls': cls} | |
67 | ||
68 | @register.inclusion_tag('dae/pagination.html', takes_context=True) | |
69 | def pagination(context, page): | |
70 | """Génère la navigation permettant de se promener de page en page.""" | |
71 | qs = context['request'].GET | |
72 | previous_qs = qs.copy() | |
73 | previous_qs['page'] = page.previous_page_number() | |
74 | next_qs = qs.copy() | |
75 | next_qs['page'] = page.next_page_number() | |
76 | return {'page': page, 'previous_qs': previous_qs.urlencode(), 'next_qs': next_qs.urlencode()} |