1 # -*- encoding: utf-8 -*-
3 from django
import forms
4 from django
.contrib
import admin
6 from reversion
.admin
import VersionAdmin
8 from auf
.django
.workflow
.models
import WorkflowCommentaire
10 from project
.dae
.models
import Poste
, Dossier
13 class BaseAdmin(admin
.ModelAdmin
):
17 'css/admin_custom.css',
18 'jquery-autocomplete/jquery.autocomplete.css',
21 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js',
22 'jquery-autocomplete/jquery.autocomplete.min.js',
26 class PosteAdmin(BaseAdmin
, VersionAdmin
):
27 list_display
= ('nom', 'implantation', 'etat', )
30 class DossierAdmin(BaseAdmin
, VersionAdmin
):
31 list_display
= ('_poste', '_implantation', 'employe', 'etat', )
32 list_filter
= ('etat', )
35 def _poste(self
, obj
):
38 def _implantation(self
, obj
):
39 return obj
.poste
.implantation
42 class ProxyDossierStatut(Dossier
):
45 verbose_name
= "Statut du dossier"
46 verbose_name_plural
= "Statut des dossiers"
49 class ProxyPosteStatut(Poste
):
52 verbose_name
= "Statut du poste"
53 verbose_name_plural
= "Statut des postes"
56 class StatutForm(forms
.ModelForm
):
57 commentaire
= forms
.CharField(label
="Commentaire",
58 widget
=forms
.widgets
.Textarea())
60 def __init__(self
, *args
, **kwargs
):
61 super(StatutForm
, self
).__init__(*args
, **kwargs
)
62 # On retire le controle check des états pour faire ce qu'on veut
63 self
._meta
.model
.__setattr__
= object.__setattr__
65 # on prépare le commentaire
66 self
.wf
= WorkflowCommentaire()
67 self
.wf
.etat_initial
= self
.instance
.etat
68 self
.wf
.owner_id
= self
.user
.id
70 def save(self
, *args
, **kwargs
):
71 # Le dossier se voit attribuée un commentaire WF verbeux
72 obj
= super(StatutForm
, self
).save(*args
, **kwargs
)
73 self
.wf
.content_object
= obj
74 self
.wf
.etat_final
= obj
.etat
75 commentaire
= u
"%s => %s : %s" % (
76 self
.wf
.get_etat_label(self
.wf
.etat_initial
),
77 self
.wf
.get_etat_label(self
.wf
.etat_final
),
78 self
.data
['commentaire'])
79 self
.wf
.texte
= commentaire
84 class StatutDossierForm(StatutForm
):
87 model
= ProxyDossierStatut
91 class StatutPosteForm(StatutForm
):
94 model
= ProxyPosteStatut
98 class StatutAdmin(BaseAdmin
):
101 def has_delete_permission(self
, request
, obj
=None):
104 def has_add_permission(self
, request
):
107 def has_change_permission(self
, request
, obj
=None):
108 return request
.user
.is_superuser
110 def get_form(self
, request
, obj
=None, **kwargs
):
111 form
= super(StatutAdmin
, self
).get_form(request
,
113 form
.user
= request
.user
116 def _etat(self
, obj
):
117 return obj
.get_etat_display()
118 _etat
.short_description
= "État"
119 _etat
.admin_order_field
= "etat"
122 class DossierStatutAdmin(StatutAdmin
):
123 search_fields
= ('employe__nom', 'employe__prenom', 'poste__nom', )
124 list_display
= ('_poste', '_implantation', 'employe', '_etat', )
125 list_filter
= ('poste__implantation', )
126 form
= StatutDossierForm
128 def _poste(self
, obj
):
131 def _implantation(self
, obj
):
132 return obj
.poste
.implantation
133 _implantation
.short_description
= u
"Implantation"
134 _implantation
.admin_order_field
= "poste__implantation"
137 class PosteStatutAdmin(StatutAdmin
):
138 search_fields
= ('nom', )
139 list_display
= ('nom', 'implantation', )
140 list_filter
= ('implantation', 'etat', )
141 form
= StatutPosteForm
144 admin
.site
.register(Poste
, PosteAdmin
)
145 admin
.site
.register(Dossier
, DossierAdmin
)
146 admin
.site
.register(ProxyDossierStatut
, DossierStatutAdmin
)
147 admin
.site
.register(ProxyPosteStatut
, PosteStatutAdmin
)