Enhance inventory management by updating timestamp type to DateTime, adding stale worklog display on the index page, and improving template styles and scripts for better user experience.
This commit is contained in:
parent
0835248f34
commit
58754c71bd
7 changed files with 73 additions and 16 deletions
32
routes.py
32
routes.py
|
@ -1,11 +1,11 @@
|
|||
from flask import Blueprint, render_template, url_for, request, redirect
|
||||
from .models import Area, Brand, Item, Inventory, RoomFunction, User, WorkLog, Room
|
||||
import html
|
||||
from .models import Brand, Item, Inventory, RoomFunction, User, WorkLog, Room
|
||||
from sqlalchemy import or_
|
||||
from sqlalchemy.orm import aliased
|
||||
from typing import Callable, Any, List
|
||||
from . import db
|
||||
from .utils import eager_load_user_relationships, eager_load_inventory_relationships, eager_load_room_relationships, eager_load_worklog_relationships, chunk_list
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
main = Blueprint('main', __name__)
|
||||
|
||||
|
@ -130,7 +130,27 @@ def render_paginated_table(
|
|||
|
||||
@main.route("/")
|
||||
def index():
|
||||
return render_template("index.html", title="Inventory Manager")
|
||||
stale_worklog_page = request.args.get('stale_worklog_page', 1, int)
|
||||
cutoff = datetime.utcnow() - timedelta(days=14)
|
||||
|
||||
worklog_query = eager_load_worklog_relationships(
|
||||
db.session.query(WorkLog)
|
||||
).filter(
|
||||
(WorkLog.start_time < cutoff) & (WorkLog.complete == False)
|
||||
)
|
||||
|
||||
stale_pagination = make_paginated_data(worklog_query, stale_worklog_page, 3)
|
||||
stale_count = len(worklog_query.all())
|
||||
stale_worklog_headers = {k: v for k, v in worklog_headers.items() if k not in ['End Time', 'Quick Analysis?', 'Complete?', 'Follow Up?']}
|
||||
|
||||
return render_template(
|
||||
"index.html",
|
||||
title="Inventory Manager",
|
||||
stale_pagination=stale_pagination,
|
||||
stale_count=stale_count,
|
||||
stale_worklog_headers=stale_worklog_headers,
|
||||
stale_worklog_rows=[{"id": log.id, "cells": [fn(log) for fn in stale_worklog_headers.values()]} for log in stale_pagination['items']],
|
||||
)
|
||||
|
||||
def link(text, endpoint, **values):
|
||||
return {"text": text, "url": url_for(endpoint, **values)}
|
||||
|
@ -338,10 +358,12 @@ def search():
|
|||
UserAlias.last_name.ilike(f"%{query}%")
|
||||
))
|
||||
inventory_pagination = make_paginated_data(inventory_query, inventory_page)
|
||||
user_query = eager_load_user_relationships(db.session.query(User)).filter(
|
||||
user_query = eager_load_user_relationships(db.session.query(User).join(UserAlias, User.supervisor)).filter(
|
||||
or_(
|
||||
User.first_name.ilike(f"%{query}%"),
|
||||
User.last_name.ilike(f"%{query}%")
|
||||
User.last_name.ilike(f"%{query}%"),
|
||||
UserAlias.first_name.ilike(f"%{query}%"),
|
||||
UserAlias.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).join(InventoryAlias, WorkLog.work_item)).filter(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue