1 # -*- encoding: utf-8 -*-
3 from django
import forms
4 from django
.contrib
import admin
6 from auf
.django
.workflow
.models
import WorkflowCommentaire
8 from project
.dae
.models
import Poste
, Dossier
11 class BaseAdmin(admin
.ModelAdmin
):
15 'css/admin_custom.css',
16 'jquery-autocomplete/jquery.autocomplete.css',
19 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js',
20 'jquery-autocomplete/jquery.autocomplete.min.js',
24 class PosteAdmin(BaseAdmin
):
25 list_display
= ('nom', 'implantation', 'etat', )
28 class DossierAdmin(BaseAdmin
):
29 list_display
= ('_poste', '_implantation', 'employe', 'etat', )
30 list_filter
= ('etat', )
33 def _poste(self
, obj
):
36 def _implantation(self
, obj
):
37 return obj
.poste
.implantation
40 class ProxyDossierStatut(Dossier
):
43 verbose_name
= "Statut du dossier"
44 verbose_name_plural
= "Statut des dossiers"
47 class ProxyPosteStatut(Poste
):
50 verbose_name
= "Statut du poste"
51 verbose_name_plural
= "Statut des postes"
54 class StatutForm(forms
.ModelForm
):
55 commentaire
= forms
.CharField(label
="Commentaire",
56 widget
=forms
.widgets
.Textarea())
58 def __init__(self
, *args
, **kwargs
):
59 super(StatutForm
, self
).__init__(*args
, **kwargs
)
60 # On retire le controle check des états pour faire ce qu'on veut
61 self
._meta
.model
.__setattr__
= object.__setattr__
63 # on prépare le commentaire
64 self
.wf
= WorkflowCommentaire()
65 self
.wf
.etat_initial
= self
.instance
.etat
66 self
.wf
.owner_id
= self
.user
.id
68 def save(self
, *args
, **kwargs
):
69 # Le dossier se voit attribuée un commentaire WF verbeux
70 obj
= super(StatutForm
, self
).save(*args
, **kwargs
)
71 self
.wf
.content_object
= obj
72 self
.wf
.etat_final
= obj
.etat
73 commentaire
= u
"%s => %s : %s" % (
74 self
.wf
.get_etat_label(self
.wf
.etat_initial
),
75 self
.wf
.get_etat_label(self
.wf
.etat_final
),
76 self
.data
['commentaire'])
77 self
.wf
.texte
= commentaire
82 class StatutDossierForm(StatutForm
):
85 model
= ProxyDossierStatut
89 class StatutPosteForm(StatutForm
):
92 model
= ProxyPosteStatut
96 class StatutAdmin(BaseAdmin
):
99 def has_delete_permission(self
, request
, obj
=None):
102 def has_add_permission(self
, request
):
105 def has_change_permission(self
, request
, obj
=None):
106 return request
.user
.is_superuser
108 def get_form(self
, request
, obj
=None, **kwargs
):
109 form
= super(StatutAdmin
, self
).get_form(request
,
111 form
.user
= request
.user
114 def _etat(self
, obj
):
115 return obj
.get_etat_display()
116 _etat
.short_description
= "État"
117 _etat
.admin_order_field
= "etat"
120 class DossierStatutAdmin(StatutAdmin
):
121 search_fields
= ('employe__nom', 'employe__prenom', 'poste__nom', )
122 list_display
= ('_poste', '_implantation', 'employe', '_etat', )
123 list_filter
= ('poste__implantation', )
124 form
= StatutDossierForm
126 def _poste(self
, obj
):
129 def _implantation(self
, obj
):
130 return obj
.poste
.implantation
131 _implantation
.short_description
= u
"Implantation"
132 _implantation
.admin_order_field
= "poste__implantation"
135 class PosteStatutAdmin(StatutAdmin
):
136 search_fields
= ('nom', )
137 list_display
= ('nom', 'implantation', )
138 list_filter
= ('implantation', 'etat', )
139 form
= StatutPosteForm
142 admin
.site
.register(Poste
, PosteAdmin
)
143 admin
.site
.register(Dossier
, DossierAdmin
)
144 admin
.site
.register(ProxyDossierStatut
, DossierStatutAdmin
)
145 admin
.site
.register(ProxyPosteStatut
, PosteStatutAdmin
)