Projects/worblehat-old
Projects
/
worblehat-old
Archived
12
0
Fork 0
This repository has been archived on 2024-07-04. You can view files and clone it, but cannot push or open issues or pull requests.
worblehat-old/python/web/library/views.py

50 lines
2.1 KiB
Python

from web.library.models import *
from django.http import HttpResponse, HttpResponseRedirect, Http404
from django.shortcuts import render_to_response, get_object_or_404
from django.db.models import Q
def BookView(request,book_identifier):
book=get_object_or_404(Book,isbn=book_identifier)
people = book.persons.all()
return render_to_response('book/view.html', {'book' : book, 'people' : people})
def BookRedirect(request,book_identifier):
ident=get_object_or_404(Id,id=book_identifier)
return HttpResponseRedirect('/book/'+ident.book.isbn)
def PersonView(request,person_identifier):
person = get_object_or_404(Person,id=person_identifier)
books = person.books.all()
return render_to_response('person/view.html', {'title' : 'Worblehat: person '+person.first_name+' '+person.last_name,'person' : person, 'books' : books})
def MapView(request,shelf_identifier):
if shelf_identifier not in Placement.get_all_shelves():
raise Http404()
shelf_list = Placement.shelf_as_list_row_then_col(shelf_identifier)
return render_to_response('map/view.html', {'shelf': shelf_list})
def IndexView(request):
return render_to_response('index.html')
def SearchView(request):
search_string=request.GET['searchterm']
results=search(search_string)
return render_to_response('search/search.html',{'search_string' : search_string, 'books' : results[0], 'people' : results[1], 'categories' : results[2]})
def search(string):
book_q=Book.objects.select_related('id','alt_titles')
person_q=Person.objects
category_q=Category.objects
for word in string.split(" "):
book_q=book_q.filter(Q(title__icontains=word) | Q(subtitle__icontains=word) |
Q(alt_titles__alt_title__icontains=word) | Q(id__id__icontains=word))
person_q=person_q.filter(Q(first_name__icontains=word) | Q(last_name__icontains=word) | Q(id__icontains=word))
category_q=category_q.filter(Q(id__icontains=word)|Q(name__icontains=word))
return [book_q.all(),person_q.all(),category_q.all()]
def remove_duplicates(list):
d={}
for i in list:
d[i]=None
return d.keys()