Merge branch 'master' into recrutement
[auf_rh_dae.git] / project / dashboard.py
1 # -*- encoding: utf-8 -*
2
3 """
4 This file was generated with the customdashboard management command, it
5 contains the two classes for the main dashboard and app index dashboard.
6 You can customize these classes as you want.
7
8 To activate your index dashboard add the following to your settings.py::
9 ADMIN_TOOLS_INDEX_DASHBOARD = 'SIGMA.dashboard.CustomIndexDashboard'
10
11 And to activate the app index dashboard::
12 ADMIN_TOOLS_APP_INDEX_DASHBOARD = 'SIGMA.dashboard.CustomAppIndexDashboard'
13 """
14
15 from django.core.urlresolvers import reverse
16 from django.utils.translation import ugettext_lazy as _
17 from admin_tools.dashboard import modules, Dashboard, AppIndexDashboard
18 from project.decorators import in_drh_or_admin
19 from project.rh.historique import get_active_revisions
20
21 class CustomIndexDashboard(Dashboard):
22 """
23 Custom index dashboard for SGRH.
24 """
25 def init_with_context(self, context):
26 request = context['request']
27
28 # append an app list module for "Applications"
29 self.children.append(modules.Group(
30 _('Applications'),
31 display='stacked',
32 children=[
33 modules.ModelList(
34 title='Demande d\'autorisation d\'engagement',
35 models=(
36 'project.dae.models.*',
37 )
38 ),
39 modules.ModelList(
40 title='Gestion des candidatures',
41 models=(
42 'auf.django.emploi.models.OffreEmploi',
43 'project.recrutement.models.ProxyOffreEmploi',
44 'auf.django.emploi.models.Candidat',
45 'project.recrutement.models.ProxyCandidat',
46 'project.recrutement.models.CandidatEvaluation',
47 'project.recrutement.models.MesCandidatEvaluation',
48 'project.recrutement.models.Evaluateur',
49 'project.recrutement.models.CourrielTemplate',
50 )
51 ),
52 modules.ModelList(
53 title='Gestion des personnels',
54 models=(
55 'project.rh.models.AyantDroit',
56 'project.rh.models.Dossier',
57 'project.rh.models.DossierInactif',
58 'project.rh.models.Employe',
59 'project.rh.models.EmployeInactif',
60 'project.rh.models.Poste',
61 )
62 ),
63 ]
64 ))
65
66 if in_drh_or_admin(request.user):
67 revisions = get_active_revisions()[:10]
68 children = []
69 for rev in revisions:
70 date = rev['short_date_created']
71 user = u"<span style='font-weight: bold;'>%s</span>" % rev['user']
72 if rev['type'] is None or rev['objet'] is None:
73 titre = u"""<span style='color:black;'>[%s] %s</span>
74 commentaire : %s """ % (date, user, rev['comment'])
75 children.append({
76 'title': titre,
77 'url': reverse('rhr_historique_des_modifications'),
78 'external': False,
79 })
80 else:
81 type = u"<span style='font-decoration: underligne;'>%s</span>" % rev['type']
82 titre = u"""<span style='color:black;'>[%s] %s a modifié
83 un(e) %s :</span> %s""" % (date, user, type, rev['objet'], )
84 children.append({
85 'title': titre,
86 'url': rev['history_url'],
87 'external': False,
88 })
89 self.children.append(modules.LinkList(
90 title='10 dernières modifications',
91 children=children,)
92 )
93
94
95
96 # append an app list module for "Configuration"
97 self.children.append(modules.AppList(
98 _('Configuration'),
99 models=(
100 'project.rh.models.Classement',
101 'project.rh.models.Devise',
102 'project.rh.models.CategorieEmploi',
103 'project.rh.models.FamilleProfessionnelle',
104 'project.rh.models.OrganismeBstg',
105 'project.rh.models.Responsable',
106 'project.rh.models.Service',
107 'project.rh.models.Statut',
108 'project.rh.models.TauxChange',
109 'project.rh.models.TypeContrat',
110 'project.rh.models.TypePoste',
111 'project.rh.models.TypeRevalorisation',
112 'project.rh.models.TypeRemuneration',
113 'project.rh.models.ValeurPoint',
114 ),
115 exclude=('django.contrib.*',),
116 ))
117
118 # append an app list module for "Inter-systèmes"
119 self.children.append(modules.AppList(
120 _(u'Inter-systèmes'),
121 models=(
122 'project.rh.models.ResponsableImplantationProxy',
123 ),
124 ))
125
126 # append an app list module for "Administration"
127 self.children.append(modules.AppList(
128 _('Administration'),
129 models=(
130 'django.contrib.*',
131 ),
132 ))
133
134 class CustomAppIndexDashboard(AppIndexDashboard):
135 """
136 Custom app index dashboard for project.
137 """
138
139 # we disable title because its redundant with the model list module
140 title = ''
141
142 def __init__(self, *args, **kwargs):
143 AppIndexDashboard.__init__(self, *args, **kwargs)
144
145 def init_with_context(self, context):
146 """
147 Use this method if you need to access the request context.
148 """
149 if self.app_title != 'Rh':
150 # append a model list module and a recent actions module
151 self.children += [
152 modules.ModelList(self.app_title, self.models),
153 ]
154
155 return
156
157 # append an app list module for "Application"
158 self.children.append(modules.AppList(
159 _('Application'),
160 models=(
161 'project.rh.models.AyantDroit',
162 'project.rh.models.Dossier',
163 'project.rh.models.DossierInactif',
164 'project.rh.models.Employe',
165 'project.rh.models.EmployeInactif',
166 'project.rh.models.Poste',
167 ),
168 ))
169
170 # append an app list module for "Configuration"
171 self.children.append(modules.AppList(
172 _('Configuration'),
173 models=(
174 'project.rh.models.Classement',
175 'project.rh.models.Devise',
176 'project.rh.models.CategorieEmploi',
177 'project.rh.models.FamilleProfessionnelle',
178 'project.rh.models.OrganismeBstg',
179 'project.rh.models.Responsable',
180 'project.rh.models.Service',
181 'project.rh.models.Statut',
182 'project.rh.models.TauxChange',
183 'project.rh.models.TypeContrat',
184 'project.rh.models.TypePoste',
185 'project.rh.models.TypeRevalorisation',
186 'project.rh.models.TypeRemuneration',
187 'project.rh.models.ValeurPoint',
188 ),
189 ))
190
191 # append an app list module for "Inter-systèmes"
192 self.children.append(modules.AppList(
193 _(u'Inter-systèmes'),
194 models=(
195 'project.rh.models.ResponsableImplantation',
196 ),
197 ))