ajout de marquage traité pour les rapports de modif
[auf_rh_dae.git] / project / rh / historique.py
CommitLineData
8e26a99b
OL
1# -*- coding: utf-8 -*-
2
3from django.core.urlresolvers import reverse
edbc9e37
OL
4from django import forms
5from django.db import models
6from reversion.models import Revision
7
8class ModificationTraite(models.Model):
9 """
10 Classe utilisée pour marquer les révisions de reversion traitée par
11 les DRH.
12 """
13 revision = models.ForeignKey('reversion.Revision')
14
8e26a99b
OL
15
16def format_revisions(qs):
8e26a99b
OL
17 results = []
18 for rev in qs:
3d6759a8
OL
19
20 # Dans une révision, on loop dans les versions associées, pour trouver
21 # un modèle qui dispose d'une admin (à priori, le parent) dans le cas
22 # des objets composés
0efceb2f
OL
23 change_url = None
24 history_url = None
25 type = None
26 objet = None
8e26a99b 27 for v in rev.version_set.all():
3d6759a8 28
8e26a99b 29 try:
3d6759a8
OL
30 change_url = reverse('admin:rh_%s_change' % v.content_type.model,
31 args=(v.object.id, ))
32 history_url = reverse('admin:rh_%s_history' % v.content_type.model,
8e26a99b
OL
33 args=(v.object.id, ))
34 type = v.content_type
35 objet = v.object
36 break
37 except:
0efceb2f
OL
38 continue
39
8e26a99b 40 results.append({
edbc9e37 41 'id': rev.id,
df66753e 42 'date_created': rev.date_created.strftime("%d-%m-%Y %H:%M:%S"),
45c66f19 43 'short_date_created': rev.date_created.strftime("%d-%m-%Y"),
8e26a99b
OL
44 'user': rev.user,
45 'comment': rev.comment,
3d6759a8
OL
46 'change_url': change_url,
47 'history_url': history_url,
45c66f19 48 'type': unicode(type).capitalize(),
8e26a99b
OL
49 'objet': objet,
50
51 })
52 return results
edbc9e37
OL
53
54def get_active_revisions():
55 ids_revisions_traitees = [m.revision.id for m in
56 ModificationTraite.objects.all()]
57 return format_revisions(
58 Revision.objects.
59 exclude(user__isnull=True).
60 exclude(id__in=ids_revisions_traitees).
61 order_by('-date_created'))
62
63
64class TodoForm(forms.Form):
65 items = forms.MultipleChoiceField("Les items traités",
66 widget=forms.CheckboxSelectMultiple)
67
68 def __init__(self, *args, **kwargs):
69 self.revisions = kwargs.pop('revisions')
70 super(TodoForm, self).__init__(*args, **kwargs)
71 self.fields['items'].choices = [(r['id'], r['id']) for r in self.revisions]
72
73