Compare commits
1 Commits
oracle_vps
...
demo
| Author | SHA1 | Date | |
|---|---|---|---|
| 2103335735 |
72
README.md
72
README.md
@@ -1,41 +1,55 @@
|
|||||||
Precision and Research Technology Systems Limited
|
Precision and Research Technology Systems Limited
|
||||||
Website with online store
|
ERP system with e-commerce store
|
||||||
|
|
||||||
Powered by flask
|
|
||||||
|
|
||||||
enter virtual environment:
|
# Run
|
||||||
|
1. enter virtual environment:
|
||||||
python -m venv VIRTUAL_ENVIRONMENT_NAME
|
python -m venv VIRTUAL_ENVIRONMENT_NAME
|
||||||
|
|
||||||
run module bundler:
|
2. install required packages:
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
3. run module bundler:
|
||||||
npm run build
|
npm run build
|
||||||
|
|
||||||
host for machine:
|
4. host for machine:
|
||||||
python -m flask run
|
python -m flask run
|
||||||
|
|
||||||
host for local network:
|
(or 4.) host for local network:
|
||||||
python -m flask run --host=0.0.0.0
|
python -m flask run --host=0.0.0.0
|
||||||
|
|
||||||
|
|
||||||
files dedicated to each page:
|
# Code review
|
||||||
CSS
|
Sample files:
|
||||||
page
|
CSS:
|
||||||
HTML
|
Page styles
|
||||||
page
|
static/css/pages/store/supplier.css
|
||||||
row
|
JavaScript:
|
||||||
JavaScript
|
Page object
|
||||||
page
|
static/js/pages/store/product_categories.js
|
||||||
api
|
Router
|
||||||
router
|
static/js/router.js
|
||||||
base - navigation buttons
|
|
||||||
MySQL
|
HTML:
|
||||||
get
|
Layout template
|
||||||
save
|
templates/layouts/layout.html
|
||||||
table
|
Page template
|
||||||
staging table
|
templates/pages/store/_supplier.html
|
||||||
audit table
|
|
||||||
Python
|
Python:
|
||||||
business object
|
Business object:
|
||||||
controller
|
business_objects/store/product_price.py
|
||||||
datastore
|
Controller:
|
||||||
form
|
controllers/core.py
|
||||||
model
|
Datastore:
|
||||||
|
datastores/datastore_store_product_category.py
|
||||||
|
Model:
|
||||||
|
models/model_view_store_product_permutation.py
|
||||||
|
|
||||||
|
SQL:
|
||||||
|
Table:
|
||||||
|
static/MySQL/1403_tbl_Shop_Supplier_Address.sql
|
||||||
|
Trigger
|
||||||
|
static/MySQL/3000_tri_Shop_Access_Level.sql
|
||||||
|
Save procedure
|
||||||
|
static/MySQL/7200_p_shop_save_product_category.sql
|
||||||
|
|||||||
83
app.log.1
83
app.log.1
@@ -1,83 +0,0 @@
|
|||||||
User.from_json_auth0
|
|
||||||
json: {'access_token': 'eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIn0..arWSrpDU5354qDI7.IbRrkeXan6irbNYnEDXOKgV_Qa3HW58e-q-pxzyQmALiaHX4FboD-AWN6FnDtS_npGpuWgyRf8mYfC9alfD72K5nYQDNcWFrMaQGEY_uz4dlGsariyQD27XoEl6S7Uq9e8junqKbS2miQZ7VOu79MfkpgyM-Q8sTRXE8bs2KjjDtJLAhK0RWz-hsIqlUgNTPMA5Ir1gcm-uA_sKEC51kAnqQxV2WCZtvaj9cMl_Zjt11KeuVKPOS_gbL8cTR9V5gUlJCF6rLWgVVvS75H19eGnHdv0jJ5DwW_XaN_l_wojQigBTjDKKXz4J184vB1ivvtNWQuINEGUe5lIt7j-a-ZALw._IMfFUmvPE-89DHDRhhbVg', 'id_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InVveXZURk44bjJvZHg1VkFLMFh1RyJ9.eyJuaWNrbmFtZSI6ImVkd2FyZC5taWRkbGV0b25zbWl0aCIsIm5hbWUiOiJlZHdhcmQubWlkZGxldG9uc21pdGhAZ21haWwuY29tIiwicGljdHVyZSI6Imh0dHBzOi8vcy5ncmF2YXRhci5jb20vYXZhdGFyLzUzZDNmMjQ0MDdkNTI1N2Y4NGYyN2NhMDc4NzRiZDY0P3M9NDgwJnI9cGcmZD1odHRwcyUzQSUyRiUyRmNkbi5hdXRoMC5jb20lMkZhdmF0YXJzJTJGZWQucG5nIiwidXBkYXRlZF9hdCI6IjIwMjQtMTEtMjJUMTI6NTI6MTEuMzI1WiIsImVtYWlsIjoiZWR3YXJkLm1pZGRsZXRvbnNtaXRoQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIiwiYXVkIjoiZ0dqeXRxTk1XQ2hTaXhxTzcyUlF6VkhXQWFlSkp6UmkiLCJpYXQiOjE3MzIyNzk5MzMsImV4cCI6MTczMjMxNTkzMywic3ViIjoiYXV0aDB8NjU4MmI5NWM4OTVkMDlhNzBiYTEwZmVmIiwic2lkIjoiX3VySVJlQjVJcW53czF4MXQxU08wT3lETzAyTzFyamgiLCJub25jZSI6IjdCRWV1UHlqOERZdkVTZnc0RkdNIn0.ApLWH6u8EUDhqkFo72vCdHv6IqHqGKzTi4vUe6w2NFvgFobAvsacwWTmirMM1Cj4CGkpXVTgau4pyURtxX0ubOfrLR-Xtj9TN1FXZ-l6ddmgpSt7rjbnRsQIEPlGUal9Gx44J36_4qI7fPc8Vo6U7mPKcpKCzcmHJTMrMZ0yMjYDEporwX0gf-DJ41_VbuFeLTjiYLABub_waSoNOqMVgq3pJmvcx-fq_6tj8cRULUWUl4S0zdv8KZIm59z--V45fhOEqRgqJshWZONNl3Y8Btcl8TvU0gCGEzUV9BI80gUYM42w9WS9G3zGiXneXgkld4dxebivgwmgqAQWhNQZ0g', 'scope': 'openid profile email', 'expires_in': 86400, 'token_type': 'Bearer', 'expires_at': 1732366332, 'userinfo': {'nickname': 'edward.middletonsmith', 'name': 'edward.middletonsmith@gmail.com', 'picture': 'https://s.gravatar.com/avatar/53d3f24407d5257f84f27ca07874bd64?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fed.png', 'updated_at': '2024-11-22T12:52:11.325Z', 'email': 'edward.middletonsmith@gmail.com', 'email_verified': False, 'iss': 'https://dev-nwak2066ef6h8ixn.us.auth0.com/', 'aud': 'gGjytqNMWChSixqO72RQzVHWAaeJJzRi', 'iat': 1732279933, 'exp': 1732315933, 'sub': 'auth0|6582b95c895d09a70ba10fef', 'sid': '_urIReB5Iqnws1x1t1SO0OyDO02O1rjh', 'nonce': '7BEeuPyj8DYvESfw4FGM'}}
|
|
||||||
user:
|
|
||||||
id_user: None
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: None
|
|
||||||
surname: None
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: None
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: None
|
|
||||||
can_admin_store: None
|
|
||||||
can_admin_user: None
|
|
||||||
|
|
||||||
user:
|
|
||||||
id_user: None
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: None
|
|
||||||
surname: None
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: None
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: None
|
|
||||||
can_admin_store: None
|
|
||||||
can_admin_user: None
|
|
||||||
|
|
||||||
DataStore_User.get_many_user
|
|
||||||
DataStore_Base.db_procedure_execute
|
|
||||||
proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug)
|
|
||||||
args: {'a_id_user': None, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': '', 'ids_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'a_debug': 0}
|
|
||||||
result: <sqlalchemy.engine.cursor.CursorResult object at 0x000001CAA039E7B0>
|
|
||||||
raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),)
|
|
||||||
type result set: <class 'tuple'>
|
|
||||||
len result set: 1
|
|
||||||
row: (1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00')
|
|
||||||
user <class 'business_objects.user.User'>:
|
|
||||||
id_user: 1
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: Teddy
|
|
||||||
surname: Middleton-Smith
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: True
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: True
|
|
||||||
can_admin_store: True
|
|
||||||
can_admin_user: True
|
|
||||||
|
|
||||||
type users: <class 'list'>
|
|
||||||
type user 0: <class 'business_objects.user.User'>
|
|
||||||
raw errors: ()
|
|
||||||
new result set: ()
|
|
||||||
User logged in
|
|
||||||
user (<class 'business_objects.user.User'>):
|
|
||||||
id_user: 1
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: Teddy
|
|
||||||
surname: Middleton-Smith
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: True
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: True
|
|
||||||
can_admin_store: True
|
|
||||||
can_admin_user: True
|
|
||||||
|
|
||||||
user key: authorisedUser
|
|
||||||
as_json: {'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'firstname': 'Teddy', 'surname': 'Middleton-Smith', 'email': 'edward.middletonsmith@gmail.com', 'is_email_verified': False, 'is_super_user': True, 'id_currency_default': None, 'id_region_default': None, 'is_included_VAT_default': True, 'can_admin_store': True, 'can_admin_user': True}
|
|
||||||
user stored on session
|
|
||||||
hash is none
|
|
||||||
state: /
|
|
||||||
hash_callback: /
|
|
||||||
user session: {'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'firstname': 'Teddy', 'surname': 'Middleton-Smith', 'email': 'edward.middletonsmith@gmail.com', 'is_email_verified': False, 'is_super_user': True, 'id_currency_default': None, 'id_region_default': None, 'is_included_VAT_default': True, 'can_admin_store': True, 'can_admin_user': True}
|
|
||||||
session: <SecureCookieSession {'_permanent': True, 'authorisedUser': {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}, 'csrf_token': '1689a59dcefc3084ed03c8dbce8e7ca280768f81', 'user': {'access_token': 'eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIn0..arWSrpDU5354qDI7.IbRrkeXan6irbNYnEDXOKgV_Qa3HW58e-q-pxzyQmALiaHX4FboD-AWN6FnDtS_npGpuWgyRf8mYfC9alfD72K5nYQDNcWFrMaQGEY_uz4dlGsariyQD27XoEl6S7Uq9e8junqKbS2miQZ7VOu79MfkpgyM-Q8sTRXE8bs2KjjDtJLAhK0RWz-hsIqlUgNTPMA5Ir1gcm-uA_sKEC51kAnqQxV2WCZtvaj9cMl_Zjt11KeuVKPOS_gbL8cTR9V5gUlJCF6rLWgVVvS75H19eGnHdv0jJ5DwW_XaN_l_wojQigBTjDKKXz4J184vB1ivvtNWQuINEGUe5lIt7j-a-ZALw._IMfFUmvPE-89DHDRhhbVg', 'expires_at': 1732366332, 'expires_in': 86400, 'id_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InVveXZURk44bjJvZHg1VkFLMFh1RyJ9.eyJuaWNrbmFtZSI6ImVkd2FyZC5taWRkbGV0b25zbWl0aCIsIm5hbWUiOiJlZHdhcmQubWlkZGxldG9uc21pdGhAZ21haWwuY29tIiwicGljdHVyZSI6Imh0dHBzOi8vcy5ncmF2YXRhci5jb20vYXZhdGFyLzUzZDNmMjQ0MDdkNTI1N2Y4NGYyN2NhMDc4NzRiZDY0P3M9NDgwJnI9cGcmZD1odHRwcyUzQSUyRiUyRmNkbi5hdXRoMC5jb20lMkZhdmF0YXJzJTJGZWQucG5nIiwidXBkYXRlZF9hdCI6IjIwMjQtMTEtMjJUMTI6NTI6MTEuMzI1WiIsImVtYWlsIjoiZWR3YXJkLm1pZGRsZXRvbnNtaXRoQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIiwiYXVkIjoiZ0dqeXRxTk1XQ2hTaXhxTzcyUlF6VkhXQWFlSkp6UmkiLCJpYXQiOjE3MzIyNzk5MzMsImV4cCI6MTczMjMxNTkzMywic3ViIjoiYXV0aDB8NjU4MmI5NWM4OTVkMDlhNzBiYTEwZmVmIiwic2lkIjoiX3VySVJlQjVJcW53czF4MXQxU08wT3lETzAyTzFyamgiLCJub25jZSI6IjdCRWV1UHlqOERZdkVTZnc0RkdNIn0.ApLWH6u8EUDhqkFo72vCdHv6IqHqGKzTi4vUe6w2NFvgFobAvsacwWTmirMM1Cj4CGkpXVTgau4pyURtxX0ubOfrLR-Xtj9TN1FXZ-l6ddmgpSt7rjbnRsQIEPlGUal9Gx44J36_4qI7fPc8Vo6U7mPKcpKCzcmHJTMrMZ0yMjYDEporwX0gf-DJ41_VbuFeLTjiYLABub_waSoNOqMVgq3pJmvcx-fq_6tj8cRULUWUl4S0zdv8KZIm59z--V45fhOEqRgqJshWZONNl3Y8Btcl8TvU0gCGEzUV9BI80gUYM42w9WS9G3zGiXneXgkld4dxebivgwmgqAQWhNQZ0g', 'scope': 'openid profile email', 'token_type': 'Bearer', 'userinfo': {'aud': 'gGjytqNMWChSixqO72RQzVHWAaeJJzRi', 'email': 'edward.middletonsmith@gmail.com', 'email_verified': False, 'exp': 1732315933, 'iat': 1732279933, 'iss': 'https://dev-nwak2066ef6h8ixn.us.auth0.com/', 'name': 'edward.middletonsmith@gmail.com', 'nickname': 'edward.middletonsmith', 'nonce': '7BEeuPyj8DYvESfw4FGM', 'picture': 'https://s.gravatar.com/avatar/53d3f24407d5257f84f27ca07874bd64?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fed.png', 'sid': '_urIReB5Iqnws1x1t1SO0OyDO02O1rjh', 'sub': 'auth0|6582b95c895d09a70ba10fef', 'updated_at': '2024-11-22T12:52:11.325Z'}}}>
|
|
||||||
DataStore_Base.get_user_session
|
|
||||||
User.from_json
|
|
||||||
json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}
|
|
||||||
132
app.log.2
132
app.log.2
@@ -1,132 +0,0 @@
|
|||||||
user <class 'business_objects.user.User'>:
|
|
||||||
id_user: 1
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: Teddy
|
|
||||||
surname: Middleton-Smith
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: True
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: True
|
|
||||||
can_admin_store: True
|
|
||||||
can_admin_user: True
|
|
||||||
|
|
||||||
type users: <class 'list'>
|
|
||||||
type user 0: <class 'business_objects.user.User'>
|
|
||||||
raw errors: ()
|
|
||||||
new result set: ()
|
|
||||||
User logged in
|
|
||||||
user (<class 'business_objects.user.User'>):
|
|
||||||
id_user: 1
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: Teddy
|
|
||||||
surname: Middleton-Smith
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: True
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: True
|
|
||||||
can_admin_store: True
|
|
||||||
can_admin_user: True
|
|
||||||
|
|
||||||
user key: authorisedUser
|
|
||||||
as_json: {'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'firstname': 'Teddy', 'surname': 'Middleton-Smith', 'email': 'edward.middletonsmith@gmail.com', 'is_email_verified': False, 'is_super_user': True, 'id_currency_default': None, 'id_region_default': None, 'is_included_VAT_default': True, 'can_admin_store': True, 'can_admin_user': True}
|
|
||||||
user stored on session
|
|
||||||
hash is none
|
|
||||||
state: /
|
|
||||||
hash_callback: /
|
|
||||||
user session: {'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'firstname': 'Teddy', 'surname': 'Middleton-Smith', 'email': 'edward.middletonsmith@gmail.com', 'is_email_verified': False, 'is_super_user': True, 'id_currency_default': None, 'id_region_default': None, 'is_included_VAT_default': True, 'can_admin_store': True, 'can_admin_user': True}
|
|
||||||
session: <SecureCookieSession {'_permanent': True, 'authorisedUser': {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}, 'csrf_token': '609aa5890b61ec21cc66550109ca31cc7e3eaa3d', 'user': {'access_token': 'eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIn0..PT10sdrXdrY56k-9.rU-DfkB98x5UEnQYnVi7819a1BotlXjB9IR3yCeRHKL3iVCQIcCm8-Cld93CGXBk9-74i_xFgke7wuY-K8hmzNt-R6XG8tikkKZDPvQzKQjsykgDOXxIHK2VQfIacOJILmLIa9XTB93gnKUUha9besm2nrRIluOSfe_sJgU7AhYQ3lWpoWyh-oGzjsO5ObGepcDuzikz5zK7kst90DYFHezFrDEPJwSXU8bBkm0DN6WNGOg3wumMG7BZvoi5TNhgGUleoxlr1w3RFgJZg_7ra_eNWXY9_d_dbF9Hc7F_Enhr1ZtSpW2LsX7MOlReoDEzM---S-3hbXVXuEfgufISqkbV.bRWgAFRVOFi8SejsOC3i3Q', 'expires_at': 1732366225, 'expires_in': 86400, 'id_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InVveXZURk44bjJvZHg1VkFLMFh1RyJ9.eyJuaWNrbmFtZSI6ImVkd2FyZC5taWRkbGV0b25zbWl0aCIsIm5hbWUiOiJlZHdhcmQubWlkZGxldG9uc21pdGhAZ21haWwuY29tIiwicGljdHVyZSI6Imh0dHBzOi8vcy5ncmF2YXRhci5jb20vYXZhdGFyLzUzZDNmMjQ0MDdkNTI1N2Y4NGYyN2NhMDc4NzRiZDY0P3M9NDgwJnI9cGcmZD1odHRwcyUzQSUyRiUyRmNkbi5hdXRoMC5jb20lMkZhdmF0YXJzJTJGZWQucG5nIiwidXBkYXRlZF9hdCI6IjIwMjQtMTEtMjJUMTI6NTA6MjUuMjI2WiIsImVtYWlsIjoiZWR3YXJkLm1pZGRsZXRvbnNtaXRoQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIiwiYXVkIjoiZ0dqeXRxTk1XQ2hTaXhxTzcyUlF6VkhXQWFlSkp6UmkiLCJpYXQiOjE3MzIyNzk4MjYsImV4cCI6MTczMjMxNTgyNiwic3ViIjoiYXV0aDB8NjU4MmI5NWM4OTVkMDlhNzBiYTEwZmVmIiwic2lkIjoia2FtQUprQW1SaF9va0w3T2x0aFJvTEtkR0JKbjhYMGUiLCJub25jZSI6InZmMzhSeUNaUTRlUHRKRmhaTUdYIn0.oMQD6ejzlZXR4wLToNnK_G6W9mbfAAMYOpOMce4B9ZRSwvCCIvHY--RyNNxFvpRDVgZaZylE1IHddNavNuCuk9v0LEg6y-25m1AwNo2ff3SlQsOQvqRlFO60MhzFnwIW2SZeTzufsD2qMVbvBcVbqKVYQSm8TyxyFsoGINroeQmBeAc82_m_OPUjPgHUkUi2kWTmVWSCVvbh7G25JwQjkBJvdwLDr-d4_HNuzUNFCjFtCvGpFtByi4w_eNq8E1KseJWh7dS_0z6J7tJWt_pBPHG_UISXcxo27kkREkB0aVbj4zzVfUU0Ta-NneEr4VTyz3KNo7r1574rIPrfVWzMsQ', 'scope': 'openid profile email', 'token_type': 'Bearer', 'userinfo': {'aud': 'gGjytqNMWChSixqO72RQzVHWAaeJJzRi', 'email': 'edward.middletonsmith@gmail.com', 'email_verified': False, 'exp': 1732315826, 'iat': 1732279826, 'iss': 'https://dev-nwak2066ef6h8ixn.us.auth0.com/', 'name': 'edward.middletonsmith@gmail.com', 'nickname': 'edward.middletonsmith', 'nonce': 'vf38RyCZQ4ePtJFhZMGX', 'picture': 'https://s.gravatar.com/avatar/53d3f24407d5257f84f27ca07874bd64?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fed.png', 'sid': 'kamAJkAmRh_okL7OlthRoLKdGBJn8X0e', 'sub': 'auth0|6582b95c895d09a70ba10fef', 'updated_at': '2024-11-22T12:50:25.226Z'}}}>
|
|
||||||
DataStore_Base.get_user_session
|
|
||||||
User.from_json
|
|
||||||
json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}
|
|
||||||
user:
|
|
||||||
id_user: 1
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: Teddy
|
|
||||||
surname: Middleton-Smith
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: True
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: True
|
|
||||||
can_admin_store: True
|
|
||||||
can_admin_user: True
|
|
||||||
|
|
||||||
User.from_json
|
|
||||||
json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}
|
|
||||||
user:
|
|
||||||
id_user: 1
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: Teddy
|
|
||||||
surname: Middleton-Smith
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: True
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: True
|
|
||||||
can_admin_store: True
|
|
||||||
can_admin_user: True
|
|
||||||
|
|
||||||
argument_dict: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0}
|
|
||||||
executing p_get_many_user
|
|
||||||
DataStore_Base.db_procedure_execute
|
|
||||||
proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug)
|
|
||||||
args: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0}
|
|
||||||
result: <sqlalchemy.engine.cursor.CursorResult object at 0x000001CAA039E580>
|
|
||||||
data received
|
|
||||||
raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),)
|
|
||||||
raw errors: ()
|
|
||||||
new result set: ()
|
|
||||||
model_view_base init end - model.user:
|
|
||||||
id_user: 1
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: Teddy
|
|
||||||
surname: Middleton-Smith
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: True
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: True
|
|
||||||
can_admin_store: True
|
|
||||||
can_admin_user: True
|
|
||||||
|
|
||||||
Redirecting to https://dev-nwak2066ef6h8ixn.us.auth0.com/v2/logout?returnTo=http%3A%2F%2F127.0.0.1%3A5000%2Flogout_callback&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi
|
|
||||||
session: <SecureCookieSession {'_permanent': True}>
|
|
||||||
DataStore_Base.get_user_session
|
|
||||||
model_view_base init end - model.user:
|
|
||||||
id_user: 0
|
|
||||||
id_user_auth0: None
|
|
||||||
firstname: None
|
|
||||||
surname: None
|
|
||||||
email: None
|
|
||||||
is_email_verified: None
|
|
||||||
is_super_user: None
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: None
|
|
||||||
can_admin_store: None
|
|
||||||
can_admin_user: None
|
|
||||||
|
|
||||||
login
|
|
||||||
method=POST
|
|
||||||
data={'callback': '/', 'X-CSRFToken': 'IjE2ODlhNTlkY2VmYzMwODRlZDAzYzhkYmNlOGU3Y2EyODA3NjhmODEi.Z0B-cw.7GSddkmtZoja9ghsAUue88aIHVc'}
|
|
||||||
hash_callback: /
|
|
||||||
redirect uri: http://127.0.0.1:5000/login_callback
|
|
||||||
Before red
|
|
||||||
redirect: <Response 701 bytes [302 FOUND]>
|
|
||||||
headers: https://dev-nwak2066ef6h8ixn.us.auth0.com/authorize?response_type=code&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi&redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Flogin_callback&scope=openid+profile+email&state=%2F&nonce=7BEeuPyj8DYvESfw4FGM
|
|
||||||
|
|
||||||
OAuth Authorize Redirect URL:
|
|
||||||
|
|
||||||
Base URL: https://dev-nwak2066ef6h8ixn.us.auth0.com/authorize
|
|
||||||
ParseResult(scheme='https', netloc='dev-nwak2066ef6h8ixn.us.auth0.com', path='/authorize', params='', query='response_type=code&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi&redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Flogin_callback&scope=openid+profile+email&state=%2F&nonce=7BEeuPyj8DYvESfw4FGM', fragment='')
|
|
||||||
|
|
||||||
Query Parameters: {'response_type': ['code'], 'client_id': ['gGjytqNMWChSixqO72RQzVHWAaeJJzRi'], 'redirect_uri': ['http://127.0.0.1:5000/login_callback'], 'scope': ['openid profile email'], 'state': ['/'], 'nonce': ['7BEeuPyj8DYvESfw4FGM']}
|
|
||||||
|
|
||||||
login_callback
|
|
||||||
147
app.log.3
147
app.log.3
@@ -1,147 +0,0 @@
|
|||||||
user:
|
|
||||||
id_user: 1
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: Teddy
|
|
||||||
surname: Middleton-Smith
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: True
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: True
|
|
||||||
can_admin_store: True
|
|
||||||
can_admin_user: True
|
|
||||||
|
|
||||||
argument_dict: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0}
|
|
||||||
executing p_get_many_user
|
|
||||||
DataStore_Base.db_procedure_execute
|
|
||||||
proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug)
|
|
||||||
args: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0}
|
|
||||||
result: <sqlalchemy.engine.cursor.CursorResult object at 0x00000204876FA740>
|
|
||||||
data received
|
|
||||||
raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),)
|
|
||||||
raw errors: ()
|
|
||||||
new result set: ()
|
|
||||||
model_view_base init end - model.user:
|
|
||||||
id_user: 1
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: Teddy
|
|
||||||
surname: Middleton-Smith
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: True
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: True
|
|
||||||
can_admin_store: True
|
|
||||||
can_admin_user: True
|
|
||||||
|
|
||||||
Redirecting to https://dev-nwak2066ef6h8ixn.us.auth0.com/v2/logout?returnTo=http%3A%2F%2F127.0.0.1%3A5000%2Flogout_callback&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi
|
|
||||||
Redirecting to https://dev-nwak2066ef6h8ixn.us.auth0.com/v2/logout?returnTo=http%3A%2F%2F127.0.0.1%3A5000%2Flogout_callback&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi
|
|
||||||
session: <SecureCookieSession {'_permanent': True}>
|
|
||||||
DataStore_Base.get_user_session
|
|
||||||
model_view_base init end - model.user:
|
|
||||||
id_user: 0
|
|
||||||
id_user_auth0: None
|
|
||||||
firstname: None
|
|
||||||
surname: None
|
|
||||||
email: None
|
|
||||||
is_email_verified: None
|
|
||||||
is_super_user: None
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: None
|
|
||||||
can_admin_store: None
|
|
||||||
can_admin_user: None
|
|
||||||
|
|
||||||
session: <SecureCookieSession {'_permanent': True, 'csrf_token': '609aa5890b61ec21cc66550109ca31cc7e3eaa3d'}>
|
|
||||||
DataStore_Base.get_user_session
|
|
||||||
model_view_base init end - model.user:
|
|
||||||
id_user: 0
|
|
||||||
id_user_auth0: None
|
|
||||||
firstname: None
|
|
||||||
surname: None
|
|
||||||
email: None
|
|
||||||
is_email_verified: None
|
|
||||||
is_super_user: None
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: None
|
|
||||||
can_admin_store: None
|
|
||||||
can_admin_user: None
|
|
||||||
|
|
||||||
config_env: development
|
|
||||||
config_env: development
|
|
||||||
config_env: development
|
|
||||||
session: <SecureCookieSession {'_permanent': True, 'csrf_token': '609aa5890b61ec21cc66550109ca31cc7e3eaa3d'}>
|
|
||||||
DataStore_Base.get_user_session
|
|
||||||
model_view_base init end - model.user:
|
|
||||||
id_user: 0
|
|
||||||
id_user_auth0: None
|
|
||||||
firstname: None
|
|
||||||
surname: None
|
|
||||||
email: None
|
|
||||||
is_email_verified: None
|
|
||||||
is_super_user: None
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: None
|
|
||||||
can_admin_store: None
|
|
||||||
can_admin_user: None
|
|
||||||
|
|
||||||
login
|
|
||||||
method=POST
|
|
||||||
data={'callback': '/', 'X-CSRFToken': 'IjYwOWFhNTg5MGI2MWVjMjFjYzY2NTUwMTA5Y2EzMWNjN2UzZWFhM2Qi.Z0B-CQ.TTYIfFRtsGgQfnlBDsEy9k9ixBk'}
|
|
||||||
hash_callback: /
|
|
||||||
redirect uri: http://127.0.0.1:5000/login_callback
|
|
||||||
Before red
|
|
||||||
redirect: <Response 701 bytes [302 FOUND]>
|
|
||||||
headers: https://dev-nwak2066ef6h8ixn.us.auth0.com/authorize?response_type=code&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi&redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Flogin_callback&scope=openid+profile+email&state=%2F&nonce=vf38RyCZQ4ePtJFhZMGX
|
|
||||||
|
|
||||||
OAuth Authorize Redirect URL:
|
|
||||||
|
|
||||||
Base URL: https://dev-nwak2066ef6h8ixn.us.auth0.com/authorize
|
|
||||||
ParseResult(scheme='https', netloc='dev-nwak2066ef6h8ixn.us.auth0.com', path='/authorize', params='', query='response_type=code&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi&redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Flogin_callback&scope=openid+profile+email&state=%2F&nonce=vf38RyCZQ4ePtJFhZMGX', fragment='')
|
|
||||||
|
|
||||||
Query Parameters: {'response_type': ['code'], 'client_id': ['gGjytqNMWChSixqO72RQzVHWAaeJJzRi'], 'redirect_uri': ['http://127.0.0.1:5000/login_callback'], 'scope': ['openid profile email'], 'state': ['/'], 'nonce': ['vf38RyCZQ4ePtJFhZMGX']}
|
|
||||||
|
|
||||||
login_callback
|
|
||||||
User.from_json_auth0
|
|
||||||
json: {'access_token': 'eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIn0..PT10sdrXdrY56k-9.rU-DfkB98x5UEnQYnVi7819a1BotlXjB9IR3yCeRHKL3iVCQIcCm8-Cld93CGXBk9-74i_xFgke7wuY-K8hmzNt-R6XG8tikkKZDPvQzKQjsykgDOXxIHK2VQfIacOJILmLIa9XTB93gnKUUha9besm2nrRIluOSfe_sJgU7AhYQ3lWpoWyh-oGzjsO5ObGepcDuzikz5zK7kst90DYFHezFrDEPJwSXU8bBkm0DN6WNGOg3wumMG7BZvoi5TNhgGUleoxlr1w3RFgJZg_7ra_eNWXY9_d_dbF9Hc7F_Enhr1ZtSpW2LsX7MOlReoDEzM---S-3hbXVXuEfgufISqkbV.bRWgAFRVOFi8SejsOC3i3Q', 'id_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InVveXZURk44bjJvZHg1VkFLMFh1RyJ9.eyJuaWNrbmFtZSI6ImVkd2FyZC5taWRkbGV0b25zbWl0aCIsIm5hbWUiOiJlZHdhcmQubWlkZGxldG9uc21pdGhAZ21haWwuY29tIiwicGljdHVyZSI6Imh0dHBzOi8vcy5ncmF2YXRhci5jb20vYXZhdGFyLzUzZDNmMjQ0MDdkNTI1N2Y4NGYyN2NhMDc4NzRiZDY0P3M9NDgwJnI9cGcmZD1odHRwcyUzQSUyRiUyRmNkbi5hdXRoMC5jb20lMkZhdmF0YXJzJTJGZWQucG5nIiwidXBkYXRlZF9hdCI6IjIwMjQtMTEtMjJUMTI6NTA6MjUuMjI2WiIsImVtYWlsIjoiZWR3YXJkLm1pZGRsZXRvbnNtaXRoQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIiwiYXVkIjoiZ0dqeXRxTk1XQ2hTaXhxTzcyUlF6VkhXQWFlSkp6UmkiLCJpYXQiOjE3MzIyNzk4MjYsImV4cCI6MTczMjMxNTgyNiwic3ViIjoiYXV0aDB8NjU4MmI5NWM4OTVkMDlhNzBiYTEwZmVmIiwic2lkIjoia2FtQUprQW1SaF9va0w3T2x0aFJvTEtkR0JKbjhYMGUiLCJub25jZSI6InZmMzhSeUNaUTRlUHRKRmhaTUdYIn0.oMQD6ejzlZXR4wLToNnK_G6W9mbfAAMYOpOMce4B9ZRSwvCCIvHY--RyNNxFvpRDVgZaZylE1IHddNavNuCuk9v0LEg6y-25m1AwNo2ff3SlQsOQvqRlFO60MhzFnwIW2SZeTzufsD2qMVbvBcVbqKVYQSm8TyxyFsoGINroeQmBeAc82_m_OPUjPgHUkUi2kWTmVWSCVvbh7G25JwQjkBJvdwLDr-d4_HNuzUNFCjFtCvGpFtByi4w_eNq8E1KseJWh7dS_0z6J7tJWt_pBPHG_UISXcxo27kkREkB0aVbj4zzVfUU0Ta-NneEr4VTyz3KNo7r1574rIPrfVWzMsQ', 'scope': 'openid profile email', 'expires_in': 86400, 'token_type': 'Bearer', 'expires_at': 1732366225, 'userinfo': {'nickname': 'edward.middletonsmith', 'name': 'edward.middletonsmith@gmail.com', 'picture': 'https://s.gravatar.com/avatar/53d3f24407d5257f84f27ca07874bd64?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fed.png', 'updated_at': '2024-11-22T12:50:25.226Z', 'email': 'edward.middletonsmith@gmail.com', 'email_verified': False, 'iss': 'https://dev-nwak2066ef6h8ixn.us.auth0.com/', 'aud': 'gGjytqNMWChSixqO72RQzVHWAaeJJzRi', 'iat': 1732279826, 'exp': 1732315826, 'sub': 'auth0|6582b95c895d09a70ba10fef', 'sid': 'kamAJkAmRh_okL7OlthRoLKdGBJn8X0e', 'nonce': 'vf38RyCZQ4ePtJFhZMGX'}}
|
|
||||||
user:
|
|
||||||
id_user: None
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: None
|
|
||||||
surname: None
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: None
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: None
|
|
||||||
can_admin_store: None
|
|
||||||
can_admin_user: None
|
|
||||||
|
|
||||||
user:
|
|
||||||
id_user: None
|
|
||||||
id_user_auth0: auth0|6582b95c895d09a70ba10fef
|
|
||||||
firstname: None
|
|
||||||
surname: None
|
|
||||||
email: edward.middletonsmith@gmail.com
|
|
||||||
is_email_verified: False
|
|
||||||
is_super_user: None
|
|
||||||
id_currency_default: None
|
|
||||||
id_region_default: None
|
|
||||||
is_included_VAT_default: None
|
|
||||||
can_admin_store: None
|
|
||||||
can_admin_user: None
|
|
||||||
|
|
||||||
DataStore_User.get_many_user
|
|
||||||
DataStore_Base.db_procedure_execute
|
|
||||||
proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug)
|
|
||||||
args: {'a_id_user': None, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': '', 'ids_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'a_debug': 0}
|
|
||||||
result: <sqlalchemy.engine.cursor.CursorResult object at 0x000001CAA03D9D30>
|
|
||||||
raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),)
|
|
||||||
type result set: <class 'tuple'>
|
|
||||||
len result set: 1
|
|
||||||
row: (1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00')
|
|
||||||
Binary file not shown.
@@ -125,7 +125,7 @@ class Manufacturing_Purchase_Order_Product_Link(db.Model, Store_Base):
|
|||||||
id_permutation = db.Column(db.Integer)
|
id_permutation = db.Column(db.Integer)
|
||||||
id_unit_quantity = db.Column(db.Integer)
|
id_unit_quantity = db.Column(db.Integer)
|
||||||
name_permutation = db.Column(db.String(255))
|
name_permutation = db.Column(db.String(255))
|
||||||
csv_id_pairs_variation = db.Column(db.String(4000))
|
csv_id_pairs_variation = db.Column(db.String)
|
||||||
quantity_used = db.Column(db.Float)
|
quantity_used = db.Column(db.Float)
|
||||||
quantity_produced = db.Column(db.Float)
|
quantity_produced = db.Column(db.Float)
|
||||||
id_unit_latency_manufacture = db.Column(db.Integer)
|
id_unit_latency_manufacture = db.Column(db.Integer)
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ class Product_Permutation(db.Model, Store_Base):
|
|||||||
FLAG_DOES_EXPIRE_FASTER_ONCE_UNSEALED = 'does_expire_faster_once_unsealed'
|
FLAG_DOES_EXPIRE_FASTER_ONCE_UNSEALED = 'does_expire_faster_once_unsealed'
|
||||||
FLAG_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED = f'{Unit_Measurement.ATTR_ID_UNIT_MEASUREMENT}_interval_expiration_unsealed'
|
FLAG_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED = f'{Unit_Measurement.ATTR_ID_UNIT_MEASUREMENT}_interval_expiration_unsealed'
|
||||||
FLAG_SYMBOL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED = f'{Unit_Measurement.FLAG_SYMBOL}_interval_expiration_unsealed'
|
FLAG_SYMBOL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED = f'{Unit_Measurement.FLAG_SYMBOL}_interval_expiration_unsealed'
|
||||||
FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_INTERVAL_EXPIRATION_UNSEALED = f'{Unit_Measurement.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX}_interval_expiration_unsealed'
|
FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED = f'{Unit_Measurement.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX}_interval_expiration_unsealed'
|
||||||
FLAG_NAME_SINGULAR_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED = f'{Unit_Measurement.FLAG_NAME_SINGULAR}_interval_expiration_unsealed'
|
FLAG_NAME_SINGULAR_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED = f'{Unit_Measurement.FLAG_NAME_SINGULAR}_interval_expiration_unsealed'
|
||||||
FLAG_NAME_PLURAL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED = f'{Unit_Measurement.FLAG_NAME_PLURAL}_interval_expiration_unsealed'
|
FLAG_NAME_PLURAL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED = f'{Unit_Measurement.FLAG_NAME_PLURAL}_interval_expiration_unsealed'
|
||||||
FLAG_COUNT_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED = 'count_interval_expiration_unsealed'
|
FLAG_COUNT_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED = 'count_interval_expiration_unsealed'
|
||||||
@@ -103,7 +103,7 @@ class Product_Permutation(db.Model, Store_Base):
|
|||||||
does_expire_faster_once_unsealed = db.Column(db.Boolean)
|
does_expire_faster_once_unsealed = db.Column(db.Boolean)
|
||||||
id_unit_measurement_interval_expiration_unsealed = db.Column(db.Integer)
|
id_unit_measurement_interval_expiration_unsealed = db.Column(db.Integer)
|
||||||
symbol_unit_measurement_interval_expiration_unsealed = db.Column(db.String(50))
|
symbol_unit_measurement_interval_expiration_unsealed = db.Column(db.String(50))
|
||||||
symbol_is_suffix_not_prefix_unit_interval_expiration_unsealed = db.Column(db.Boolean)
|
symbol_is_suffix_not_prefix_unit_measurement_interval_expiration_unsealed = db.Column(db.Boolean)
|
||||||
name_singular_unit_measurement_interval_expiration_unsealed = db.Column(db.String(255))
|
name_singular_unit_measurement_interval_expiration_unsealed = db.Column(db.String(255))
|
||||||
name_plural_unit_measurement_interval_expiration_unsealed = db.Column(db.String(256))
|
name_plural_unit_measurement_interval_expiration_unsealed = db.Column(db.String(256))
|
||||||
count_interval_expiration_unsealed = db.Column(db.Integer)
|
count_interval_expiration_unsealed = db.Column(db.Integer)
|
||||||
@@ -174,7 +174,7 @@ class Product_Permutation(db.Model, Store_Base):
|
|||||||
permutation.does_expire_faster_once_unsealed = av.input_bool(query_row[28], "does_expire_faster_once_unsealed", _m, v_arg_type=v_arg_type)
|
permutation.does_expire_faster_once_unsealed = av.input_bool(query_row[28], "does_expire_faster_once_unsealed", _m, v_arg_type=v_arg_type)
|
||||||
permutation.id_unit_measurement_interval_expiration_unsealed = query_row[29]
|
permutation.id_unit_measurement_interval_expiration_unsealed = query_row[29]
|
||||||
permutation.symbol_unit_measurement_interval_expiration_unsealed = query_row[30]
|
permutation.symbol_unit_measurement_interval_expiration_unsealed = query_row[30]
|
||||||
permutation.symbol_is_suffix_not_prefix_unit_interval_expiration_unsealed = av.input_bool(query_row[31], cls.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_INTERVAL_EXPIRATION_UNSEALED, _m, v_arg_type=v_arg_type)
|
permutation.symbol_is_suffix_not_prefix_unit_measurement_interval_expiration_unsealed = av.input_bool(query_row[31], cls.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED, _m, v_arg_type=v_arg_type)
|
||||||
permutation.name_singular_unit_measurement_interval_expiration_unsealed = query_row[32]
|
permutation.name_singular_unit_measurement_interval_expiration_unsealed = query_row[32]
|
||||||
permutation.name_plural_unit_measurement_interval_expiration_unsealed = query_row[33]
|
permutation.name_plural_unit_measurement_interval_expiration_unsealed = query_row[33]
|
||||||
permutation.count_interval_expiration_unsealed = query_row[34]
|
permutation.count_interval_expiration_unsealed = query_row[34]
|
||||||
@@ -248,7 +248,7 @@ class Product_Permutation(db.Model, Store_Base):
|
|||||||
permutation.does_expire_faster_once_unsealed = 1 if av.input_bool(json[cls.FLAG_DOES_EXPIRE_FASTER_ONCE_UNSEALED], cls.FLAG_DOES_EXPIRE_FASTER_ONCE_UNSEALED, _m) else 0
|
permutation.does_expire_faster_once_unsealed = 1 if av.input_bool(json[cls.FLAG_DOES_EXPIRE_FASTER_ONCE_UNSEALED], cls.FLAG_DOES_EXPIRE_FASTER_ONCE_UNSEALED, _m) else 0
|
||||||
permutation.id_unit_measurement_interval_expiration_unsealed = json[cls.FLAG_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED] if json[cls.FLAG_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED] != '' else None
|
permutation.id_unit_measurement_interval_expiration_unsealed = json[cls.FLAG_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED] if json[cls.FLAG_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED] != '' else None
|
||||||
permutation.symbol_unit_measurement_interval_expiration_unsealed = json.get(cls.FLAG_SYMBOL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED)
|
permutation.symbol_unit_measurement_interval_expiration_unsealed = json.get(cls.FLAG_SYMBOL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED)
|
||||||
permutation.symbol_is_suffix_not_prefix_unit_interval_expiration_unsealed = json.get(cls.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_INTERVAL_EXPIRATION_UNSEALED)
|
permutation.symbol_is_suffix_not_prefix_unit_measurement_interval_expiration_unsealed = json.get(cls.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED)
|
||||||
permutation.name_singular_unit_measurement_interval_expiration_unsealed = json.get(cls.FLAG_NAME_SINGULAR_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED)
|
permutation.name_singular_unit_measurement_interval_expiration_unsealed = json.get(cls.FLAG_NAME_SINGULAR_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED)
|
||||||
permutation.name_plural_unit_measurement_interval_expiration_unsealed = json.get(cls.FLAG_NAME_PLURAL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED)
|
permutation.name_plural_unit_measurement_interval_expiration_unsealed = json.get(cls.FLAG_NAME_PLURAL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED)
|
||||||
permutation.count_interval_expiration_unsealed = json[cls.FLAG_COUNT_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED] if json[cls.FLAG_COUNT_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED] != '' else None
|
permutation.count_interval_expiration_unsealed = json[cls.FLAG_COUNT_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED] if json[cls.FLAG_COUNT_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED] != '' else None
|
||||||
@@ -295,7 +295,7 @@ class Product_Permutation(db.Model, Store_Base):
|
|||||||
self.FLAG_DOES_EXPIRE_FASTER_ONCE_UNSEALED: self.does_expire_faster_once_unsealed,
|
self.FLAG_DOES_EXPIRE_FASTER_ONCE_UNSEALED: self.does_expire_faster_once_unsealed,
|
||||||
self.FLAG_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: self.id_unit_measurement_interval_expiration_unsealed,
|
self.FLAG_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: self.id_unit_measurement_interval_expiration_unsealed,
|
||||||
self.FLAG_SYMBOL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: self.symbol_unit_measurement_interval_expiration_unsealed,
|
self.FLAG_SYMBOL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: self.symbol_unit_measurement_interval_expiration_unsealed,
|
||||||
self.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_INTERVAL_EXPIRATION_UNSEALED: self.symbol_is_suffix_not_prefix_unit_interval_expiration_unsealed,
|
self.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: self.symbol_is_suffix_not_prefix_unit_measurement_interval_expiration_unsealed,
|
||||||
self.FLAG_NAME_SINGULAR_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: self.name_singular_unit_measurement_interval_expiration_unsealed,
|
self.FLAG_NAME_SINGULAR_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: self.name_singular_unit_measurement_interval_expiration_unsealed,
|
||||||
self.FLAG_NAME_PLURAL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: self.name_plural_unit_measurement_interval_expiration_unsealed,
|
self.FLAG_NAME_PLURAL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: self.name_plural_unit_measurement_interval_expiration_unsealed,
|
||||||
self.FLAG_COUNT_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: self.count_interval_expiration_unsealed,
|
self.FLAG_COUNT_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: self.count_interval_expiration_unsealed,
|
||||||
@@ -380,7 +380,7 @@ class Product_Permutation(db.Model, Store_Base):
|
|||||||
does_expire_faster_once_unsealed: {self.does_expire_faster_once_unsealed}
|
does_expire_faster_once_unsealed: {self.does_expire_faster_once_unsealed}
|
||||||
id_unit_measurement_interval_expiration_unsealed: {self.id_unit_measurement_interval_expiration_unsealed}
|
id_unit_measurement_interval_expiration_unsealed: {self.id_unit_measurement_interval_expiration_unsealed}
|
||||||
symbol_unit_measurement_interval_expiration_unsealed: {self.symbol_unit_measurement_interval_expiration_unsealed}
|
symbol_unit_measurement_interval_expiration_unsealed: {self.symbol_unit_measurement_interval_expiration_unsealed}
|
||||||
symbol_is_suffix_not_prefix_unit_interval_expiration_unsealed: {self.symbol_is_suffix_not_prefix_unit_interval_expiration_unsealed}
|
symbol_is_suffix_not_prefix_unit_measurement_interval_expiration_unsealed: {self.symbol_is_suffix_not_prefix_unit_measurement_interval_expiration_unsealed}
|
||||||
name_singular_unit_measurement_interval_expiration_unsealed: {self.name_singular_unit_measurement_interval_expiration_unsealed}
|
name_singular_unit_measurement_interval_expiration_unsealed: {self.name_singular_unit_measurement_interval_expiration_unsealed}
|
||||||
name_plural_unit_measurement_interval_expiration_unsealed: {self.name_plural_unit_measurement_interval_expiration_unsealed}
|
name_plural_unit_measurement_interval_expiration_unsealed: {self.name_plural_unit_measurement_interval_expiration_unsealed}
|
||||||
count_interval_expiration_unsealed: {self.count_interval_expiration_unsealed}
|
count_interval_expiration_unsealed: {self.count_interval_expiration_unsealed}
|
||||||
|
|||||||
@@ -14,14 +14,12 @@ Datastore for Store Product Categories
|
|||||||
import lib.argument_validation as av
|
import lib.argument_validation as av
|
||||||
from business_objects.store.product_category import Product_Category_Container, Product_Category, Product_Category_Temp
|
from business_objects.store.product_category import Product_Category_Container, Product_Category, Product_Category_Temp
|
||||||
from business_objects.sql_error import SQL_Error
|
from business_objects.sql_error import SQL_Error
|
||||||
# from datastores.datastore_base import Table_Shop_Product_Category, Table_Shop_Product_Category_Temp
|
|
||||||
from datastores.datastore_store_base import DataStore_Store_Base
|
from datastores.datastore_store_base import DataStore_Store_Base
|
||||||
from helpers.helper_app import Helper_App
|
from helpers.helper_app import Helper_App
|
||||||
from helpers.helper_db_mysql import Helper_DB_MySQL
|
from helpers.helper_db_mysql import Helper_DB_MySQL
|
||||||
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
|
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
|
||||||
from extensions import db
|
from extensions import db
|
||||||
# external
|
# external
|
||||||
# from abc import ABC, abstractmethod, abstractproperty
|
|
||||||
from flask_sqlalchemy import SQLAlchemy
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
from sqlalchemy import text
|
from sqlalchemy import text
|
||||||
import stripe
|
import stripe
|
||||||
@@ -40,8 +38,6 @@ class DataStore_Store_Product_Category(DataStore_Store_Base):
|
|||||||
_m = 'DataStore_Store_Product_Category.save_categories'
|
_m = 'DataStore_Store_Product_Category.save_categories'
|
||||||
Helper_App.console_log(f'{_m}\nstarting...')
|
Helper_App.console_log(f'{_m}\nstarting...')
|
||||||
Helper_App.console_log(f'comment: {comment}\ncategories: {categories}')
|
Helper_App.console_log(f'comment: {comment}\ncategories: {categories}')
|
||||||
# av.val_str(comment, 'comment', _m)
|
|
||||||
# av.val_list_instances(categories, 'categories', _m, Product_Category, 1)
|
|
||||||
|
|
||||||
guid = Helper_DB_MySQL.create_guid()
|
guid = Helper_DB_MySQL.create_guid()
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
@@ -50,32 +46,15 @@ class DataStore_Store_Product_Category(DataStore_Store_Base):
|
|||||||
id_category_new = 0
|
id_category_new = 0
|
||||||
for category in categories:
|
for category in categories:
|
||||||
row = Product_Category_Temp.from_product_category(category)
|
row = Product_Category_Temp.from_product_category(category)
|
||||||
# row = category.to_temporary_record()
|
|
||||||
# id_tmp =
|
|
||||||
if row.id_category == '':
|
if row.id_category == '':
|
||||||
id_category_new -= 1
|
id_category_new -= 1
|
||||||
row.id_category = id_category_new
|
row.id_category = id_category_new
|
||||||
else:
|
else:
|
||||||
Helper_App.console_log(f'row.id_category: {row.id_category}')
|
Helper_App.console_log(f'row.id_category: {row.id_category}')
|
||||||
row.guid = guid
|
row.guid = guid
|
||||||
# row.created_on = now
|
|
||||||
# row.created_by = user.id_user
|
|
||||||
rows.append(row)
|
rows.append(row)
|
||||||
|
|
||||||
Helper_App.console_log(f'rows: {rows}')
|
Helper_App.console_log(f'rows: {rows}')
|
||||||
"""
|
|
||||||
cursor = db.cursor()
|
|
||||||
Helper_App.console_log('cursor created')
|
|
||||||
cursor.executemany(
|
|
||||||
'INSERT INTO Shop_Product_Category_Temp (id_category, code, name, description, active, display_order, guid, created_on, created_by) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',
|
|
||||||
categories
|
|
||||||
)
|
|
||||||
Helper_App.console_log('bulk upload executed')
|
|
||||||
db.commit()
|
|
||||||
Helper_App.console_log('bulk upload committed')
|
|
||||||
cursor.close()
|
|
||||||
Helper_App.console_log('cursor closed')
|
|
||||||
"""
|
|
||||||
DataStore_Store_Base.upload_bulk(Product_Category_Temp.__tablename__, rows, 1000)
|
DataStore_Store_Base.upload_bulk(Product_Category_Temp.__tablename__, rows, 1000)
|
||||||
|
|
||||||
argument_dict_list = {
|
argument_dict_list = {
|
||||||
@@ -92,7 +71,7 @@ class DataStore_Store_Product_Category(DataStore_Store_Base):
|
|||||||
Helper_App.console_log(f'raw errors: {result_set_e}')
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
errors = []
|
errors = []
|
||||||
if len(result_set_e) > 0:
|
if len(result_set_e) > 0:
|
||||||
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
|
errors = [SQL_Error.from_DB_record(row) for row in result_set_e]
|
||||||
for error in errors:
|
for error in errors:
|
||||||
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -133,7 +133,7 @@ class Model_View_Store(Model_View_Base):
|
|||||||
FLAG_SUPPLIER_ADDRESS: ClassVar[str] = Store_Base.FLAG_SUPPLIER_ADDRESS
|
FLAG_SUPPLIER_ADDRESS: ClassVar[str] = Store_Base.FLAG_SUPPLIER_ADDRESS
|
||||||
FLAG_SUPPLIER_PURCHASE_ORDER: ClassVar[str] = Store_Base.FLAG_SUPPLIER_PURCHASE_ORDER
|
FLAG_SUPPLIER_PURCHASE_ORDER: ClassVar[str] = Store_Base.FLAG_SUPPLIER_PURCHASE_ORDER
|
||||||
FLAG_SYMBOL_CURRENCY_COST: ClassVar[str] = Product_Permutation.FLAG_SYMBOL_CURRENCY_COST
|
FLAG_SYMBOL_CURRENCY_COST: ClassVar[str] = Product_Permutation.FLAG_SYMBOL_CURRENCY_COST
|
||||||
FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_INTERVAL_EXPIRATION_UNSEALED: ClassVar[str] = Product_Permutation.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_INTERVAL_EXPIRATION_UNSEALED
|
FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: ClassVar[str] = Product_Permutation.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED
|
||||||
FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_INTERVAL_RECURRENCE: ClassVar[str] = Product_Permutation.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_INTERVAL_RECURRENCE
|
FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_INTERVAL_RECURRENCE: ClassVar[str] = Product_Permutation.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_INTERVAL_RECURRENCE
|
||||||
FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_QUANTITY: ClassVar[str] = Product_Permutation.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_QUANTITY
|
FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_QUANTITY: ClassVar[str] = Product_Permutation.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX_UNIT_MEASUREMENT_QUANTITY
|
||||||
FLAG_SYMBOL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: ClassVar[str] = Product_Permutation.FLAG_SYMBOL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED
|
FLAG_SYMBOL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED: ClassVar[str] = Product_Permutation.FLAG_SYMBOL_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ from config import app_config
|
|||||||
|
|
||||||
# VARIABLE INSTANTIATION
|
# VARIABLE INSTANTIATION
|
||||||
key_secret = os.environ.get("KEY_SECRET_STRIPE")
|
key_secret = os.environ.get("KEY_SECRET_STRIPE")
|
||||||
key_public = os.environ.get("KEY_PUBLIC_STRIPE") # 'pk_test_51OGrxlL7BuLKjoMpfpfw7bSmZZK1MhqMoQ5VhW2jUj7YtoEejO4vqnxKPiqTHHuh9U4qqkywbPCSI9TpFKtr4SYH007KHMWs68'
|
key_public = os.environ.get("KEY_PUBLIC_STRIPE")
|
||||||
|
|
||||||
# METHODS
|
# METHODS
|
||||||
def create_product_price():
|
def create_product_price():
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Drop dependencies
|
# Drop dependencies
|
||||||
DROP TABLE IF EXISTS tmp_Shop_Calc_User;
|
DROP TABLE IF EXISTS tmp_Shop_Calc_User;
|
||||||
DROP TABLE IF EXISTS tmp_Product_Calc_User;
|
DROP TABLE IF EXISTS tmp_Product_Calc_User;
|
||||||
DROP TABLE IF EXISTS tmp_Product_p_Shop_User_Eval;
|
DROP TABLE IF EXISTS tmp_Product_p_Shop_User_Eval;
|
||||||
@@ -55,7 +55,7 @@ DROP TABLE IF EXISTS tmp_Shop_Customer_Sale_Order;
|
|||||||
DROP TABLE IF EXISTS tmp_Get_Variation_From_Csv_Variations;
|
DROP TABLE IF EXISTS tmp_Get_Variation_From_Csv_Variations;
|
||||||
|
|
||||||
|
|
||||||
-- Delete old tables
|
# Delete old tables
|
||||||
DROP TABLE IF EXISTS Split_Temp;
|
DROP TABLE IF EXISTS Split_Temp;
|
||||||
DROP TABLE IF EXISTS Split_Key_Value_Pair_Csv_Temp;
|
DROP TABLE IF EXISTS Split_Key_Value_Pair_Csv_Temp;
|
||||||
DROP TABLE IF EXISTS Split_Key_Value_Pair_Temp;
|
DROP TABLE IF EXISTS Split_Key_Value_Pair_Temp;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Product Change Sets
|
# Product Change Sets
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Split Staging
|
# Split Staging
|
||||||
-- USE partsltd_prod;
|
-- USE partsltd_prod;
|
||||||
-- DROP TABLE IF EXISTS Split_Temp;
|
-- DROP TABLE IF EXISTS Split_Temp;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- User Change Sets
|
# User Change Sets
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Split Key Value Pair CSV Staging
|
# Split Key Value Pair CSV Staging
|
||||||
-- USE partsltd_prod;
|
-- USE partsltd_prod;
|
||||||
-- DROP TABLE IF EXISTS Split_Temp;
|
-- DROP TABLE IF EXISTS Split_Temp;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Sales And Purchasing Change Sets
|
# Sales And Purchasing Change Sets
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Access Levels
|
# Access Levels
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Access Level Audits
|
# Access Level Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Error Message Type
|
# Error Message Type
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- File Types
|
# File Types
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- File Type Audit
|
# File Type Audit
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Generic / shared properties
|
# Generic / shared properties
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Shop General Audits
|
# Shop General Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Image Types
|
# Image Types
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Image Type Audits
|
# Image Type Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Regions
|
# Regions
|
||||||
|
|
||||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Region';
|
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Region';
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Region Audits
|
# Region Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Region Temp
|
# Region Temp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Region Branchs
|
# Region Branchs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Region Audits
|
# Region Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Region Branch Temp
|
# Region Branch Temp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Addresses
|
# Addresses
|
||||||
|
|
||||||
|
|
||||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Address';
|
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Address';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Plant
|
# Plant
|
||||||
|
|
||||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Plant';
|
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Plant';
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Address Audits
|
# Address Audits
|
||||||
|
|
||||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Address_Audit';
|
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Address_Audit';
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Plant Audits
|
# Plant Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Plant Temp
|
# Plant Temp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Storage Location
|
# Storage Location
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Storage Location Audits
|
# Storage Location Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Storage Location Temp
|
# Storage Location Temp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Storage Location Branch
|
# Storage Location Branch
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Storage Location Branch Audits
|
# Storage Location Branch Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Storage Location Branch Temp
|
# Storage Location Branch Temp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Currencies
|
# Currencies
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Currency Audits
|
# Currency Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Currency Temp
|
# Currency Temp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Taxes and Surcharges
|
# Taxes and Surcharges
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Tax Or Surcharge Audits
|
# Tax Or Surcharge Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Taxes and Surcharges Temp
|
# Taxes and Surcharges Temp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Unit of Measurement
|
# Unit of Measurement
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Unit of Measurement Audits
|
# Unit of Measurement Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Unit of Measurement Conversion
|
# Unit of Measurement Conversion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Unit of Measurement Conversion Audits
|
# Unit of Measurement Conversion Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Categories
|
# Categories
|
||||||
|
|
||||||
|
|
||||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Category';
|
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Category';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Category Audits
|
# Category Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Categories Temp
|
# Categories Temp
|
||||||
|
|
||||||
-- DROP TABLE Shop_Product_Category_Temp;
|
-- DROP TABLE Shop_Product_Category_Temp;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Products
|
# Products
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product (
|
|||||||
/*
|
/*
|
||||||
price_GBP_full FLOAT,
|
price_GBP_full FLOAT,
|
||||||
price_GBP_min FLOAT,
|
price_GBP_min FLOAT,
|
||||||
-- ratio_discount_overall FLOAT NOT NULL DEFAULT 0,
|
# ratio_discount_overall FLOAT NOT NULL DEFAULT 0,
|
||||||
CONSTRAINT FK_Shop_Product_id_category
|
CONSTRAINT FK_Shop_Product_id_category
|
||||||
FOREIGN KEY (id_category)
|
FOREIGN KEY (id_category)
|
||||||
REFERENCES Shop_Product_Category(id_category)
|
REFERENCES Shop_Product_Category(id_category)
|
||||||
@@ -35,8 +35,8 @@ CREATE TABLE IF NOT EXISTS Shop_Product (
|
|||||||
CONSTRAINT FK_Shop_Product_id_access_level_required
|
CONSTRAINT FK_Shop_Product_id_access_level_required
|
||||||
FOREIGN KEY (id_access_level_required)
|
FOREIGN KEY (id_access_level_required)
|
||||||
REFERENCES Shop_Access_Level(id_access_level),
|
REFERENCES Shop_Access_Level(id_access_level),
|
||||||
-- id_stripe_product VARCHAR(100),
|
# id_stripe_product VARCHAR(100),
|
||||||
-- id_stripe_price VARCHAR(100) NOT NULL,
|
# id_stripe_price VARCHAR(100) NOT NULL,
|
||||||
active BIT NOT NULL DEFAULT 1,
|
active BIT NOT NULL DEFAULT 1,
|
||||||
display_order INT NOT NULL,
|
display_order INT NOT NULL,
|
||||||
created_on DATETIME NOT NULL,
|
created_on DATETIME NOT NULL,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Products
|
# Products
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Products Temp
|
# Products Temp
|
||||||
|
|
||||||
-- DROP TABLE IF EXISTS Shop_Product_Temp;
|
-- DROP TABLE IF EXISTS Shop_Product_Temp;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Product Permutation
|
# Product Permutation
|
||||||
|
|
||||||
-- DROP TABLE partsltd_prod.Shop_Product_Permutation;
|
-- DROP TABLE partsltd_prod.Shop_Product_Permutation;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Product Permutation Audits
|
# Product Permutation Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Product Permutation Temp
|
# Product Permutation Temp
|
||||||
|
|
||||||
-- DROP TABLE IF EXISTS Shop_Product_Permutation_Temp;
|
-- DROP TABLE IF EXISTS Shop_Product_Permutation_Temp;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Variation Types
|
# Variation Types
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Variation Type Audits
|
# Variation Type Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Variation Types Temp
|
# Variation Types Temp
|
||||||
|
|
||||||
-- DROP TABLE partsltd_prod.Shop_Variation_Type_Temp;
|
-- DROP TABLE partsltd_prod.Shop_Variation_Type_Temp;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Variations
|
# Variations
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Variation Audits
|
# Variation Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Variations Temp
|
# Variations Temp
|
||||||
|
|
||||||
-- DROP TABLE partsltd_prod.Shop_Variation_Temp;
|
-- DROP TABLE partsltd_prod.Shop_Variation_Temp;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Product Permutation Variation Link
|
# Product Permutation Variation Link
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Product Permutation Variation Link Audits
|
# Product Permutation Variation Link Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Product Permutation Variation Link
|
# Product Permutation Variation Link
|
||||||
|
|
||||||
-- DROP TABLE IF EXISTS Shop_Product_Permutation_Variation_Link_Temp;
|
-- DROP TABLE IF EXISTS Shop_Product_Permutation_Variation_Link_Temp;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Product Price
|
# Product Price
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Product Price Audits
|
# Product Price Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Product Price Temp
|
# Product Price Temp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Product Permutation Images
|
# Product Permutation Images
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Product Image Audits
|
# Product Image Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Delivery Options
|
# Delivery Options
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Delivery Option Audits
|
# Delivery Option Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Delivery Option
|
# Delivery Option
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Delivery Option Audits
|
# Delivery Option Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Discounts
|
# Discounts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Discount Audits
|
# Discount Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Discount Region Currency Link
|
# Discount Region Currency Link
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Discount Region Currency Link Audits
|
# Discount Region Currency Link Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Permission Groups
|
# Permission Groups
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Permission Group Audits
|
# Permission Group Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Permissions
|
# Permissions
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Permission Audits
|
# Permission Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Roles
|
# Roles
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Role Audits
|
# Role Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Role Permission link
|
# Role Permission link
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Role Permission link Audits
|
# Role Permission link Audits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
-- Users
|
# Users
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user