ajout de marquage traité pour les rapports de modif
[auf_rh_dae.git] / project / rh / historique.py
1 # -*- coding: utf-8 -*-
2
3 from django.core.urlresolvers import reverse
4 from django import forms
5 from django.db import models
6 from reversion.models import Revision
7
8 class 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
15
16 def format_revisions(qs):
17 results = []
18 for rev in qs:
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
23 change_url = None
24 history_url = None
25 type = None
26 objet = None
27 for v in rev.version_set.all():
28
29 try:
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,
33 args=(v.object.id, ))
34 type = v.content_type
35 objet = v.object
36 break
37 except:
38 continue
39
40 results.append({
41 'id': rev.id,
42 'date_created': rev.date_created.strftime("%d-%m-%Y %H:%M:%S"),
43 'short_date_created': rev.date_created.strftime("%d-%m-%Y"),
44 'user': rev.user,
45 'comment': rev.comment,
46 'change_url': change_url,
47 'history_url': history_url,
48 'type': unicode(type).capitalize(),
49 'objet': objet,
50
51 })
52 return results
53
54 def 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
64 class 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