From f4f9f843875303f7d112c27b6844fdc364b3d1cd Mon Sep 17 00:00:00 2001 From: Yaro Kasear Date: Fri, 13 Jun 2025 08:50:39 -0500 Subject: [PATCH] Refactor templates and add search functionality with improved navigation and user experience --- __pycache__/routes.cpython-313.pyc | Bin 24962 -> 25326 bytes routes.py | 6 +++- templates/form.html | 2 -- .../{ => fragments}/_breadcrumb_fragment.html | 0 templates/fragments/_icon_fragment.html | 25 +++++++++++++++ templates/fragments/_link_fragment.html | 11 +++++++ .../{ => fragments}/_table_fragment.html | 0 templates/index.html | 22 +++++-------- templates/inventory.html | 3 -- templates/inventory_index.html | 3 -- templates/layout.html | 5 +++ templates/search.html | 29 ++++++++++++++++++ templates/table.html | 3 -- templates/user.html | 28 +++++++++-------- templates/worklog.html | 3 -- 15 files changed, 97 insertions(+), 43 deletions(-) rename templates/{ => fragments}/_breadcrumb_fragment.html (100%) create mode 100644 templates/fragments/_icon_fragment.html create mode 100644 templates/fragments/_link_fragment.html rename templates/{ => fragments}/_table_fragment.html (100%) create mode 100644 templates/search.html diff --git a/__pycache__/routes.cpython-313.pyc b/__pycache__/routes.cpython-313.pyc index f11367320456509537ffb8add8f62933e63ef018..c45292bed3b4e9fc6c5c75247fdf1da1ef297356 100644 GIT binary patch delta 1952 zcmZoV%=qpoBkyNkUM>a(28I@8pNv@(c_kU=Y*de9WDMBc#(0sDF>rDOv)$wXCUI#$ zQ$~<728LjNDF#yrlcC5eokcTf^DO2PRpph8Me7+D7*;YCv4ALsB5ei+h9XS{28LU# znRzLx6-9?88){BsJi7UaW-Ke?vB^sMuNaR^<~2CMcxv)BgTq4SKQbMaL#zx3Xea$QFH`ku3!;Z)q9Ye z_%rj$Qu9jkiz?#_OH+#~i)=t@KY|E|qdR-%S4MtRnCU!~}(Q zQ3r^1VX~%+Jlkau^YUgtmkMUa6O)g-w@RM{S<7^b2NVGD8L5dWpl|@WrRe48^$}rIntaMkX7V{-zR5az zA_~z;Fr7gfFcyLi(grz?QD?HEy#z}hN3{OrV?K)91~3Id#*-K7%TDI^wO}*_*}-Tw zS0~eE;=`vH%Kd(m63s=2%LhzN%bp8 zEjVp~Ql_RdF{z&yq-QCJNCgqeldFR?7;jBp5~NoT&c)#5F9DL`10`gxnghT-0{QJ0cTs+RZZTB&708V5 zAcBukgn{7}Cp>c%{RD~rnw%P}AoT;p1p5>0_un8cIM-d6JU>{2A7pG1hyWQ>e1Gz_ zU_a68LWUQG47aFk*Wajr#N@c$LA%RBL7P=VTA19Asqy$Iu^lsG^HE|uVa(&B!FH0F z%}0anl#sHIvBW7;As;=3)9jo+#uBGxlzr@!PTLFlSZbXSP34%TyStRP4+vx&}6S&^cWGtEiD!dqr*g=%_E!MQ0 z#NzBCW{`m_llx;g)eA8)Fx(RK^mB9$@eFf~4-Rn*2@Q4)E&?aO{~&c>zsrOC04~DT zfyAzZ(j!YsW^xHQd~UH8<(HPE799e~9R(2rAY-|6@{k)a4&;4*{E2c?@L84wE`WFY?)9h`h8PJ&CHk%0kJaTd?s{4cJON$Ud> m8>0u)2LT2qwsxsTsSeM}jA9>|7#W=zKQl8hi9?v+AOHZZx(tH= delta 1655 zcmaENl(FeBBkyNkUM>a(28Ovh-Wkjjc_kV1Hmb)lGWu<9W4y@7=s!7v*^VWhMKfUY z3FZ=2WlhGS^$ZLQnv6v(3=9k_8H%(S7#NB)85kIDv1aC_q*fFim>jP;iSh8}Pnxl; zj7KI1=)Yn-G}+qV1mlUxEQW`L&Vbajf{b7*nhRo|n0(XFneonMS)=Rhj7KJawMY1o$=V@YNrOa=OE=TCNnxKGQORx?5u463S_%9x~W${${Q!OVDU z@>lm(>C+%;7DLQ$ThmZIL1_p*I{@ldOJUvjb#)H&? z0*lwvKnfAC;2;nMSpW%#$>E+#jDIIrd1`PmGBPl{WME(@E|{zkr8N1RXAP?X8v{e! zJFpYTzHuqRvU2~Sq?6J=DJY~U-+s5#lk zSCLx_WD*Dm=}vZ(k(#{5PkQoNUj;^en0br_lPCB{%FBb)pyFr)7(d8p@(CXWmOQ>_ z&BDb+Ut>$Ygyf&dKur9E?_zHT-26ttPwq zTQk~BF0>P7<_)q3JIyUXeDXAxTy!bhF;H;7o%}H%gYop{s6a(Vi6bBpMEYP$ zEG|whDK0uQd2*1J3o|1FLlHP(fK%XSkXmq(0VOz11!594?__~s4aOUjErazK&rHq; zmahjJ1x~^_AoKh|1UMCgQjw-8Bt?U52HA3p8=QKe=@slykdtq57v<;Y7DI(!fXw&` zB6t`X7;bUGb3)N~kl+tc%9l#Z%qdANN}bFWA|mw-BnL>=I{qS$%{i&kX;~cx>|2hz=o0 zo+<(d3@8x5St*(E!sN-3YWDv@8IBukP)mTE4aqzp7Pt`M1F`mi2(WPslYd0YF-mO~ zkLqJ$d_H+ujFQwfkR(Daa#`~z#-H)|WTRMBHc3#-OHPiB-6x>QSTqCV2F4XaE;K~93W7oLe diff --git a/routes.py b/routes.py index 95bb6c7..f27d0b9 100644 --- a/routes.py +++ b/routes.py @@ -248,7 +248,7 @@ def list_users(): def user(id): asset_page = request.args.get("asset_page", default=1, type=int) worklog_page = request.args.get("worklog_page", default=1, type=int) - users_query = db.session.query(User) + users_query = db.session.query(User).order_by(User.first_name, User.last_name) users = eager_load_user_relationships(users_query).all() user = next((u for u in users if u.id == id), None) rooms_query = db.session.query(Room) @@ -304,3 +304,7 @@ def worklog_entry(id): item_query = db.session.query(Inventory) items = eager_load_inventory_relationships(item_query).all() return render_template("worklog.html", title=f"Work Log #{id}", log=log, users=users, items=items, form_fields=worklog_form_fields) + +@main.route("/search") +def search(): + return render_template('search.html', title="Database Search") diff --git a/templates/form.html b/templates/form.html index 74b7ba4..d84a94f 100644 --- a/templates/form.html +++ b/templates/form.html @@ -1,8 +1,6 @@ {% extends "layout.html" %} -{% import "_table_fragment.html" as tables %} - {% block title %}{{ title }}{% endblock %} {% block content %} diff --git a/templates/_breadcrumb_fragment.html b/templates/fragments/_breadcrumb_fragment.html similarity index 100% rename from templates/_breadcrumb_fragment.html rename to templates/fragments/_breadcrumb_fragment.html diff --git a/templates/fragments/_icon_fragment.html b/templates/fragments/_icon_fragment.html new file mode 100644 index 0000000..d72822c --- /dev/null +++ b/templates/fragments/_icon_fragment.html @@ -0,0 +1,25 @@ +{% set inventory %} + + + +{% endset %} + +{% set log %} + + + + +{% endset %} + +{% set user %} + + + +{% endset %} \ No newline at end of file diff --git a/templates/fragments/_link_fragment.html b/templates/fragments/_link_fragment.html new file mode 100644 index 0000000..5e13ed8 --- /dev/null +++ b/templates/fragments/_link_fragment.html @@ -0,0 +1,11 @@ +{% macro category_link(endpoint, label, icon_html=None, arguments={}) %} + +{% endmacro %} diff --git a/templates/_table_fragment.html b/templates/fragments/_table_fragment.html similarity index 100% rename from templates/_table_fragment.html rename to templates/fragments/_table_fragment.html diff --git a/templates/index.html b/templates/index.html index 55a0b23..73786c5 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,21 +1,13 @@ {% extends "layout.html" %} -{% import "_table_fragment.html" as tables %} - {% block title %}{{ title }}{% endblock %} {% block content %} -

Table of Contents

-
-
- Inventory -
-
- Users -
-
- Work Log -
-
-{% endblock %} +

Table of Contents

+
+ {{ links.category_link(endpoint = 'inventory_index', label = 'Inventory', icon_html = icons.inventory) }} + {{ links.category_link(endpoint = 'list_users', label = "Users", icon_html = icons.user) }} + {{ links.category_link(endpoint = 'list_worklog', label = 'Worklog', icon_html = icons.log) }} +
+{% endblock %} \ No newline at end of file diff --git a/templates/inventory.html b/templates/inventory.html index 97641c7..449dcf1 100644 --- a/templates/inventory.html +++ b/templates/inventory.html @@ -1,9 +1,6 @@ {% extends "layout.html" %} -{% import "_breadcrumb_fragment.html" as breadcrumbs %} -{% import "_table_fragment.html" as tables %} - {% block title %}{{ title }}{% endblock %} {% block content %} diff --git a/templates/inventory_index.html b/templates/inventory_index.html index c6bc8ca..f9eca2a 100644 --- a/templates/inventory_index.html +++ b/templates/inventory_index.html @@ -1,9 +1,6 @@ {% extends "layout.html" %} -{% import "_breadcrumb_fragment.html" as breadcrumbs %} -{% import "_table_fragment.html" as tables %} - {% block title %}{{ title }}{% endblock %} {% block content %} diff --git a/templates/layout.html b/templates/layout.html index b77750c..a60a051 100644 --- a/templates/layout.html +++ b/templates/layout.html @@ -1,3 +1,8 @@ +{% import "fragments/_breadcrumb_fragment.html" as breadcrumbs %} +{% import "fragments/_icon_fragment.html" as icons %} +{% import "fragments/_link_fragment.html" as links %} +{% import "fragments/_table_fragment.html" as tables %} + diff --git a/templates/search.html b/templates/search.html new file mode 100644 index 0000000..4beb6d1 --- /dev/null +++ b/templates/search.html @@ -0,0 +1,29 @@ + +{% extends "layout.html" %} + +{% block title %}{{ title }}{% endblock %} + +{% block content %} + +{{ breadcrumbs.breadcrumb_header( +title=title, +) }} + +
+

Search Categories

+
+ +
Users
+
Work Logs
+
+
+{% endblock %} \ No newline at end of file diff --git a/templates/table.html b/templates/table.html index 4a1ec7c..f545ea0 100644 --- a/templates/table.html +++ b/templates/table.html @@ -1,9 +1,6 @@ {% extends "layout.html" %} -{% import "_breadcrumb_fragment.html" as breadcrumbs %} -{% import "_table_fragment.html" as tables %} - {% block title %}{{ title }}{% endblock %} {% block content %} diff --git a/templates/user.html b/templates/user.html index ce1edcc..4c5c4e6 100644 --- a/templates/user.html +++ b/templates/user.html @@ -1,31 +1,32 @@ {% extends "layout.html" %} -{% import "_breadcrumb_fragment.html" as breadcrumbs %} -{% import "_table_fragment.html" as tables %} - {% block title %}{{ title }}{% endblock %} {% block content %} + {{ breadcrumbs.breadcrumb_header( title=title, breadcrumbs=[ {'label': 'Users', 'url': url_for('main.list_users')} ] ) }} +{% if not user.active %} +
This user is inactive. You will not be able to make any changes to this record.
+{% endif %}
- +
- +
@@ -47,10 +48,10 @@ breadcrumbs=[ {% endif %} @@ -58,35 +59,36 @@ breadcrumbs=[
- {% for location in rooms %} - + {% endfor %}
- +
- +
{% if inventory_rows %} -
+
{{ tables.render_table(inventory_headers, inventory_rows, 'inventory_item', title='Assets') }}
{% endif %} {% if worklog_rows %} -
+
{{ tables.render_table(worklog_headers, worklog_rows, 'worklog_entry', title='Work Done') }}
diff --git a/templates/worklog.html b/templates/worklog.html index 862652a..1fd50a2 100644 --- a/templates/worklog.html +++ b/templates/worklog.html @@ -1,9 +1,6 @@ {% extends "layout.html" %} -{% import "_breadcrumb_fragment.html" as breadcrumbs %} -{% import "_table_fragment.html" as tables %} - {% block title %}{{ title }}{% endblock %} {% block content %}