1 # -*- coding: utf-8 -*-
3 from django
.core
.urlresolvers
import reverse
4 from django
import forms
5 from django
.db
import models
6 from reversion
.models
import Revision
8 class ModificationTraite(models
.Model
):
10 Classe utilisée pour marquer les révisions de reversion traitée par
13 revision
= models
.ForeignKey('reversion.Revision')
16 def format_revisions(qs
):
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
28 for v
in rev
.version_set
.all():
31 klass
= v
.content_type
.model_class()
33 objet
= klass
.objects
.get(id=id)
34 change_url
= reverse('admin:%s_%s_change' %
35 (v
.content_type
.app_label
, v
.content_type
.model
),
37 history_url
= reverse('admin:%s_%s_history' %
38 (v
.content_type
.app_label
, v
.content_type
.model
),
40 type = "%s %s" % (v
.content_type
.app_label
, v
.content_type
.model
)
47 'date_created': rev
.date_created
.strftime("%d-%m-%Y %H:%M:%S"),
48 'short_date_created': rev
.date_created
.strftime("%d-%m-%Y"),
50 'comment': rev
.comment
,
51 'change_url': change_url
,
52 'history_url': history_url
,
59 def get_active_revisions():
60 ids_revisions_traitees
= [m
.revision
.id for m
in
61 ModificationTraite
.objects
.all()]
62 return format_revisions(
64 exclude(user__isnull
=True).
65 exclude(id__in
=ids_revisions_traitees
).
66 order_by('-date_created'))
69 class TodoForm(forms
.Form
):
70 items
= forms
.MultipleChoiceField("Les items traités",
71 widget
=forms
.CheckboxSelectMultiple
)
73 def __init__(self
, *args
, **kwargs
):
74 self
.revisions
= kwargs
.pop('revisions')
75 super(TodoForm
, self
).__init__(*args
, **kwargs
)
76 self
.fields
['items'].choices
= [(r
['id'], r
['id']) for r
in self
.revisions
]