from flask import request, render_template from . import main from .helpers import worklog_headers, worklog_form_fields from .. import db from ..models import WorkLog, User, Inventory from ..utils.load import eager_load_worklog_relationships, eager_load_user_relationships, eager_load_inventory_relationships @main.route("/worklog") def list_worklog(page=1): page = request.args.get('page', default=1, type=int) query = eager_load_worklog_relationships(db.session.query(WorkLog)) return render_template( 'table.html', header=worklog_headers, rows=[{"id": log.id, "cells": [fn(log) for fn in worklog_headers.values()]} for log in query.all()], title="Work Log", entry_route='worklog_entry' ) @main.route("/worklog/") def worklog_entry(id): try: id = int(id) except ValueError: return render_template('error.html', title='Bad ID', message='ID must be an integer.', endpoint='worklog_entry', endpoint_args={'id': -1}) log = eager_load_worklog_relationships(db.session.query(WorkLog)).filter(WorkLog.id == id).first() user_query = db.session.query(User) users = eager_load_user_relationships(user_query).all() item_query = db.session.query(Inventory) items = eager_load_inventory_relationships(item_query).all() if log: title = f'Work Log - Entry #{id}' else: title = "Work Log - Entry Not Found" return render_template( 'error.html', title=title, message=f"The work log with ID {id} is not found!" ) return render_template( "worklog.html", title=title, log=log, users=users, items=items, form_fields=worklog_form_fields )