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