diff --git a/__pycache__/routes.cpython-313.pyc b/__pycache__/routes.cpython-313.pyc
index 1b0adbb..71adfaa 100644
Binary files a/__pycache__/routes.cpython-313.pyc and b/__pycache__/routes.cpython-313.pyc differ
diff --git a/__pycache__/utils.cpython-313.pyc b/__pycache__/utils.cpython-313.pyc
index a73e036..bcce93e 100644
Binary files a/__pycache__/utils.cpython-313.pyc and b/__pycache__/utils.cpython-313.pyc differ
diff --git a/routes.py b/routes.py
index 47294d3..436f03b 100644
--- a/routes.py
+++ b/routes.py
@@ -316,6 +316,7 @@ def search():
if not query:
return redirect(url_for('index'))
+ InventoryAlias = aliased(Inventory)
UserAlias = aliased(User)
inventory_query = eager_load_inventory_relationships(db.session.query(Inventory).join(UserAlias, Inventory.owner)).filter(
@@ -334,11 +335,14 @@ def search():
User.last_name.ilike(f"%{query}%")
))
user_pagination = make_paginated_data(user_query, user_page)
- worklog_query = eager_load_worklog_relationships(db.session.query(WorkLog).join(UserAlias, WorkLog.contact)).filter(
+ worklog_query = eager_load_worklog_relationships(db.session.query(WorkLog).join(UserAlias, WorkLog.contact).join(InventoryAlias, WorkLog.work_item)).filter(
or_(
WorkLog.notes.ilike(f"%{query}%"),
UserAlias.first_name.ilike(f"%{query}%"),
- UserAlias.last_name.ilike(f"%{query}%")
+ UserAlias.last_name.ilike(f"%{query}%"),
+ InventoryAlias.inventory_name.ilike(f"%{query}%"),
+ InventoryAlias.serial.ilike(f"%{query}%"),
+ InventoryAlias.barcode.ilike(f"%{query}%")
))
worklog_pagination = make_paginated_data(worklog_query, worklog_page)
diff --git a/templates/search.html b/templates/search.html
index ce1291f..a4bb388 100644
--- a/templates/search.html
+++ b/templates/search.html
@@ -10,64 +10,70 @@ title=title,
) }}
+ {% if results['inventory']['rows'] %}
{{ tables.render_table(
- headers = results['inventory']['headers'],
- rows = results['inventory']['rows'],
- entry_route = 'inventory_item',
- title='Inventory Results'
+ headers = results['inventory']['headers'],
+ rows = results['inventory']['rows'],
+ entry_route = 'inventory_item',
+ title='Inventory Results'
)}}
{{ tables.render_pagination(
- endpoint = 'main.search',
- page = results['inventory']['pagination']['page'],
- has_prev = results['inventory']['pagination']['has_prev'],
- has_next = results['inventory']['pagination']['has_next'],
- total_pages = results['inventory']['pagination']['total_pages'],
- page_variable = 'inventory_page',
- extra_args = {
- 'q': query,
- 'user_page': results['users']['pagination']['page'],
- 'worklog_page': results['worklog']['pagination']['page']
+ endpoint = 'main.search',
+ page = results['inventory']['pagination']['page'],
+ has_prev = results['inventory']['pagination']['has_prev'],
+ has_next = results['inventory']['pagination']['has_next'],
+ total_pages = results['inventory']['pagination']['total_pages'],
+ page_variable = 'inventory_page',
+ extra_args = {
+ 'q': query,
+ 'user_page': results['users']['pagination']['page'],
+ 'worklog_page': results['worklog']['pagination']['page']
})}}
+ {% endif %}
+ {% if results['users']['rows'] %}
{{ tables.render_table(
- headers = results['users']['headers'],
- rows = results['users']['rows'],
- entry_route = 'user', title='User Results'
+ headers = results['users']['headers'],
+ rows = results['users']['rows'],
+ entry_route = 'user', title='User Results'
)}}
{{ tables.render_pagination(
- endpoint = 'main.search',
- page = results['users']['pagination']['page'],
- has_prev = results['users']['pagination']['has_prev'],
- has_next = results['users']['pagination']['has_next'],
- total_pages = results['users']['pagination']['total_pages'],
- page_variable = 'user_page',
- extra_args = {
- 'q': query,
- 'inventory_page': results['inventory']['pagination']['page'],
- 'worklog_page': results['worklog']['pagination']['page']
+ endpoint = 'main.search',
+ page = results['users']['pagination']['page'],
+ has_prev = results['users']['pagination']['has_prev'],
+ has_next = results['users']['pagination']['has_next'],
+ total_pages = results['users']['pagination']['total_pages'],
+ page_variable = 'user_page',
+ extra_args = {
+ 'q': query,
+ 'inventory_page': results['inventory']['pagination']['page'],
+ 'worklog_page': results['worklog']['pagination']['page']
})}}
+ {% endif %}
+ {% if results['worklog']['rows'] %}
{{ tables.render_table(
- headers = results['worklog']['headers'],
- rows = results['worklog']['rows'],
- entry_route = 'worklog_entry',
- title='Worklog Results'
+ headers = results['worklog']['headers'],
+ rows = results['worklog']['rows'],
+ entry_route = 'worklog_entry',
+ title='Worklog Results'
)}}
{{ tables.render_pagination(
- endpoint = 'main.search',
- page = results['worklog']['pagination']['page'],
- has_prev = results['worklog']['pagination']['has_prev'],
- has_next = results['worklog']['pagination']['has_next'],
- total_pages = results['worklog']['pagination']['total_pages'],
- page_variable = 'worklog_page',
- extra_args = {
- 'q': query,
- 'inventory_page': results['inventory']['pagination']['page'],
- 'user_page': results['users']['pagination']['page']
+ endpoint = 'main.search',
+ page = results['worklog']['pagination']['page'],
+ has_prev = results['worklog']['pagination']['has_prev'],
+ has_next = results['worklog']['pagination']['has_next'],
+ total_pages = results['worklog']['pagination']['total_pages'],
+ page_variable = 'worklog_page',
+ extra_args = {
+ 'q': query,
+ 'inventory_page': results['inventory']['pagination']['page'],
+ 'user_page': results['users']['pagination']['page']
})}}
+ {% endif %}
{% endblock %}
\ No newline at end of file
diff --git a/utils.py b/utils.py
index 344e4a6..a9471b7 100644
--- a/utils.py
+++ b/utils.py
@@ -1,4 +1,4 @@
-from sqlalchemy.orm import joinedload
+from sqlalchemy.orm import joinedload, selectinload
from .models import User, Room, Inventory, WorkLog
def eager_load_user_relationships(query):
@@ -19,8 +19,8 @@ def eager_load_room_relationships(query):
return query.options(
joinedload(Room.area),
joinedload(Room.room_function),
- joinedload(Room.inventory),
- joinedload(Room.users)
+ selectinload(Room.inventory),
+ selectinload(Room.users)
)
def eager_load_worklog_relationships(query):