33 lines
1,003 B
Python
33 lines
1,003 B
Python
from django.http import HttpResponse
|
|
from django.views.generic import ListView
|
|
|
|
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
|
|
|
|
|
|
class GroupList(ListView):
|
|
template_name = "wiki_groups/list.html"
|
|
model = WikiGroup
|
|
context_object_name = "groups"
|
|
|
|
def get_queryset(self):
|
|
return WikiGroup.objects.values_list("id", "django_group__name").order_by(
|
|
"django_group__name"
|
|
)
|