From 62834b72809a2b28cc0a950e70ffedce83a31871 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Sat, 9 Sep 2023 18:18:43 -0500 Subject: [PATCH] Removed React and added HTMX --- README.md | 2 +- src/core/__builtins__.py | 2 +- src/core/__init__.py | 4 -- src/core/models.py | 9 ++- src/core/routes/__init__.py | 1 + src/core/routes/htmx_page.py | 30 +++++++++ src/core/routes/routes.py | 18 +++--- src/core/static/js/ajax.js | 7 +++ src/core/static/js/events.js | 13 ++++ src/core/templates/layout.html | 10 ++- .../pages/{react-page.html => htmx-page.html} | 4 +- src/core/templates/pages/index.html | 6 +- src/core/utils/Logger.py | 63 ------------------- src/core/utils/__init__.py | 5 +- src/core/utils/logger.py | 61 ++++++++++++++++++ .../{MessageHandler.py => message_handler.py} | 2 +- src/core/utils/singleton.py | 24 +++++++ src/wsgi.py | 2 +- 18 files changed, 170 insertions(+), 93 deletions(-) create mode 100644 src/core/routes/htmx_page.py rename src/core/templates/pages/{react-page.html => htmx-page.html} (85%) delete mode 100644 src/core/utils/Logger.py create mode 100644 src/core/utils/logger.py rename src/core/utils/{MessageHandler.py => message_handler.py} (83%) create mode 100644 src/core/utils/singleton.py diff --git a/README.md b/README.md index 5821404..5c10dc1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Flask-Project-Template -A template to quickly standup a Flask app with Bootstrap 5, React, OIDC IAM, and a database. +A template to quickly standup a Flask app with Bootstrap 5, HTMX, OIDC IAM, and a database. # Dependencies ``` sudo apt install python3 ``` diff --git a/src/core/__builtins__.py b/src/core/__builtins__.py index 465c3fb..454eaf0 100644 --- a/src/core/__builtins__.py +++ b/src/core/__builtins__.py @@ -32,5 +32,5 @@ builtins.app_name = ':::APP TITLE:::' builtins.threaded = threaded_wrapper builtins.daemon_threaded = daemon_threaded_wrapper builtins.ROOT_FILE_PTH = os.path.dirname(os.path.realpath(__file__)) -builtins.logger = Logger().get_logger() +builtins.logger = Logger(f"{ROOT_FILE_PTH}/../logs", _ch_log_lvl=10, _fh_log_lvl=20).get_logger() builtins.json_message = MessageHandler() diff --git a/src/core/__init__.py b/src/core/__init__.py index 4ae95f1..a522218 100644 --- a/src/core/__init__.py +++ b/src/core/__init__.py @@ -44,10 +44,6 @@ app.jinja_env.globals['TITLE'] = app.config["TITLE"] from core.models import db from core.models import User -db.init_app(app) -with app.app_context(): - db.create_all() - from core.forms import RegisterForm from core.forms import LoginForm from core import routes diff --git a/src/core/models.py b/src/core/models.py index 4978349..8259f78 100644 --- a/src/core/models.py +++ b/src/core/models.py @@ -5,12 +5,14 @@ from flask_login import UserMixin from flask_sqlalchemy import SQLAlchemy # Apoplication imports -from core import app, login_manager +from core import app +from core import login_manager db = SQLAlchemy(app) + @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) @@ -24,3 +26,8 @@ class User(db.Model, UserMixin): def __repr__(self): return f"['{self.username}', '{self.email}', '{self.password}', '{self.id}']" + + +db.init_app(app) +with app.app_context(): + db.create_all() diff --git a/src/core/routes/__init__.py b/src/core/routes/__init__.py index 2bbe6b6..2e25d1f 100644 --- a/src/core/routes/__init__.py +++ b/src/core/routes/__init__.py @@ -8,3 +8,4 @@ from .login_controller import oidc_register from .login_controller import controller from . import routes +from . import htmx_page diff --git a/src/core/routes/htmx_page.py b/src/core/routes/htmx_page.py new file mode 100644 index 0000000..44904b1 --- /dev/null +++ b/src/core/routes/htmx_page.py @@ -0,0 +1,30 @@ +# Python imports + +# Lib imports +from flask import request +from flask import render_template +from flask_login import current_user + +# Application imports + # Get from __init__ +from core import app +from core import oidc +from core import db + + +@app.route('/htmx-page', methods=['GET', 'POST']) +def htmx_page(): + if request.method == 'GET': + return render_template('pages/htmx-page.html') + + return render_template('error.html', title = 'Error!', + message = 'Must use GET request type...') + + + +@app.route('/load-hello-world', methods=['GET', 'POST']) +def load_hello_world(): + if request.method == 'GET': + return "
Using Bootstrap 5 Themeing with Dark Mode defaulted...
-With React available...
-A React Example Page:
-
+ With HTMX available...