zoo/zoo/zoo_demo/views.py

54 lines
1.4 KiB
Python

from django.shortcuts import render, get_object_or_404
from zoo.models import EntitySchema, Entity
from .forms import EntitySearchForm
def schemas(request):
'''Show all schemas and give link to search page'''
return render(request, 'zoo_demo/schemas.html', {
'schemas': EntitySchema.objects.all(),
})
def schema(request, name):
'''Display a search form for the targeted schema'''
schema = get_object_or_404(EntitySchema, name=name)
qs = Entity.objects.filter(schema=schema)
form = EntitySearchForm(schema=schema, data=request.GET)
if form.is_valid():
qs = form.search()
else:
qs = Entity.objects.none()
try:
page = int(request.GET.get('page', 0))
except ValueError:
page = 0
qs = qs[page * 10:(page + 1) * 10]
next_page = page + 1
if len(qs) < 10:
next_page = None
return render(request, 'zoo_demo/schema.html', {
'schema': schema,
'form': form,
'entities': qs,
'next_page': next_page,
'previous_page': page - 1,
})
def doublons(request, name):
'''Display potential doublons'''
schema = get_object_or_404(EntitySchema, name=name)
paths = [key.split('__') for key in request.GET]
if paths:
doublons = Entity.objects.doublons(schema, *paths)
else:
doublons = []
return render(request, 'zoo_demo/doublons.html', {
'schema': schema,
'doublons': doublons,
})