from django.http import HttpResponse from django.views.generic import TemplateView from wiki_groups.models import WikiGroup def dot_graph(request): response = HttpResponse(content_type="text/vnd.graphviz") response["Content-Disposition"] = 'attachment; filename="groups.dot"' response.write("digraph {\n") nodes = WikiGroup.objects.values_list("id", "django_group__name") edges = WikiGroup.includes_groups.through.objects.values_list( "to_wikigroup", "from_wikigroup" ) for id, name in nodes: response.write(' {} ["label"="{}"];\n'.format(id, name)) for u, v in edges: response.write(" {} -> {};\n".format(u, v)) response.write("}\n") return response graph = TemplateView.as_view(template_name="wiki_groups/graph.html")