merge statut postes
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 27 Mar 2012 19:38:54 +0000 (15:38 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 27 Mar 2012 19:38:54 +0000 (15:38 -0400)
1  2 
project/dae/admin.py

@@@ -94,101 -95,30 +100,124 @@@ class StatutAdmin(VersionAdmin)
          form.user = request.user
          return form
  
+     def _etat(self, obj):
+         return obj.get_etat_display()
+ class DossierStatutAdmin(StatutAdmin):
+     search_fields = ('employe__nom', 'employe__prenom', 'poste__nom', )
+     list_display = ('_poste', '_implantation', 'employe', '_etat', )
+     form = StatutDossierForm
+     def _poste(self, obj):
+         return obj.poste.nom
+     def _implantation(self, obj):
+         return obj.poste.implantation
 -
+ class PosteStatutAdmin(StatutAdmin):
+     search_fields = ('nom', )
+     list_display = ('nom', 'implantation', '_etat', )
+     form = StatutPosteForm
 +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
 +
 +
 +class ImportDossierAdmin(ImportAdmin):
 +    list_display = ('_poste', '_employe', '_dae', )
 +    actions = ['importer_dans_RH', ]
 +
 +    def _employe(self, obj):
 +        return obj.employe
 +
 +    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
 +
-     def _implantation(self, obj):
-         return obj.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:
 +            try:
 +                d.importer(dry_run=True)
 +                copie = d.importer()
 +                messages.add_message(request, messages.SUCCESS, u"%s importé dans\
 +                    RH" % d)
 +                url = reverse('admin:rh_dossier_change', args=(copie.id, ))
 +            except Exception, e:
 +                mail_admins('DAE import', unicode(e))
 +                messages.add_message(request, messages.ERROR, u"%s ne peut pas\
 +                être importé" % d)
 +                url = reverse('admin:dae_dossierfinalise_changelist')
 +            return redirect(url)
 +
 +
 +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:
 +            try:
 +                p.importer(dry_run=True)
 +                copie = p.importer()
 +                messages.add_message(request, messages.SUCCESS, u"%s importé dans\
 +                        RH" % d)
 +                url = reverse('admin:rh_poste_change', args=(copie.id, ))
 +            except Exception, e:
 +                mail_admins('DAE import', unicode(e))
 +                messages.add_message(request, messages.ERROR, u"%s ne peut pas\
 +                être importé" % p)
 +                url = reverse('admin:dae_postefinalise_changelist')
 +            return redirect(url)
 +
++
  admin.site.register(Poste, PosteAdmin)
  admin.site.register(Dossier, DossierAdmin)
  admin.site.register(ProxyDossierStatut, DossierStatutAdmin)
+ admin.site.register(ProxyPosteStatut, PosteStatutAdmin)
 +admin.site.register(DossierFinalise, ImportDossierAdmin)
 +admin.site.register(PosteFinalise, ImportPosteAdmin)