def organigrammes_employe(request, id):
poste = get_object_or_404(rh.Poste, pk=id)
+ if rh.Poste.objects.filter(responsable=poste).count() > 0:
+ graph = nx.DiGraph()
+ postes = rh.Poste.objects.select_related('implantation').filter((Q(date_fin__gt=date.today()) | Q(date_fin=None)) & (Q(date_debut__lt=date.today()) | Q(date_debut=None)) ).exclude(supprime=True).exclude(responsable=None).all()
+ dossiers_by_poste = dict((d.poste_id, d) for d in rh.Dossier.objects.select_related('employe', 'poste').all())
+ postes_by_id = dict((p.id, p) for p in rh.Poste.objects.all())
- graph = nx.DiGraph()
- postes = rh.Poste.objects.select_related('implantation').filter((Q(date_fin__gt=date.today()) | Q(date_fin=None)) & (Q(date_debut__lt=date.today()) | Q(date_debut=None)) ).exclude(supprime=True).exclude(responsable=None).all()
- dossiers_by_poste = dict((d.poste_id, d) for d in rh.Dossier.objects.select_related('employe', 'poste').all())
- postes_by_id = dict((p.id, p) for p in rh.Poste.objects.all())
-
- for p in rh.Poste.objects.filter((Q(date_fin__gt=date.today()) | Q(date_fin=None)) & (Q(date_debut__lt=date.today()) | Q(date_debut=None)) ).exclude(supprime=True).exclude(responsable=None).all():
- graph.add_node(p.id)
-
- for p in postes:
- if p.responsable_id != p.id:
- graph.add_edge(dossiers_by_poste[p.responsable_id].poste_id, p.id)
+ for p in rh.Poste.objects.filter((Q(date_fin__gt=date.today()) | Q(date_fin=None)) & (Q(date_debut__lt=date.today()) | Q(date_debut=None)) ).exclude(supprime=True).exclude(responsable=None).all():
+ graph.add_node(p.id)
- graph = nx.bfs_tree(graph, poste.id)
- a = nx.to_agraph(graph)
- for n in a.nodes():
- p = postes_by_id[int(n)]
- d = rh.Dossier.objects.select_related('employe').filter((Q(date_fin__gt=date.today()) | Q(date_fin=None)) & (Q(date_debut__lt=date.today()) | Q(date_debut=None)) & Q(poste=p)).exclude(supprime=True).exclude(poste__responsable=None).all()[0]
+ for p in postes:
+ if p.responsable_id != p.id:
+ graph.add_edge(dossiers_by_poste[p.responsable_id].poste_id, p.id)
- n.attr['label'] = u"%s %s\\n%s\\n%s" % (d.id, d.poste.nom, "%s %s" % (d.employe.nom.upper(), d.employe.prenom), d.poste.implantation)
+ graph = nx.bfs_tree(graph, poste.id)
+ a = nx.to_agraph(graph)
+ for n in a.nodes():
+ p = postes_by_id[int(n)]
+ d = rh.Dossier.objects.select_related('employe').filter((Q(date_fin__gt=date.today()) | Q(date_fin=None)) & (Q(date_debut__lt=date.today()) | Q(date_debut=None)) & Q(poste=p)).exclude(supprime=True).exclude(poste__responsable=None).all()[0]
- a.graph_attr['normalize'] = True
- a.graph_attr['level'] = 2
- a.layout(prog='dot')
+ n.attr['label'] = u"%s %s\\n%s\\n%s" % (d.id, d.poste.nom, "%s %s" % (d.employe.nom.upper(), d.employe.prenom), d.poste.implantation)
- png = a.draw(format='png')
+ a.graph_attr['normalize'] = True
+ a.graph_attr['level'] = 2
+ a.layout(prog='dot')
+ png = a.draw(format='png')
- c = {
- 'png': b64encode(png)
- }
+ c = {
+ 'png': b64encode(png)
+ }
+ else:
+ c = {}
return render_to_response('rh/organigrammes/employe.html', c, RequestContext(request))