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:
@@ -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')
|
||||
@@ -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
50
controllers/dog/home.py
Normal 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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user