items_api.getModalSkus updated to new schema
This commit is contained in:
parent
6dbe5752ad
commit
5fadebb2e4
Binary file not shown.
Binary file not shown.
@ -81,4 +81,28 @@ def getItemsWithQOH(site:str, payload: tuple, convert:bool=True):
|
|||||||
count = cur.fetchone()[0]
|
count = cur.fetchone()[0]
|
||||||
return recordset, count
|
return recordset, count
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
postsqldb.DatabaseError(error, payload, sql)
|
postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
|
def getModalSKUs(site:str, payload:tuple, convert:bool=True):
|
||||||
|
database_config = config.config()
|
||||||
|
with open("application/items/sql/itemsModal.sql") as file:
|
||||||
|
sql = file.read().replace("%%site_name%%", site)
|
||||||
|
with open("application/items/sql/itemsModalCount.sql") as file:
|
||||||
|
sql_count = file.read().replace("%%site_name%%", site)
|
||||||
|
recordset = []
|
||||||
|
count = 0
|
||||||
|
try:
|
||||||
|
with psycopg2.connect(**database_config) as conn:
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
print(payload)
|
||||||
|
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(sql_count, (payload[0],))
|
||||||
|
count = cur.fetchone()[0]
|
||||||
|
return recordset, count
|
||||||
|
except Exception as error:
|
||||||
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
@ -150,20 +150,42 @@ def pagninate_items():
|
|||||||
@items_api.route('/item/getModalItems', methods=["GET"])
|
@items_api.route('/item/getModalItems', methods=["GET"])
|
||||||
@login_required
|
@login_required
|
||||||
def getModalItems():
|
def getModalItems():
|
||||||
recordset = []
|
""" GET items from the system by passing a page, limit, search_string. For select modals
|
||||||
count = {'count': 0}
|
---
|
||||||
|
parameters:
|
||||||
|
- in: query
|
||||||
|
name: page
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
default: 1
|
||||||
|
description: page number for offset
|
||||||
|
- in: query
|
||||||
|
name: limit
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
default: 25
|
||||||
|
description: number of records to grab
|
||||||
|
- in: query
|
||||||
|
name: search_string
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
description: string to look for in column search_string
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: Items received successfully.
|
||||||
|
"""
|
||||||
|
recordset, count = tuple(), 0
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
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))
|
||||||
search_string = request.args.get('search_string', '')
|
search_string = request.args.get('search_string', '')
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
offset = (page - 1) * limit
|
offset = (page - 1) * limit
|
||||||
database_config = config()
|
recordset, count = database_items.getModalSKUs(site_name, (search_string, limit, offset))
|
||||||
with psycopg2.connect(**database_config) as conn:
|
print(recordset, count)
|
||||||
payload = (search_string, limit, offset)
|
return jsonify({"items":recordset, "end":math.ceil(count/limit), "error":False, "message":"items fetched succesfully!"})
|
||||||
recordset, count = database.getItemsForModal(conn, site_name, payload, convert=True)
|
return jsonify({"items":recordset, "end":math.ceil(count/limit), "error":True, "message": f"method {request.method} is not allowed."})
|
||||||
return jsonify({"items":recordset, "end":math.ceil(count['count']/limit), "error":False, "message":"items fetched succesfully!"})
|
|
||||||
return jsonify({"items":recordset, "end":math.ceil(count['count']/limit), "error":True, "message":"There was an error with this GET statement"})
|
|
||||||
|
|
||||||
@items_api.route('/item/getPrefixes', methods=["GET"])
|
@items_api.route('/item/getPrefixes', methods=["GET"])
|
||||||
@login_required
|
@login_required
|
||||||
@ -178,7 +200,7 @@ def getModalPrefixes():
|
|||||||
database_config = config()
|
database_config = config()
|
||||||
with psycopg2.connect(**database_config) as conn:
|
with psycopg2.connect(**database_config) as conn:
|
||||||
payload = (limit, offset)
|
payload = (limit, offset)
|
||||||
recordset, count = postsqldb.SKUPrefixTable.paginatePrefixes(conn, site_name, payload, convert=True)
|
recordset, count = db.SKUPrefixTable.paginatePrefixes(conn, site_name, payload, convert=True)
|
||||||
return jsonify({"prefixes":recordset, "end":math.ceil(count/limit), "error":False, "message":"items fetched succesfully!"})
|
return jsonify({"prefixes":recordset, "end":math.ceil(count/limit), "error":False, "message":"items fetched succesfully!"})
|
||||||
return jsonify({"prefixes":recordset, "end":math.ceil(count/limit), "error":True, "message":"There was an error with this GET statement"})
|
return jsonify({"prefixes":recordset, "end":math.ceil(count/limit), "error":True, "message":"There was an error with this GET statement"})
|
||||||
|
|
||||||
@ -212,7 +234,7 @@ def getZonesbySku():
|
|||||||
payload = (item_id, limit, offset)
|
payload = (item_id, limit, offset)
|
||||||
count = 0
|
count = 0
|
||||||
with psycopg2.connect(**database_config) as conn:
|
with psycopg2.connect(**database_config) as conn:
|
||||||
zones, count = postsqldb.ZonesTable.paginateZonesBySku(conn, site_name, payload)
|
zones, count = db.ZonesTable.paginateZonesBySku(conn, site_name, payload)
|
||||||
print(zones, count)
|
print(zones, count)
|
||||||
return jsonify(zones=zones, endpage=math.ceil(count/limit))
|
return jsonify(zones=zones, endpage=math.ceil(count/limit))
|
||||||
|
|
||||||
@ -230,7 +252,7 @@ def getLocationsBySkuZone():
|
|||||||
count=0
|
count=0
|
||||||
with psycopg2.connect(**database_config) as conn:
|
with psycopg2.connect(**database_config) as conn:
|
||||||
payload = (part_id, zone_id, limit, offset)
|
payload = (part_id, zone_id, limit, offset)
|
||||||
locations, count = postsqldb.LocationsTable.paginateLocationsBySkuZone(conn, site_name, payload)
|
locations, count = db.LocationsTable.paginateLocationsBySkuZone(conn, site_name, payload)
|
||||||
return jsonify(locations=locations, endpage=math.ceil(count/limit))
|
return jsonify(locations=locations, endpage=math.ceil(count/limit))
|
||||||
|
|
||||||
|
|
||||||
@ -367,7 +389,7 @@ def getPossibleLocations():
|
|||||||
database_config = config()
|
database_config = config()
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
with psycopg2.connect(**database_config) as conn:
|
||||||
locations, count = postsqldb.LocationsTable.paginateLocationsWithZone(conn, site_name, (limit, offset))
|
locations, count = db.LocationsTable.paginateLocationsWithZone(conn, site_name, (limit, offset))
|
||||||
return jsonify(locations=locations, end=math.ceil(count/limit))
|
return jsonify(locations=locations, end=math.ceil(count/limit))
|
||||||
|
|
||||||
@items_api.route('/item/getLinkedItem', methods=["GET"])
|
@items_api.route('/item/getLinkedItem', methods=["GET"])
|
||||||
@ -486,12 +508,12 @@ def addSKUPrefix():
|
|||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
try:
|
try:
|
||||||
with psycopg2.connect(**database_config) as conn:
|
with psycopg2.connect(**database_config) as conn:
|
||||||
prefix = postsqldb.SKUPrefixTable.Payload(
|
prefix = db.SKUPrefixTable.Payload(
|
||||||
request.get_json()['uuid'],
|
request.get_json()['uuid'],
|
||||||
request.get_json()['name'],
|
request.get_json()['name'],
|
||||||
request.get_json()['description']
|
request.get_json()['description']
|
||||||
)
|
)
|
||||||
postsqldb.SKUPrefixTable.insert_tuple(conn, site_name, prefix.payload())
|
db.SKUPrefixTable.insert_tuple(conn, site_name, prefix.payload())
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
conn.rollback()
|
conn.rollback()
|
||||||
return jsonify({'error': True, 'message': error})
|
return jsonify({'error': True, 'message': error})
|
||||||
@ -508,10 +530,10 @@ def addConversion():
|
|||||||
database_config = config()
|
database_config = config()
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
with psycopg2.connect(**database_config) as conn:
|
||||||
conversion = postsqldb.ConversionsTable.Payload(
|
conversion = db.ConversionsTable.Payload(
|
||||||
item_id, uom_id, conv_factor
|
item_id, uom_id, conv_factor
|
||||||
)
|
)
|
||||||
postsqldb.ConversionsTable.insert_tuple(conn, site_name, conversion.payload())
|
db.ConversionsTable.insert_tuple(conn, site_name, conversion.payload())
|
||||||
|
|
||||||
return jsonify(error=False, message="Conversion was added successfully")
|
return jsonify(error=False, message="Conversion was added successfully")
|
||||||
return jsonify(error=True, message="Unable to save this conversion, ERROR!")
|
return jsonify(error=True, message="Unable to save this conversion, ERROR!")
|
||||||
@ -524,7 +546,7 @@ def deleteConversion():
|
|||||||
database_config = config()
|
database_config = config()
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
with psycopg2.connect(**database_config) as conn:
|
||||||
postsqldb.ConversionsTable.delete_item_tuple(conn, site_name, (conversion_id,))
|
db.ConversionsTable.delete_item_tuple(conn, site_name, (conversion_id,))
|
||||||
|
|
||||||
return jsonify(error=False, message="Conversion was deleted successfully")
|
return jsonify(error=False, message="Conversion was deleted successfully")
|
||||||
return jsonify(error=True, message="Unable to delete this conversion, ERROR!")
|
return jsonify(error=True, message="Unable to delete this conversion, ERROR!")
|
||||||
@ -538,7 +560,7 @@ def updateConversion():
|
|||||||
database_config = config()
|
database_config = config()
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
with psycopg2.connect(**database_config) as conn:
|
||||||
postsqldb.ConversionsTable.update_item_tuple(conn, site_name, {'id': conversion_id, 'update': update_dictionary})
|
db.ConversionsTable.update_item_tuple(conn, site_name, {'id': conversion_id, 'update': update_dictionary})
|
||||||
return jsonify(error=False, message="Conversion was updated successfully")
|
return jsonify(error=False, message="Conversion was updated successfully")
|
||||||
return jsonify(error=True, message="Unable to save this conversion, ERROR!")
|
return jsonify(error=True, message="Unable to save this conversion, ERROR!")
|
||||||
|
|
||||||
@ -552,10 +574,10 @@ def addPrefix():
|
|||||||
database_config = config()
|
database_config = config()
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
with psycopg2.connect(**database_config) as conn:
|
||||||
prefixes = postsqldb.ItemInfoTable.select_tuple(conn, site_name, (item_info_id,))['prefixes']
|
prefixes = db.ItemInfoTable.select_tuple(conn, site_name, (item_info_id,))['prefixes']
|
||||||
print(prefixes)
|
print(prefixes)
|
||||||
prefixes.append(prefix_id)
|
prefixes.append(prefix_id)
|
||||||
postsqldb.ItemInfoTable.update_tuple(conn, site_name, {'id': item_info_id, 'update':{'prefixes': prefixes}})
|
db.ItemInfoTable.update_tuple(conn, site_name, {'id': item_info_id, 'update':{'prefixes': prefixes}})
|
||||||
return jsonify(error=False, message="Prefix was added successfully")
|
return jsonify(error=False, message="Prefix was added successfully")
|
||||||
return jsonify(error=True, message="Unable to save this prefix, ERROR!")
|
return jsonify(error=True, message="Unable to save this prefix, ERROR!")
|
||||||
|
|
||||||
@ -568,9 +590,9 @@ def deletePrefix():
|
|||||||
database_config = config()
|
database_config = config()
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
with psycopg2.connect(**database_config) as conn:
|
||||||
prefixes = postsqldb.ItemInfoTable.select_tuple(conn, site_name, (item_info_id,))['prefixes']
|
prefixes = db.ItemInfoTable.select_tuple(conn, site_name, (item_info_id,))['prefixes']
|
||||||
prefixes.remove(prefix_id)
|
prefixes.remove(prefix_id)
|
||||||
postsqldb.ItemInfoTable.update_tuple(conn, site_name, {'id': item_info_id, 'update':{'prefixes': prefixes}})
|
db.ItemInfoTable.update_tuple(conn, site_name, {'id': item_info_id, 'update':{'prefixes': prefixes}})
|
||||||
return jsonify(error=False, message="Prefix was deleted successfully")
|
return jsonify(error=False, message="Prefix was deleted successfully")
|
||||||
return jsonify(error=True, message="Unable to delete this prefix, ERROR!")
|
return jsonify(error=True, message="Unable to delete this prefix, ERROR!")
|
||||||
|
|
||||||
@ -582,7 +604,7 @@ def refreshSearchString():
|
|||||||
database_config = config()
|
database_config = config()
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
with psycopg2.connect(**database_config) as conn:
|
||||||
item = postsqldb.ItemTable.getItemAllByID(conn, site_name, (item_id,))
|
item = db.ItemTable.getItemAllByID(conn, site_name, (item_id,))
|
||||||
parameters = [f"id::{item['id']}", f"barcode::{item['barcode']}", f"name::{item['item_name']}", f"brand::{item['brand']['name']}",
|
parameters = [f"id::{item['id']}", f"barcode::{item['barcode']}", f"name::{item['item_name']}", f"brand::{item['brand']['name']}",
|
||||||
f"expires::{item['food_info']['expires']}", f"row_type::{item['row_type']}", f"item_type::{item['item_type']}"]
|
f"expires::{item['food_info']['expires']}", f"row_type::{item['row_type']}", f"item_type::{item['item_type']}"]
|
||||||
|
|
||||||
@ -590,7 +612,7 @@ def refreshSearchString():
|
|||||||
parameters.append(f"prefix::{prefix['name']}")
|
parameters.append(f"prefix::{prefix['name']}")
|
||||||
|
|
||||||
search_string = "&&".join(parameters)
|
search_string = "&&".join(parameters)
|
||||||
postsqldb.ItemTable.update_tuple(conn, site_name, {'id': item_id, 'update':{'search_string': search_string}})
|
db.ItemTable.update_tuple(conn, site_name, {'id': item_id, 'update':{'search_string': search_string}})
|
||||||
|
|
||||||
return jsonify(error=False, message="Search String was updated successfully")
|
return jsonify(error=False, message="Search String was updated successfully")
|
||||||
return jsonify(error=True, message="Unable to update this search string, ERROR!")
|
return jsonify(error=True, message="Unable to update this search string, ERROR!")
|
||||||
@ -603,10 +625,10 @@ def postNewItemLocation():
|
|||||||
database_config = config()
|
database_config = config()
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
with psycopg2.connect(**database_config) as conn:
|
with psycopg2.connect(**database_config) as conn:
|
||||||
item_location = postsqldb.ItemLocationsTable.Payload(
|
item_location = db.ItemLocationsTable.Payload(
|
||||||
item_id,
|
item_id,
|
||||||
location_id
|
location_id
|
||||||
)
|
)
|
||||||
postsqldb.ItemLocationsTable.insert_tuple(conn, site_name, item_location.payload())
|
db.ItemLocationsTable.insert_tuple(conn, site_name, item_location.payload())
|
||||||
return jsonify(error=False, message="Location was added successfully")
|
return jsonify(error=False, message="Location was added successfully")
|
||||||
return jsonify(error=True, message="Unable to save this location, ERROR!")
|
return jsonify(error=True, message="Unable to save this location, ERROR!")
|
||||||
3
application/items/sql/itemsModal.sql
Normal file
3
application/items/sql/itemsModal.sql
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
SELECT item.id, item.barcode, item.item_name FROM %%site_name%%_items item
|
||||||
|
WHERE item.search_string LIKE '%%' || %s || '%%'
|
||||||
|
LIMIT %s OFFSET %s;
|
||||||
2
application/items/sql/itemsModalCount.sql
Normal file
2
application/items/sql/itemsModalCount.sql
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
SELECT COUNT(item.*) FROM %%site_name%%_items item
|
||||||
|
WHERE item.search_string LIKE '%%' || %s || '%%';
|
||||||
@ -1,3 +1,4 @@
|
|||||||
SELECT item.id, item.barcode, item.item_name FROM %%site_name%%_items item
|
SELECT item.id, item.barcode, item.item_name FROM %%site_name%%_items item
|
||||||
WHERE item.search_string LIKE '%%' || %s || '%%'
|
WHERE item.search_string LIKE '%%' || %s || '%%'
|
||||||
|
ORDER BY item.id
|
||||||
LIMIT %s OFFSET %s;
|
LIMIT %s OFFSET %s;
|
||||||
Loading…
x
Reference in New Issue
Block a user