1 # -*- encoding: utf-8 -*-
4 from django
.contrib
import admin
5 from django
.contrib
import messages
6 from django
.shortcuts
import redirect
7 from models
import AUFMetadata
9 AUF_METADATA_READONLY_FIELDS
= ('supprime',
17 'user_desactivation', )
19 AUF_METADATA_FIELDSET_FIELDS
= ('date_creation', 'user_creation',
20 'date_modification', 'user_modification',
21 'date_activation', 'user_activation',
22 'date_desactivation', 'user_desactivation',)
24 class AUFMetadataInlineAdminMixin(object):
25 exclude
= AUF_METADATA_READONLY_FIELDS
28 class AUFMetadataAdminMixin(object):
30 Surcharge l'admin de base, pour setter automatiquement les metadata.
32 readonly_fields
= AUF_METADATA_READONLY_FIELDS
35 'classes': ('collapse',),
36 'fields': AUF_METADATA_FIELDSET_FIELDS
,
40 def save_model(self
, request
, obj
, form
, change
):
41 if obj
.user_creation
is None:
42 obj
.user_creation
= request
.user
43 obj
.date_creation
= datetime
.datetime
.now()
44 obj
.user_modification
= request
.user
45 obj
.date_modification
= datetime
.datetime
.now()
46 initial
= getattr(form
, 'initial', None)
48 if form
.initial
['actif'] is True and obj
.actif
is False:
49 obj
.user_desactivation
= request
.user
50 obj
.date_desactivation
= datetime
.datetime
.now()
51 if form
.initial
['actif'] is False and obj
.actif
is True:
52 obj
.user_activation
= request
.user
53 obj
.date_activation
= datetime
.datetime
.now()
56 def has_metadata(self
, instance
):
58 Test si une instance de modele hérite bien de AUFMetadata.
60 test
= getattr(instance
, 'supprime', None)
61 return test
is not None
63 def save_formset(self
, request
, form
, formset
, change
):
65 Mettre les metadata si l'objet est créé ou modifié par inline.
67 instances
= formset
.save(commit
=False)
68 for instance
in instances
:
69 if self
.has_metadata(instance
):
70 self
.save_model(request
, instance
, formset
.form
, change
)