Implementert kommandoen 'list'.

Flyttet samtidig på litt kode.  Plukket ut printedelene av
søkefunksjonene til egne funksjoner som printer en liste med
bøker/personer, slik at de samme funksjonene kan brukes av
'list'-kommandoen også.  Flyttet dessuten søkefunksjonen for personer
inn i search.py (skal vi først ha en fil som heter search.py (noe jeg
er litt usikker på poenget med) bør denne også ligge der).
This commit is contained in:
2011-03-08 13:30:17 +00:00
parent 25215718ee
commit 1ee76ee0b6
2 changed files with 55 additions and 30 deletions

View File

@@ -4,16 +4,17 @@ from web.library.models import *
from django.db.models import Q
from util import *
def search_book_cmd(search_strings, search_description=False):
books = search_book(search_strings, search_description)
format = '%-13s %-10s %-40s %-30s'
for book in books:
b_id = book.getid() or ''
title = cut_str(book.title, 40, '*')
authors = map(lambda p: p.first_name+' '+p.last_name,
book.get_authors())
authors_str = cut_str(', '.join(authors), 30, '*')
print format % (book.isbn, b_id, title, authors_str)
def search_person(search_strings, search_description=False):
basic_query=Person.objects.select_related('books__book__alt_titles')
for word in search_strings:
basic_query=basic_query.filter(Q(first_name__icontains=word) |
Q(last_name__icontains=word) |
Q(id__icontains=word) |
Q(books__book__isbn__icontains=word) |
Q(books__book__title__icontains=word) |
Q(books__book__alt_titles__alt_title=word) |
Q(books__book__id__id__icontains=word))
return remove_duplicates(basic_query.all())
def search_book(search_strings, search_description=False):
basic_query = Book.objects.select_related('persons__person','id','alt_titles')