Ajout des organigrammes par région (bureau)
authorJean-Philippe Caissy <jpcaissy@piji.ca>
Wed, 7 Mar 2012 17:11:11 +0000 (11:11 -0600)
committerJean-Philippe Caissy <jpcaissy@piji.ca>
Wed, 7 Mar 2012 17:11:11 +0000 (11:11 -0600)
project/menu.py
project/rh/admin.py
project/rh/urls.py
project/rh/views.py

index 200ceb6..c830db0 100644 (file)
@@ -57,6 +57,7 @@ class CustomMenu(Menu):
                         items.MenuItem('Organigramme par employé', reverse('admin:rh_employeproxy_changelist')),
                         items.MenuItem('Organigramme par service', reverse('admin:rh_serviceproxy_changelist')),
                         items.MenuItem('Organigramme par implantation', reverse('admin:rh_implantationproxy_changelist')),
+                        items.MenuItem('Organigramme par bureau', reverse('admin:rh_regionproxy_changelist')),
                         ]
                     ),
             ]
index c9666f2..39c40b5 100644 (file)
@@ -19,6 +19,14 @@ import models as rh
 
 import auf.django.references.models as ref
 
+class RegionProxy(ref.Region):
+    """ Proxy utilisé pour les organigrammes par région """
+    class Meta:
+        proxy = True
+        verbose_name = u"Organigramme par région"
+        verbose_name_plural = u"Organigramme par région"
+
+
 class ImplantationProxy(ref.Implantation):
     """ Proxy utilisé pour les organigrammes par implantation """
     class Meta:
@@ -1095,6 +1103,19 @@ class ImplantationProxyAdmin(admin.ModelAdmin):
     _organigramme.allow_tags = True
     _organigramme.short_description = "Organigramme"
 
+class RegionProxyAdmin(admin.ModelAdmin):
+    list_display = ('nom', '_organigramme')
+    list_display_links = ('nom',)
+
+    def has_add_permission(self, obj):
+        return False
+
+    def _organigramme(self, obj):
+        return """<a href="%s">Organigramme</a>""" % (reverse('rho_region', args=(obj.id,)))
+    _organigramme.allow_tags = True
+    _organigramme.short_description = "Organigramme"
+
+
 
 
 admin.site.register(rh.Classement, ClassementAdmin)
@@ -1116,3 +1137,4 @@ admin.site.register(rh.TypeRemuneration, TypeRemunerationAdmin)
 admin.site.register(rh.TypeRevalorisation, TypeRevalorisationAdmin)
 admin.site.register(rh.ValeurPoint, ValeurPointAdmin)
 admin.site.register(ImplantationProxy, ImplantationProxyAdmin)
+admin.site.register(RegionProxy, RegionProxyAdmin)
index 11f240e..b6e89fc 100644 (file)
@@ -18,4 +18,5 @@ urlpatterns = patterns(
     url(r'^admin/rh/organigrammes/employe/(\d+)$', 'organigrammes_employe', name='rho_employe'),
     url(r'^admin/rh/organigrammes/service/(\d+)$', 'organigrammes_service', name='rho_service'),
     url(r'^admin/rh/organigrammes/implantation/(\d+)$', 'organigrammes_implantation', name='rho_implantation'),
+    url(r'^admin/rh/organigrammes/bureau/(\d+)$', 'organigrammes_region', name='rho_region'),
 )
index fa8addf..7ddc518 100644 (file)
@@ -559,3 +559,19 @@ def organigrammes_implantation(request, id):
 
     return render_to_response('rh/organigrammes/vide.html', c, RequestContext(request), mimetype="image/svg+xml")
 
+@login_required
+@drh_or_admin_required
+def organigrammes_region(request, id):
+
+    region = get_object_or_404(ref.Region, pk=id)
+    svg = rh_graph.organigramme_postes_cluster( \
+            cluster_filter={"implantation__region": region}, \
+            titre=u"Organigramme du bureau de %s" % region.nom,
+            cluster_titre=region.nom)
+
+    c = {
+        'svg': svg
+    }
+
+    return render_to_response('rh/organigrammes/vide.html', c, RequestContext(request), mimetype="image/svg+xml")
+