33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
import os
|
|
os.environ['DJANGO_SETTINGS_MODULE']='web.settings'
|
|
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_book(search_strings, search_description=False):
|
|
basic_query = Book.objects.select_related('person__person','id')
|
|
for word in search_strings:
|
|
basic_query=basic_query.filter(Q(title__icontains=word) |
|
|
Q(subtitle__icontains=word) |
|
|
Q(id__id__icontains=word) |
|
|
Q(person__person__first_name__icontains=word) |
|
|
Q(person__person__last_name__icontains=word))
|
|
return remove_duplicates(basic_query.all())
|
|
|
|
def remove_duplicates(list):
|
|
d = {}
|
|
for i in list:
|
|
d[i]=None
|
|
return d.keys()
|