fix for 500 error
[auf_rh_dae.git] / project / dae / admin.py
index 27fd94a..7f3b137 100644 (file)
@@ -1,18 +1,32 @@
 # -*- encoding: utf-8 -*-
 
 from django import forms
-from django.core.urlresolvers import reverse
 from django.contrib import admin
-from django.contrib import messages
-from django.shortcuts import redirect
-from reversion.admin import VersionAdmin
+
 from auf.django.workflow.models import WorkflowCommentaire
-from models import Poste, Dossier, DossierFinalise, PosteFinalise
 
-class PosteAdmin(VersionAdmin):
+from project.dae.models import Poste, Dossier, ProxyDossierStatut, \
+        ProxyPosteStatut
+
+
+class BaseAdmin(admin.ModelAdmin):
+
+    class Media:
+        css = {'screen': (
+            'css/admin_custom.css',
+            'jquery-autocomplete/jquery.autocomplete.css',
+        )}
+        js = (
+            'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js',
+            'jquery-autocomplete/jquery.autocomplete.min.js',
+        )
+
+
+class PosteAdmin(BaseAdmin):
     list_display = ('nom', 'implantation', 'etat', )
 
-class DossierAdmin(VersionAdmin):
+
+class DossierAdmin(BaseAdmin):
     list_display = ('_poste', '_implantation', 'employe', 'etat', )
     list_filter = ('etat', )
     exclude = ('etat', )
@@ -23,25 +37,13 @@ class DossierAdmin(VersionAdmin):
     def _implantation(self, obj):
         return obj.poste.implantation
 
-class ProxyDossierStatut(Dossier):
-    class Meta:
-        proxy = True
-        verbose_name = "Statut du dossier"
-        verbose_name_plural = "Statut des dossiers"
-
 
-class StatutDossierForm(forms.ModelForm):
-    
+class StatutForm(forms.ModelForm):
     commentaire = forms.CharField(label="Commentaire",
             widget=forms.widgets.Textarea())
 
-    class Meta:
-        model = ProxyDossierStatut
-        fields = ('etat', )
-
     def __init__(self, *args, **kwargs):
-        super(StatutDossierForm, self).__init__(*args, **kwargs)
-        
+        super(StatutForm, self).__init__(*args, **kwargs)
         # On retire le controle check des états pour faire ce qu'on veut
         self._meta.model.__setattr__ = object.__setattr__
 
@@ -49,33 +51,37 @@ class StatutDossierForm(forms.ModelForm):
         self.wf = WorkflowCommentaire()
         self.wf.etat_initial = self.instance.etat
         self.wf.owner_id = self.user.id
-    
+
     def save(self, *args, **kwargs):
         # Le dossier se voit attribuée un commentaire WF verbeux
-        obj = super(StatutDossierForm, self).save(*args, **kwargs)
+        obj = super(StatutForm, self).save(*args, **kwargs)
         self.wf.content_object = obj
         self.wf.etat_final = obj.etat
