Finished up with migratione and clean up
of site_management module
This commit is contained in:
parent
49d06ad653
commit
fe34ddafe2
@ -1,11 +1,13 @@
|
|||||||
from flask import Blueprint, request, render_template, redirect, session, url_for, send_file, jsonify, Response
|
# 3RD PARTY IMPORTS
|
||||||
import psycopg2, math, json, datetime, main, copy, requests, process, database, pprint, MyDataclasses
|
from flask import (
|
||||||
from config import config, sites_config
|
Blueprint, request, render_template, redirect, session, jsonify
|
||||||
from main import unfoldCostLayers
|
)
|
||||||
|
import math
|
||||||
|
|
||||||
|
# APPLICATION IMPORTS
|
||||||
from user_api import login_required
|
from user_api import login_required
|
||||||
|
|
||||||
|
|
||||||
from application import postsqldb, database_payloads
|
from application import postsqldb, database_payloads
|
||||||
|
from application.site_management import site_management_database
|
||||||
|
|
||||||
site_management_api = Blueprint('site_management_api', __name__, template_folder="templates", static_folder="static")
|
site_management_api = Blueprint('site_management_api', __name__, template_folder="templates", static_folder="static")
|
||||||
|
|
||||||
@ -16,9 +18,12 @@ def site_management_index():
|
|||||||
sites = [site[1] for site in postsqldb.get_sites(session['user']['sites'])]
|
sites = [site[1] for site in postsqldb.get_sites(session['user']['sites'])]
|
||||||
if not session.get('user')['system_admin']:
|
if not session.get('user')['system_admin']:
|
||||||
return redirect('/logout')
|
return redirect('/logout')
|
||||||
return render_template("site_management.html", current_site=session['selected_site'], sites=sites)
|
site_name = session['selected_site']
|
||||||
|
zones = site_management_database.selectZonesTuples(site_name, convert=False)
|
||||||
|
return render_template("site_management.html", current_site=site_name, sites=sites, zones=zones)
|
||||||
|
|
||||||
# API CALLS
|
# API CALLS
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/getZones', methods=['GET'])
|
@site_management_api.route('/api/getZones', methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
def getZones():
|
def getZones():
|
||||||
@ -28,13 +33,12 @@ def getZones():
|
|||||||
page = int(request.args.get('page', 1))
|
page = int(request.args.get('page', 1))
|
||||||
limit = int(request.args.get('limit', 10))
|
limit = int(request.args.get('limit', 10))
|
||||||
offset = (page - 1) * limit
|
offset = (page - 1) * limit
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
records, count = site_management_database.paginateZonesTuples(site_name, (limit, offset))
|
||||||
records, count = postsqldb.ZonesTable.paginateZones(conn, site_name, (limit, offset))
|
|
||||||
return jsonify({'zones': records, "end": math.ceil(count/limit), 'error':False, 'message': 'Zones Loaded Successfully!'})
|
return jsonify({'zones': records, "end": math.ceil(count/limit), 'error':False, 'message': 'Zones Loaded Successfully!'})
|
||||||
return jsonify({'zones': records, "end": math.ceil(count/limit), 'error':True, 'message': 'There was a problem loading Zones!'})
|
return jsonify({'zones': records, "end": math.ceil(count/limit), 'error':True, 'message': 'There was a problem loading Zones!'})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/getLocations', methods=['GET'])
|
@site_management_api.route('/api/getLocations', methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
def getLocations():
|
def getLocations():
|
||||||
@ -44,13 +48,12 @@ def getLocations():
|
|||||||
page = int(request.args.get('page', 1))
|
page = int(request.args.get('page', 1))
|
||||||
limit = int(request.args.get('limit', 10))
|
limit = int(request.args.get('limit', 10))
|
||||||
offset = (page - 1) * limit
|
offset = (page - 1) * limit
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
records, count = site_management_database.paginateLocationsTuples(site_name, (limit, offset))
|
||||||
records, count = postsqldb.LocationsTable.paginateLocations(conn, site_name, (limit, offset))
|
|
||||||
return jsonify({'locations': records, "end": math.ceil(count/limit), 'error':False, 'message': 'Zones Loaded Successfully!'})
|
return jsonify({'locations': records, "end": math.ceil(count/limit), 'error':False, 'message': 'Zones Loaded Successfully!'})
|
||||||
return jsonify({'locations': records, "end": math.ceil(count/limit), 'error':True, 'message': 'There was a problem loading Zones!'})
|
return jsonify({'locations': records, "end": math.ceil(count/limit), 'error':True, 'message': 'There was a problem loading Zones!'})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/getVendors', methods=['GET'])
|
@site_management_api.route('/api/getVendors', methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
def getVendors():
|
def getVendors():
|
||||||
@ -60,13 +63,12 @@ def getVendors():
|
|||||||
page = int(request.args.get('page', 1))
|
page = int(request.args.get('page', 1))
|
||||||
limit = int(request.args.get('limit', 10))
|
limit = int(request.args.get('limit', 10))
|
||||||
offset = (page - 1) * limit
|
offset = (page - 1) * limit
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
records, count = site_management_database.paginateVendorsTuples(site_name, (limit, offset))
|
||||||
records, count = postsqldb.VendorsTable.paginateVendors(conn, site_name, (limit, offset))
|
|
||||||
return jsonify({'vendors': records, "end": math.ceil(count/limit), 'error':False, 'message': 'Zones Loaded Successfully!'})
|
return jsonify({'vendors': records, "end": math.ceil(count/limit), 'error':False, 'message': 'Zones Loaded Successfully!'})
|
||||||
return jsonify({'vendors': records, "end": math.ceil(count/limit), 'error':True, 'message': 'There was a problem loading Zones!'})
|
return jsonify({'vendors': records, "end": math.ceil(count/limit), 'error':True, 'message': 'There was a problem loading Zones!'})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/getBrands', methods=['GET'])
|
@site_management_api.route('/api/getBrands', methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
def getBrands():
|
def getBrands():
|
||||||
@ -76,13 +78,12 @@ def getBrands():
|
|||||||
page = int(request.args.get('page', 1))
|
page = int(request.args.get('page', 1))
|
||||||
limit = int(request.args.get('limit', 10))
|
limit = int(request.args.get('limit', 10))
|
||||||
offset = (page - 1) * limit
|
offset = (page - 1) * limit
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
records, count = site_management_database.paginateBrandsTuples(site_name, (limit, offset))
|
||||||
records, count = postsqldb.BrandsTable.paginateBrands(conn, site_name, (limit, offset))
|
|
||||||
return jsonify({'brands': records, "end": math.ceil(count/limit), 'error':False, 'message': 'Zones Loaded Successfully!'})
|
return jsonify({'brands': records, "end": math.ceil(count/limit), 'error':False, 'message': 'Zones Loaded Successfully!'})
|
||||||
return jsonify({'brands': records, "end": math.ceil(count/limit), 'error':True, 'message': 'There was a problem loading Zones!'})
|
return jsonify({'brands': records, "end": math.ceil(count/limit), 'error':True, 'message': 'There was a problem loading Zones!'})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/getPrefixes', methods=['GET'])
|
@site_management_api.route('/api/getPrefixes', methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
def getPrefixes():
|
def getPrefixes():
|
||||||
@ -92,172 +93,103 @@ def getPrefixes():
|
|||||||
page = int(request.args.get('page', 1))
|
page = int(request.args.get('page', 1))
|
||||||
limit = int(request.args.get('limit', 10))
|
limit = int(request.args.get('limit', 10))
|
||||||
offset = (page - 1) * limit
|
offset = (page - 1) * limit
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
records, count = site_management_database.paginatePrefixesTuples(site_name, (limit, offset))
|
||||||
records, count = postsqldb.SKUPrefixTable.paginatePrefixes(conn, site_name, (limit, offset))
|
|
||||||
return jsonify({'prefixes': records, "end": math.ceil(count/limit), 'error':False, 'message': 'Zones Loaded Successfully!'})
|
return jsonify({'prefixes': records, "end": math.ceil(count/limit), 'error':False, 'message': 'Zones Loaded Successfully!'})
|
||||||
return jsonify({'prefixes': records, "end": math.ceil(count/limit), 'error':True, 'message': 'There was a problem loading Zones!'})
|
return jsonify({'prefixes': records, "end": math.ceil(count/limit), 'error':True, 'message': 'There was a problem loading Zones!'})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/postAddZone', methods=["POST"])
|
@site_management_api.route('/api/postAddZone', methods=["POST"])
|
||||||
def postAddZone():
|
def postAddZone():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
try:
|
zone = database_payloads.ZonesPayload(request.get_json()['name'], request.get_json()['description'])
|
||||||
with psycopg2.connect(**database_config) as conn:
|
site_management_database.insertZonesTuple(site_name, zone.payload())
|
||||||
with conn.cursor() as cur:
|
|
||||||
cur.execute(f"SELECT id FROM sites WHERE site_name = %s;", (site_name,))
|
|
||||||
site_id = cur.fetchone()[0]
|
|
||||||
zone = postsqldb.ZonesTable.Payload(
|
|
||||||
request.get_json()['name'],
|
|
||||||
request.get_json()['description']
|
|
||||||
)
|
|
||||||
postsqldb.ZonesTable.insert_tuple(conn, site_name, zone.payload())
|
|
||||||
except Exception as error:
|
|
||||||
conn.rollback()
|
|
||||||
return jsonify({'error': True, 'message': error})
|
|
||||||
return jsonify({'error': False, 'message': f"Zone added to {site_name}."})
|
return jsonify({'error': False, 'message': f"Zone added to {site_name}."})
|
||||||
return jsonify({'error': True, 'message': f"These was an error with adding this Zone to {site_name}."})
|
return jsonify({'error': True, 'message': f"These was an error with adding this Zone to {site_name}."})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/postEditZone', methods=["POST"])
|
@site_management_api.route('/api/postEditZone', methods=["POST"])
|
||||||
def postEditZone():
|
def postEditZone():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
try:
|
payload = {'id': request.get_json()['zone_id'], 'update': request.get_json()['update']}
|
||||||
with psycopg2.connect(**database_config) as conn:
|
zone = site_management_database.updateZonesTuple(site_name, payload)
|
||||||
payload = {'id': request.get_json()['zone_id'],
|
|
||||||
'update': request.get_json()['update']}
|
|
||||||
zone = postsqldb.ZonesTable.update_tuple(conn, site_name, payload)
|
|
||||||
except Exception as error:
|
|
||||||
conn.rollback()
|
|
||||||
return jsonify({'error': True, 'message': error})
|
|
||||||
return jsonify({'error': False, 'message': f"{zone['name']} edited in site {site_name}."})
|
return jsonify({'error': False, 'message': f"{zone['name']} edited in site {site_name}."})
|
||||||
return jsonify({'error': True, 'message': f"These was an error with editing Zone {zone['name']} in {site_name}."})
|
return jsonify({'error': True, 'message': f"These was an error with editing Zone {zone['name']} in {site_name}."})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/postAddLocation', methods=["POST"])
|
@site_management_api.route('/api/postAddLocation', methods=["POST"])
|
||||||
def postAddLocation():
|
def postAddLocation():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
try:
|
location = database_payloads.LocationsPayload(request.get_json()['uuid'], request.get_json()['name'], request.get_json()['zone_id'])
|
||||||
with psycopg2.connect(**database_config) as conn:
|
site_management_database.insertLocationsTuple(site_name, location.payload())
|
||||||
|
|
||||||
location = postsqldb.LocationsTable.Payload(
|
|
||||||
request.get_json()['uuid'],
|
|
||||||
request.get_json()['name'],
|
|
||||||
request.get_json()['zone_id']
|
|
||||||
)
|
|
||||||
print(request.get_json())
|
|
||||||
postsqldb.LocationsTable.insert_tuple(conn, site_name, location.payload())
|
|
||||||
except Exception as error:
|
|
||||||
conn.rollback()
|
|
||||||
return jsonify({'error': True, 'message': error})
|
|
||||||
return jsonify({'error': False, 'message': f"Zone added to {site_name}."})
|
return jsonify({'error': False, 'message': f"Zone added to {site_name}."})
|
||||||
return jsonify({'error': True, 'message': f"These was an error with adding this Zone to {site_name}."})
|
return jsonify({'error': True, 'message': f"These was an error with adding this Zone to {site_name}."})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/postAddVendor', methods=["POST"])
|
@site_management_api.route('/api/postAddVendor', methods=["POST"])
|
||||||
def postAddVendor():
|
def postAddVendor():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
try:
|
|
||||||
with psycopg2.connect(**database_config) as conn:
|
vendor = database_payloads.VendorsPayload(
|
||||||
vendor = postsqldb.VendorsTable.Payload(
|
|
||||||
request.get_json()['vendor_name'],
|
request.get_json()['vendor_name'],
|
||||||
session['user_id'],
|
session['user_id'],
|
||||||
request.get_json()['vendor_address'],
|
request.get_json()['vendor_address'],
|
||||||
request.get_json()['vendor_phone_number'],
|
request.get_json()['vendor_phone_number'],
|
||||||
)
|
)
|
||||||
postsqldb.VendorsTable.insert_tuple(conn, site_name, vendor.payload())
|
site_management_database.insertVendorsTuple(site_name, vendor.payload())
|
||||||
except Exception as error:
|
|
||||||
conn.rollback()
|
|
||||||
return jsonify({'error': True, 'message': error})
|
|
||||||
return jsonify({'error': False, 'message': f"Zone added to {site_name}."})
|
return jsonify({'error': False, 'message': f"Zone added to {site_name}."})
|
||||||
return jsonify({'error': True, 'message': f"These was an error with adding this Zone to {site_name}."})
|
return jsonify({'error': True, 'message': f"These was an error with adding this Zone to {site_name}."})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/postEditVendor', methods=["POST"])
|
@site_management_api.route('/api/postEditVendor', methods=["POST"])
|
||||||
def postEditVendor():
|
def postEditVendor():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
try:
|
payload = {'id': request.get_json()['vendor_id'], 'update': request.get_json()['update']}
|
||||||
with psycopg2.connect(**database_config) as conn:
|
vendor = site_management_database.updateVendorsTuple(site_name, payload)
|
||||||
payload = {'id': request.get_json()['vendor_id'],
|
|
||||||
'update': request.get_json()['update']}
|
|
||||||
vendor = postsqldb.VendorsTable.update_tuple(conn, site_name, payload)
|
|
||||||
except Exception as error:
|
|
||||||
conn.rollback()
|
|
||||||
return jsonify({'error': True, 'message': error})
|
|
||||||
return jsonify({'error': False, 'message': f"{vendor['vendor_name']} edited in site {site_name}."})
|
return jsonify({'error': False, 'message': f"{vendor['vendor_name']} edited in site {site_name}."})
|
||||||
return jsonify({'error': True, 'message': f"These was an error with editing Zone {vendor['vendor_name']} in {site_name}."})
|
return jsonify({'error': True, 'message': f"These was an error with editing Zone {vendor['vendor_name']} in {site_name}."})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/postAddBrand', methods=["POST"])
|
@site_management_api.route('/api/postAddBrand', methods=["POST"])
|
||||||
def postAddBrand():
|
def postAddBrand():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
try:
|
brand = database_payloads.BrandsPayload(request.get_json()['brand_name'])
|
||||||
with psycopg2.connect(**database_config) as conn:
|
site_management_database.insertBrandsTuple(site_name, brand.payload())
|
||||||
brand = postsqldb.BrandsTable.Payload(
|
|
||||||
request.get_json()['brand_name']
|
|
||||||
)
|
|
||||||
postsqldb.BrandsTable.insert_tuple(conn, site_name, brand.payload())
|
|
||||||
except Exception as error:
|
|
||||||
conn.rollback()
|
|
||||||
return jsonify({'error': True, 'message': error})
|
|
||||||
return jsonify({'error': False, 'message': f"Brand added to {site_name}."})
|
return jsonify({'error': False, 'message': f"Brand added to {site_name}."})
|
||||||
return jsonify({'error': True, 'message': f"These was an error with adding this Zone to {site_name}."})
|
return jsonify({'error': True, 'message': f"These was an error with adding this Zone to {site_name}."})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/postEditBrand', methods=["POST"])
|
@site_management_api.route('/api/postEditBrand', methods=["POST"])
|
||||||
def postEditBrand():
|
def postEditBrand():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
try:
|
payload = {'id': request.get_json()['brand_id'], 'update': request.get_json()['update']}
|
||||||
with psycopg2.connect(**database_config) as conn:
|
brand = site_management_database.updateBrandsTuple(site_name, payload)
|
||||||
payload = {'id': request.get_json()['brand_id'],
|
|
||||||
'update': request.get_json()['update']}
|
|
||||||
brand = postsqldb.BrandsTable.update_tuple(conn, site_name, payload)
|
|
||||||
except Exception as error:
|
|
||||||
conn.rollback()
|
|
||||||
return jsonify({'error': True, 'message': error})
|
|
||||||
return jsonify({'error': False, 'message': f"{brand['name']} edited in site {site_name}."})
|
return jsonify({'error': False, 'message': f"{brand['name']} edited in site {site_name}."})
|
||||||
return jsonify({'error': True, 'message': f"These was an error with editing Zone {brand['name']} in {site_name}."})
|
return jsonify({'error': True, 'message': f"These was an error with editing Zone {brand['name']} in {site_name}."})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/postAddPrefix', methods=["POST"])
|
@site_management_api.route('/api/postAddPrefix', methods=["POST"])
|
||||||
def postAddPrefix():
|
def postAddPrefix():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
try:
|
prefix = database_payloads.SKUPrefixPayload(request.get_json()['prefix_uuid'], request.get_json()['prefix_name'], request.get_json()['prefix_description'])
|
||||||
with psycopg2.connect(**database_config) as conn:
|
site_management_database.insertSKUPrefixesTuple(site_name, prefix.payload())
|
||||||
prefix = postsqldb.SKUPrefixTable.Payload(
|
|
||||||
request.get_json()['prefix_uuid'],
|
|
||||||
request.get_json()['prefix_name'],
|
|
||||||
request.get_json()['prefix_description']
|
|
||||||
)
|
|
||||||
postsqldb.SKUPrefixTable.insert_tuple(conn, site_name, prefix.payload())
|
|
||||||
except Exception as error:
|
|
||||||
conn.rollback()
|
|
||||||
return jsonify({'error': True, 'message': error})
|
|
||||||
return jsonify({'error': False, 'message': f"Prefix added to {site_name}."})
|
return jsonify({'error': False, 'message': f"Prefix added to {site_name}."})
|
||||||
return jsonify({'error': True, 'message': f"These was an error with adding this Prefix to {site_name}."})
|
return jsonify({'error': True, 'message': f"These was an error with adding this Prefix to {site_name}."})
|
||||||
|
|
||||||
|
# added to database
|
||||||
@site_management_api.route('/api/postEditPrefix', methods=["POST"])
|
@site_management_api.route('/api/postEditPrefix', methods=["POST"])
|
||||||
def postEditPrefix():
|
def postEditPrefix():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
try:
|
payload = {'id': request.get_json()['prefix_id'], 'update': request.get_json()['update']}
|
||||||
with psycopg2.connect(**database_config) as conn:
|
prefix = site_management_database.updateSKUPrefixesTuple(site_name, payload)
|
||||||
payload = {'id': request.get_json()['prefix_id'],
|
|
||||||
'update': request.get_json()['update']}
|
|
||||||
prefix = postsqldb.SKUPrefixTable.update_tuple(conn, site_name, payload)
|
|
||||||
except Exception as error:
|
|
||||||
conn.rollback()
|
|
||||||
return jsonify({'error': True, 'message': error})
|
|
||||||
return jsonify({'error': False, 'message': f"{prefix['name']} edited in site {site_name}."})
|
return jsonify({'error': False, 'message': f"{prefix['name']} edited in site {site_name}."})
|
||||||
return jsonify({'error': True, 'message': f"These was an error with editing Zone {prefix['name']} in {site_name}."})
|
return jsonify({'error': True, 'message': f"These was an error with editing Zone {prefix['name']} in {site_name}."})
|
||||||
|
|||||||
@ -0,0 +1,488 @@
|
|||||||
|
# 3RD PARTY IMPORTS
|
||||||
|
import psycopg2
|
||||||
|
|
||||||
|
# APPLICATION IMPORTS
|
||||||
|
import config
|
||||||
|
from application import postsqldb
|
||||||
|
|
||||||
|
def paginateZonesTuples(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (tuple): (limit, offset) """
|
||||||
|
recordset = ()
|
||||||
|
count = 0
|
||||||
|
self_conn = False
|
||||||
|
sql = f"SELECT * FROM {site}_zones LIMIT %s OFFSET %s;"
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, payload)
|
||||||
|
rows = cur.fetchall()
|
||||||
|
if rows and convert:
|
||||||
|
recordset = [postsqldb.tupleDictionaryFactory(cur.description, row) for row in rows]
|
||||||
|
elif rows and not convert:
|
||||||
|
recordset = rows
|
||||||
|
|
||||||
|
cur.execute(f"SELECT COUNT(*) FROM {site}_zones;")
|
||||||
|
count = cur.fetchone()[0]
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return recordset, count
|
||||||
|
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, (), sql)
|
||||||
|
|
||||||
|
def paginateLocationsTuples(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (tuple): (limit, offset) """
|
||||||
|
recordset = ()
|
||||||
|
count = 0
|
||||||
|
self_conn = False
|
||||||
|
sql = f"SELECT * FROM {site}_locations LIMIT %s OFFSET %s;"
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, payload)
|
||||||
|
rows = cur.fetchall()
|
||||||
|
if rows and convert:
|
||||||
|
recordset = [postsqldb.tupleDictionaryFactory(cur.description, row) for row in rows]
|
||||||
|
elif rows and not convert:
|
||||||
|
recordset = rows
|
||||||
|
|
||||||
|
cur.execute(f"SELECT COUNT(*) FROM {site}_locations;")
|
||||||
|
count = cur.fetchone()[0]
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return recordset, count
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, (), sql)
|
||||||
|
|
||||||
|
def paginateVendorsTuples(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (tuple): (limit, offset) """
|
||||||
|
recordset = ()
|
||||||
|
count = 0
|
||||||
|
self_conn = False
|
||||||
|
sql = f"SELECT * FROM {site}_vendors LIMIT %s OFFSET %s;"
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, payload)
|
||||||
|
rows = cur.fetchall()
|
||||||
|
if rows and convert:
|
||||||
|
recordset = [postsqldb.tupleDictionaryFactory(cur.description, row) for row in rows]
|
||||||
|
elif rows and not convert:
|
||||||
|
recordset = rows
|
||||||
|
|
||||||
|
cur.execute(f"SELECT COUNT(*) FROM {site}_vendors;")
|
||||||
|
count = cur.fetchone()[0]
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return recordset, count
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, (), sql)
|
||||||
|
|
||||||
|
def paginateBrandsTuples(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (tuple): (limit, offset) """
|
||||||
|
recordset = ()
|
||||||
|
count = 0
|
||||||
|
self_conn = False
|
||||||
|
sql = f"SELECT * FROM {site}_brands LIMIT %s OFFSET %s;"
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, payload)
|
||||||
|
rows = cur.fetchall()
|
||||||
|
if rows and convert:
|
||||||
|
recordset = [postsqldb.tupleDictionaryFactory(cur.description, row) for row in rows]
|
||||||
|
elif rows and not convert:
|
||||||
|
recordset = rows
|
||||||
|
|
||||||
|
cur.execute(f"SELECT COUNT(*) FROM {site}_brands;")
|
||||||
|
count = cur.fetchone()[0]
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return recordset, count
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, (), sql)
|
||||||
|
|
||||||
|
def paginatePrefixesTuples(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (_type_): (limit, offset) """
|
||||||
|
recordset = []
|
||||||
|
self_conn = False
|
||||||
|
count = 0
|
||||||
|
sql = f"SELECT * FROM {site}_sku_prefix LIMIT %s OFFSET %s;"
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, payload)
|
||||||
|
rows = cur.fetchall()
|
||||||
|
if rows and convert:
|
||||||
|
recordset = [postsqldb.tupleDictionaryFactory(cur.description, row) for row in rows]
|
||||||
|
if rows and not convert:
|
||||||
|
recordset = rows
|
||||||
|
|
||||||
|
cur.execute(f"SELECT COUNT(*) FROM {site}_sku_prefix;")
|
||||||
|
count = cur.fetchone()[0]
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return recordset, count
|
||||||
|
except (Exception, psycopg2.DatabaseError) as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
|
def selectSitesTupleByName(payload, convert=True, conn=None):
|
||||||
|
""" payload (_type_): (site_name,) """
|
||||||
|
record = ()
|
||||||
|
self_conn = False
|
||||||
|
sql = f"SELECT id FROM sites WHERE site_name = %s;"
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, payload)
|
||||||
|
rows = cur.fetchone()
|
||||||
|
if rows and convert:
|
||||||
|
record = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
|
if rows and not convert:
|
||||||
|
record = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return record
|
||||||
|
except (Exception, psycopg2.DatabaseError) as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
|
def selectZonesTuples(site, convert=True, conn=None):
|
||||||
|
""" payload (tuple): (limit, offset) """
|
||||||
|
recordset = ()
|
||||||
|
self_conn = False
|
||||||
|
sql = f"SELECT * FROM {site}_zones;"
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql)
|
||||||
|
rows = cur.fetchall()
|
||||||
|
if rows and convert:
|
||||||
|
recordset = [postsqldb.tupleDictionaryFactory(cur.description, row) for row in rows]
|
||||||
|
elif rows and not convert:
|
||||||
|
recordset = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return recordset
|
||||||
|
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, (), sql)
|
||||||
|
|
||||||
|
def insertZonesTuple(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (tuple): (name[str],) """
|
||||||
|
zone = ()
|
||||||
|
self_conn = False
|
||||||
|
with open(f"application/site_management/sql/insertZonesTuple.sql", "r+") as file:
|
||||||
|
sql = file.read().replace("%%site_name%%", site)
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, payload)
|
||||||
|
rows = cur.fetchone()
|
||||||
|
if rows and convert:
|
||||||
|
zone = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
|
elif rows and not convert:
|
||||||
|
zone = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return zone
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
|
def insertLocationsTuple(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (tuple): (name[str],) """
|
||||||
|
zone = ()
|
||||||
|
self_conn = False
|
||||||
|
with open(f"application/site_management/sql/insertLocationsTuple.sql", "r+") as file:
|
||||||
|
sql = file.read().replace("%%site_name%%", site)
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, payload)
|
||||||
|
rows = cur.fetchone()
|
||||||
|
if rows and convert:
|
||||||
|
zone = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
|
elif rows and not convert:
|
||||||
|
zone = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return zone
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
|
def insertVendorsTuple(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (tuple): (name[str],) """
|
||||||
|
zone = ()
|
||||||
|
self_conn = False
|
||||||
|
with open(f"application/site_management/sql/insertVendorsTuple.sql", "r+") as file:
|
||||||
|
sql = file.read().replace("%%site_name%%", site)
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, payload)
|
||||||
|
rows = cur.fetchone()
|
||||||
|
if rows and convert:
|
||||||
|
zone = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
|
elif rows and not convert:
|
||||||
|
zone = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return zone
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
|
def insertBrandsTuple(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (tuple): (name[str],) """
|
||||||
|
brand = ()
|
||||||
|
self_conn = False
|
||||||
|
with open(f"application/site_management/sql/insertBrandsTuple.sql", "r+") as file:
|
||||||
|
sql = file.read().replace("%%site_name%%", site)
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, payload)
|
||||||
|
rows = cur.fetchone()
|
||||||
|
if rows and convert:
|
||||||
|
brand = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
|
elif rows and not convert:
|
||||||
|
brand = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return brand
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
|
def insertSKUPrefixesTuple(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (tuple): (name[str],) """
|
||||||
|
prefix = ()
|
||||||
|
self_conn = False
|
||||||
|
with open(f"application/site_management/sql/insertSKUPrefixTuple.sql", "r+") as file:
|
||||||
|
sql = file.read().replace("%%site_name%%", site)
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, payload)
|
||||||
|
rows = cur.fetchone()
|
||||||
|
if rows and convert:
|
||||||
|
prefix = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
|
elif rows and not convert:
|
||||||
|
prefix = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return prefix
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
|
def updateSKUPrefixesTuple(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (dict): {'id': row_id, 'update': {... column_to_update: value_to_update_to...}} """
|
||||||
|
updated = ()
|
||||||
|
self_conn = False
|
||||||
|
set_clause, values = postsqldb.updateStringFactory(payload['update'])
|
||||||
|
values.append(payload['id'])
|
||||||
|
sql = f"UPDATE {site}_sku_prefix SET {set_clause} WHERE id=%s RETURNING *;"
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, values)
|
||||||
|
rows = cur.fetchone()
|
||||||
|
if rows and convert:
|
||||||
|
updated = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
|
elif rows and not convert:
|
||||||
|
updated = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return updated
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
|
def updateZonesTuple(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (dict): {'id': row_id, 'update': {... column_to_update: value_to_update_to...}} """
|
||||||
|
updated = ()
|
||||||
|
self_conn = False
|
||||||
|
set_clause, values = postsqldb.updateStringFactory(payload['update'])
|
||||||
|
values.append(payload['id'])
|
||||||
|
sql = f"UPDATE {site}_zones SET {set_clause} WHERE id=%s RETURNING *;"
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, values)
|
||||||
|
rows = cur.fetchone()
|
||||||
|
if rows and convert:
|
||||||
|
updated = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
|
elif rows and not convert:
|
||||||
|
updated = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return updated
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
|
def updateVendorsTuple(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (dict): {'id': row_id, 'update': {... column_to_update: value_to_update_to...}} """
|
||||||
|
updated = ()
|
||||||
|
self_conn = False
|
||||||
|
set_clause, values = postsqldb.updateStringFactory(payload['update'])
|
||||||
|
values.append(payload['id'])
|
||||||
|
sql = f"UPDATE {site}_vendors SET {set_clause} WHERE id=%s RETURNING *;"
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, values)
|
||||||
|
rows = cur.fetchone()
|
||||||
|
if rows and convert:
|
||||||
|
updated = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
|
elif rows and not convert:
|
||||||
|
updated = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return updated
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
|
def updateBrandsTuple(site, payload, convert=True, conn=None):
|
||||||
|
""" payload (dict): {'id': row_id, 'update': {... column_to_update: value_to_update_to...}} """
|
||||||
|
updated = ()
|
||||||
|
self_conn = False
|
||||||
|
set_clause, values = postsqldb.updateStringFactory(payload['update'])
|
||||||
|
values.append(payload['id'])
|
||||||
|
sql = f"UPDATE {site}_brands SET {set_clause} WHERE id=%s RETURNING *;"
|
||||||
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
cur.execute(sql, values)
|
||||||
|
rows = cur.fetchone()
|
||||||
|
if rows and convert:
|
||||||
|
updated = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
|
elif rows and not convert:
|
||||||
|
updated = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return updated
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
4
application/site_management/sql/insertBrandsTuple.sql
Normal file
4
application/site_management/sql/insertBrandsTuple.sql
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
INSERT INTO %%site_name%%_brands
|
||||||
|
(name)
|
||||||
|
VALUES (%s)
|
||||||
|
RETURNING *;
|
||||||
4
application/site_management/sql/insertLocationsTuple.sql
Normal file
4
application/site_management/sql/insertLocationsTuple.sql
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
INSERT INTO %%site_name%%_locations
|
||||||
|
(uuid, name, zone_id)
|
||||||
|
VALUES (%s, %s, %s)
|
||||||
|
RETURNING *;
|
||||||
4
application/site_management/sql/insertSKUPrefixTuple.sql
Normal file
4
application/site_management/sql/insertSKUPrefixTuple.sql
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
INSERT INTO %%site_name%%_sku_prefix
|
||||||
|
(uuid, name, description)
|
||||||
|
VALUES (%s, %s, %s)
|
||||||
|
RETURNING *;
|
||||||
4
application/site_management/sql/insertVendorsTuple.sql
Normal file
4
application/site_management/sql/insertVendorsTuple.sql
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
INSERT INTO %%site_name%%_vendors
|
||||||
|
(vendor_name, vendor_address, creation_date, created_by, phone_number)
|
||||||
|
VALUES (%s, %s, %s, %s, %s)
|
||||||
|
RETURNING *;
|
||||||
4
application/site_management/sql/insertZonesTuple.sql
Normal file
4
application/site_management/sql/insertZonesTuple.sql
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
INSERT INTO %%site_name%%_zones
|
||||||
|
(name, description)
|
||||||
|
VALUES (%s, %s)
|
||||||
|
RETURNING *;
|
||||||
Loading…
x
Reference in New Issue
Block a user