Feat(SQL, UI): Logic for Get-Many SQL Stored Procedures refactored to use Calc Stored Procedures and Dog Command Links page styling improved.

This commit is contained in:
2025-07-01 21:21:51 +01:00
parent caeb13429a
commit 0d1e644e6c
102 changed files with 6971 additions and 1797 deletions

View File

@@ -40,9 +40,9 @@ from altcha import ChallengeOptions, create_challenge, verify_solution
routes_dog = Blueprint('routes_dog', __name__)
@routes_dog.route(Model_View_Dog_Base.HASH_DOG_SCRIPTS_SHARED, methods=['GET'])
@routes_dog.route(Model_View_Dog_Base.HASH_GET_DOG_SCRIPTS_SHARED, methods=['GET'])
def scripts_section_dog():
hash_page_current = request.args.get('hash_page_current', default = Model_View_Dog_Base.HASH_SCRIPTS_SECTION_STORE, type = str)
hash_page_current = request.args.get('hash_page_current', default = Model_View_Dog_Base.HASH_GET_DOG_SCRIPTS_SHARED, type = str)
model = Model_View_Dog_Base(hash_page_current=hash_page_current)
template = render_template('js/sections/dog.js', model = model)
return Response(template, mimetype='application/javascript')

View File

@@ -53,6 +53,7 @@ def dog_command_links():
model = Model_View_Dog_Dog_Command_Link(form_filters_old = form_filters)
if not model.is_user_logged_in:
return redirect(url_for('routes_core_home.home'))
Helper_App.console_log(f'form_filters={form_filters}')
return render_template('pages/dog/_dog_command_links.html', model = model)
"""

50
controllers/dog/home.py Normal file
View File

@@ -0,0 +1,50 @@
"""
Project: PARTS Website
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Technology: App Routing
Feature: Core - Contact Routes
Description:
Contact Page Controller.
"""
# IMPORTS
# internal
from dog_training.business_objects.api import API
from dog_training.business_objects.dog.command import Command
from dog_training.business_objects.dog.dog_command_link import Dog_Command_Link
from dog_training.datastores.datastore_dog import DataStore_Dog
from dog_training.forms.dog.dog_command_link import Filters_Dog_Command_Link
from dog_training.helpers.helper_app import Helper_App
from dog_training.models.model_view_dog_base import Model_View_Dog_Base
from dog_training.models.model_view_home import Model_View_Home
import dog_training.lib.argument_validation as av
# external
from flask import Flask, render_template, jsonify, request, render_template_string, send_from_directory, redirect, url_for, session, Blueprint, current_app, flash
from flask_mail import Mail, Message
from dog_training.extensions import db, oauth, mail
from urllib.parse import quote_plus, urlencode
from authlib.integrations.flask_client import OAuth
from authlib.integrations.base_client import OAuthError
from urllib.parse import quote, urlparse, parse_qs
import json
import base64
import hmac
import hashlib
import datetime
from altcha import ChallengeOptions, create_challenge, verify_solution
routes_dog_home = Blueprint('routes_dog_home', __name__)
@routes_dog_home.route(Model_View_Dog_Base.HASH_PAGE_DOG_HOME, methods=['GET'])
def dog_command_links():
Helper_App.console_log('DOG HOME')
model = Model_View_Dog_Base(hash_page_current = Model_View_Dog_Base.HASH_PAGE_DOG_HOME)
if not model.is_user_logged_in:
return redirect(url_for('routes_dog_home.home'))
return render_template('pages/dog/_home.html', model = model)

View File

@@ -55,8 +55,8 @@ def handle_db_disconnect(f):
def login():
oauth = current_app.extensions['authlib.integrations.flask_client']
try:
Helper_App.console_log('login')
Helper_App.console_log(f'method={request.method}')
# Helper_App.console_log('login')
# Helper_App.console_log(f'method={request.method}')
try:
data = request.json
try:
@@ -65,34 +65,15 @@ def login():
data = {}
except:
data = {}
Helper_App.console_log(f'data={data}')
# Helper_App.console_log(f'data={data}')
hash_callback = data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME)
Helper_App.console_log(f'hash_callback: {hash_callback}')
# Helper_App.console_log(f'hash_callback: {hash_callback}')
"""
# Verify CSRF token manually
Helper_App.console_log(f'request headers={request.headers}')
token = request.headers.get(Model_View_Base.FLAG_CSRF_TOKEN)
Helper_App.console_log(f'token={token}')
Helper_App.console_log(f'session={session}')
Helper_App.console_log(f'session token={session.get('csrf_token')}')
if not token or token != session.get('csrf_token'):
token = data.get(Model_View_Base.FLAG_CSRF_TOKEN, None)
Helper_App.console_log(f'token={token}')
if not token or token != session.get('csrf_token'):
raise BadRequest('Invalid or missing CSRF token')
"""
# OAuth login
# callback_login = F'{Model_View_Base.HASH_CALLBACK_LOGIN}{data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME)}'
# encoded_path = quote(data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME))
uri_redirect = url_for('routes_user.login_callback', _external=True) # , subpath=encoded_path
# uri_redirect = f'{current_app.URL_HOST}/login_callback?subpath={data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME)}'
Helper_App.console_log(f'redirect uri: {uri_redirect}')
uri_redirect = url_for('routes_user.login_callback', _external=True)
# Helper_App.console_log(f'redirect uri: {uri_redirect}')
Helper_App.console_log(f'Before red')
Helper_App.console_log(f"Registered clients: {list(oauth._clients.keys())}")
# Helper_App.console_log(f'Before red')
# Helper_App.console_log(f"Registered clients: {list(oauth._clients.keys())}")
try:
with current_app.app_context():
red = oauth.auth0.authorize_redirect(
@@ -101,9 +82,9 @@ def login():
)
except Exception as e:
Helper_App.console_log(f"Error: {str(e)}")
Helper_App.console_log(f'redirect: {red}')
# Helper_App.console_log(f'redirect: {red}')
headers = red.headers['Location']
Helper_App.console_log(f'headers: {headers}')
# Helper_App.console_log(f'headers: {headers}')
parsed_url = urlparse(headers)
query_params = parse_qs(parsed_url.query)
Helper_App.console_log(f"""
@@ -125,9 +106,9 @@ def login():
@handle_db_disconnect
def login_callback():
oauth = current_app.extensions['authlib.integrations.flask_client']
Helper_App.console_log('login_callback')
# Helper_App.console_log('login_callback')
try:
Helper_App.console_log(f'Redceived state: {request.args.get("state")}')
# Helper_App.console_log(f'Redceived state: {request.args.get("state")}')
error_state = request.args.get(Model_View_User.FLAG_ERROR_OAUTH)
has_error = error_state is not None
if has_error:
@@ -142,7 +123,7 @@ def login_callback():
Helper_App.console_log(f"Error: {str(e)}")
session[current_app.config['ID_TOKEN_USER']] = token
user = User.from_json_auth0(token)
Helper_App.console_log(f'user: {user}')
# Helper_App.console_log(f'user: {user}')
filters = Parameters_User.from_user(user)
datastore_user = DataStore_User()
users, errors = datastore_user.get_many_user(filters, user)