-        commentaire = u"%s => %s : %s" % (self.wf.etat_initial, self.wf.etat_final,
+        commentaire = u"%s => %s : %s" % (
+                self.wf.get_etat_label(self.wf.etat_initial),
+                self.wf.get_etat_label(self.wf.etat_final),
                 self.data['commentaire'])
         self.wf.texte = commentaire
         self.wf.save()
         return obj
-        
 
-class DossierStatutAdmin(VersionAdmin):
-    search_fields = ('employe__nom', 'employe__prenom', 'poste__nom', )
-    list_display = ('_poste', '_implantation', 'employe', '_etat', )
-    form = StatutDossierForm
-    action = None
 
-    def _poste(self, obj):
-        return obj.poste.nom
+class StatutDossierForm(StatutForm):
 
-    def _implantation(self, obj):
-        return obj.poste.implantation
+    class Meta:
+        model = ProxyDossierStatut
+        fields = ('etat', )
 
-    def _etat(self, obj):
-        return obj.get_etat_display()
+
+class StatutPosteForm(StatutForm):
+
+    class Meta:
+        model = ProxyPosteStatut
+        fields = ('etat', )
+
+
+class StatutAdmin(BaseAdmin):
+    action = None
 
     def has_delete_permission(self, request, obj=None):
         return False
@@ -87,92 +93,40 @@ class DossierStatutAdmin(VersionAdmin):
         return request.user.is_superuser
 
     def get_form(self, request, obj=None, **kwargs):
-        form = super(DossierStatutAdmin, self).get_form(request,
+        form = super(StatutAdmin, self).get_form(request,
                 obj, **kwargs)
         form.user = request.user
         return form
 
-class ImportAdmin(admin.ModelAdmin,):
-
-    def has_delete_permission(self, request, obj=None):
-        return False
-
-    def has_add_permission(self, request):
-        return False
-
-    def has_change_permission(self, request, obj=None):
-        if obj is None:
-            return True
-        else:
-            return False
-
-    def get_actions(self, request):
-        actions = super(ImportAdmin, self).get_actions(request)
-        del actions['delete_selected']
-        return actions
-
+    def _etat(self, obj):
+        return obj.get_etat_display()
+    _etat.short_description = "État"
+    _etat.admin_order_field = "etat"
 
-class ImportDossierAdmin(ImportAdmin):
-    list_display = ('_poste', '_employe', '_dae', )
-    actions = ['importer_dans_RH', ]
 
-    def _employe(self, obj):
-        return obj.employe
+class DossierStatutAdmin(StatutAdmin):
+    search_fields = ('employe__nom', 'employe__prenom', 'poste__nom', )
+    list_display = ('_poste', '_implantation', 'employe', '_etat', )
+    list_filter = ('poste__implantation', )
+    form = StatutDossierForm
 
     def _poste(self, obj):
-        rh = obj.poste.rh_importation()
-        if rh is not None:
-            extra = u"<a href='%s' style='color: red;'> (déjà importé)</a>" % \
-                reverse('admin:rh_poste_change', args=(rh.id,))
-        else:
-            extra = u""
-
-        return u"%s%s" % (obj.poste.nom, extra)
-    _poste.allow_tags = True
+        return obj.poste.nom
 
     def _implantation(self, obj):
         return obj.poste.implantation
+    _implantation.short_description = u"Implantation"
+    _implantation.admin_order_field = "poste__implantation"
 
-    def _dae(self, obj):
-        url = reverse('embauche_consulter', args=(obj.id, ))
-        return "<a href='%s'>voir la DAE</a>" % url
-    _dae.allow_tags = True
 
-    def importer_dans_RH(self, request, data):
-        selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
-        dae = [d for d in Dossier.objects.filter(id__in=selected)]
-        for d in dae:
-            copie = d.importer()
-            messages.add_message(request, messages.SUCCESS, u"%s importé dans\
-                    RH" % d)
-            url = reverse('admin:rh_dossier_change', args=(copie.id, ))
-            return redirect(url)
+class PosteStatutAdmin(StatutAdmin):
+    search_fields = ('nom', )
+    list_display = ('nom', 'implantation', )
+    list_filter = ('implantation', 'etat', )
+    form = StatutPosteForm
 
 
-class ImportPosteAdmin(ImportAdmin):
-    list_display = ('nom', '_implantation', '_dae', )
-    actions = ['importer_dans_RH', ]
-
-    def _implantation(self, obj):
-        return obj.implantation
-
-    def _dae(self, obj):
-        url = reverse('poste_consulter', args=(obj.id, ))
-        return "<a href='%s'>voir le poste dans DAE</a>" % url
-    _dae.allow_tags = True
-
-    def importer_dans_RH(self, request, data):
-        selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
-        dae = [d for d in Poste.objects.filter(id__in=selected)]
-        for p in dae:
-            copie = p.importer()
-            messages.add_message(request, messages.SUCCESS, u"%s importé dans\
-                    RH" % d)
-            url = reverse('admin:rh_poste_change', args=(copie.id, ))
-            return redirect(url)
-
 admin.site.register(Poste, PosteAdmin)
 admin.site.register(Dossier, DossierAdmin)
 admin.site.register(ProxyDossierStatut, DossierStatutAdmin)
-admin.site.register(DossierFinalise, ImportDossierAdmin)
-admin.site.register(PosteFinalise, ImportPosteAdmin)
+admin.site.register(ProxyPosteStatut, PosteStatutAdmin)