oysteini
1ee76ee0b6
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).
35 lines
1.3 KiB
Python
35 lines
1.3 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_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')
|
|
for word in search_strings:
|
|
basic_query=basic_query.filter(Q(title__icontains=word) |
|
|
Q(subtitle__icontains=word) |
|
|
Q(alt_titles__alt_title__icontains=word) |
|
|
Q(id__id__icontains=word) |
|
|
Q(persons__person__first_name__icontains=word) |
|
|
Q(persons__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()
|