Done with feature
[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='Recrutement',
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.OffreEmploiEvaluateur',
50 'project.recrutement.models.CourrielTemplate',
51 )
52 ),
53 modules.ModelList(
54 title='Gestion des personnels',
55 models=(
56 'project.rh.models.AyantDroit',
57 'project.rh.models.Dossier',
58 'project.rh.models.DossierInactif',
59 'project.rh.models.Employe',
60 'project.rh.models.EmployeInactif',
61 'project.rh.models.Poste',
62 )
63 ),
64 modules.ModelList(
65 title='Log',
66 models=(
67 'project.rh.models.ChangementPersonnel',
68 )
69 ),
70 ]
71 ))
72
73
74 if in_drh_or_admin(request.user):
75 revisions = get_active_revisions()[:10]
76 children = []
77 for rev in revisions:
78 date = rev['short_date_created']
79 user = u"<span style='font-weight: bold;'>%s</span>" % rev['user']
80 if rev['type'] is None or rev['objet'] is None:
81 titre = u"""<span style='color:black;'>[%s] %s</span>
82 commentaire : %s """ % (date, user, rev['comment'])
83 children.append({
84 'title': titre,
85 'url': reverse('rhr_historique_des_modifications'),
86 'external': False,
87 })
88 else:
89 type = u"<span style='font-decoration: underligne;'>%s</span>" % rev['type']
90 titre = u"""<span style='color:black;'>[%s] %s a modifié
91 un(e) %s :</span> %s""" % (date, user, type, rev['objet'], )
92 children.append({
93 'title': titre,
94 'url': rev['history_url'],
95 'external': False,
96 })
97 self.children.append(modules.LinkList(
98 title='10 dernières modifications',
99 children=children,)
100 )
101
102
103
104 # append an app list module for "Configuration"
105 self.children.append(modules.AppList(
106 _('Configuration'),
107 models=(
108 'project.rh.models.Classement',
109 'project.rh.models.Devise',
110 'project.rh.models.CategorieEmploi',
111 'project.rh.models.FamilleProfessionnelle',
112 'project.rh.models.OrganismeBstg',
113 'project.rh.models.Responsable',
114 'project.rh.models.Service',
115 'project.rh.models.Statut',
116 'project.rh.models.TauxChange',
117 'project.rh.models.TypeContrat',
118 'project.rh.models.TypePoste',
119 'project.rh.models.TypeRevalorisation',
120 'project.rh.models.TypeRemuneration',
121 'project.rh.models.ValeurPoint',
122 'project.rh.models.ChangementPersonnelNotifications',
123 ),
124 exclude=('django.contrib.*',),
125 ))
126
127 # append an app list module for "Inter-systèmes"
128 self.children.append(modules.AppList(
129 _(u'Inter-systèmes'),
130 models=(
131 'project.rh.models.ResponsableImplantationProxy',
132 ),
133 ))
134
135 # append an app list module for "Administration"
136 self.children.append(modules.AppList(
137 _('Administration'),
138 models=(
139 'django.contrib.*',
140 ),
141 ))
142
143 class CustomAppIndexDashboard(AppIndexDashboard):
144 """
145 Custom app index dashboard for project.
146 """
147
148 # we disable title because its redundant with the model list module
149 title = ''
150
151 def __init__(self, *args, **kwargs):
152 AppIndexDashboard.__init__(self, *args, **kwargs)
153
154 def init_with_context(self, context):
155 """
156 Use this method if you need to access the request context.
157 """
158 if self.app_title != 'Rh':
159 # append a model list module and a recent actions module
160 self.children += [
161 modules.ModelList(self.app_title, self.models),
162 ]
163
164 return
165
166 # append an app list module for "Application"
167 self.children.append(modules.AppList(
168 _('Application'),
169 models=(
170 'project.rh.models.AyantDroit',
171 'project.rh.models.Dossier',
172 'project.rh.models.DossierInactif',
173 'project.rh.models.Employe',
174 'project.rh.models.EmployeInactif',
175 'project.rh.models.Poste',
176 ),
177 ))
178
179 # append an app list module for "Configuration"
180 self.children.append(modules.AppList(
181 _('Configuration'),
182 models=(
183 'project.rh.models.Classement',
184 'project.rh.models.Devise',
185 'project.rh.models.CategorieEmploi',
186 'project.rh.models.FamilleProfessionnelle',
187 'project.rh.models.OrganismeBstg',
188 'project.rh.models.Responsable',
189 'project.rh.models.Service',
190 'project.rh.models.Statut',
191 'project.rh.models.TauxChange',
192 'project.rh.models.TypeContrat',
193 'project.rh.models.TypePoste',
194 'project.rh.models.TypeRevalorisation',
195 'project.rh.models.TypeRemuneration',
196 'project.rh.models.ValeurPoint',
197 ),
198 ))
199
200 # append an app list module for "Inter-systèmes"
201 self.children.append(modules.AppList(
202 _(u'Inter-systèmes'),
203 models=(
204 'project.rh.models.ResponsableImplantation',
205 ),
206 ))