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]
|
||||
return recordset, count
|
||||
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"])
|
||||
@login_required
|
||||
def getModalItems():
|
||||
recordset = []
|
||||
count = {'count': 0}
|
||||
""" GET items from the system by passing a page, limit, search_string. For select modals
|
||||
---
|
||||
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":
|
||||
page = int(request.args.get('page', 1))
|
||||
limit = int(request.args.get('limit', 10))
|
||||
search_string = request.args.get('search_string', '')
|
||||
site_name = session['selected_site']
|
||||
offset = (page - 1) * limit
|
||||
database_config = config()
|
||||
with psycopg2.connect(**database_config) as conn:
|
||||
payload = (search_string, limit, offset)
|
||||
recordset, count = database.getItemsForModal(conn, site_name, payload, convert=True)
|
||||
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"})
|
||||
recordset, count = database_items.getModalSKUs(site_name, (search_string, limit, offset))
|
||||
print(recordset, count)
|
||||
return jsonify({"items":recordset, "end":math.ceil(count/limit), "error":False, "message":"items fetched succesfully!"})
|
||||
return jsonify({"items":recordset, "end":math.ceil(count/limit), "error":True, "message": f"method {request.method} is not allowed."})
|
||||
|
||||
@items_api.route('/item/getPrefixes', methods=["GET"])
|
||||
@login_required
|
||||
@ -178,7 +200,7 @@ def getModalPrefixes():
|
||||
database_config = config()
|
||||
with psycopg2.connect(**database_config) as conn:
|
||||
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":True, "message":"There was an error with this GET statement"})
|
||||
|
||||
@ -212,7 +234,7 @@ def getZonesbySku():
|
||||
payload = (item_id, limit, offset)
|
||||
count = 0
|
||||
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)
|
||||
return jsonify(zones=zones, endpage=math.ceil(count/limit))
|
||||
|
||||
@ -230,7 +252,7 @@ def getLocationsBySkuZone():
|
||||
count=0
|
||||
with psycopg2.connect(**database_config) as conn:
|
||||
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))
|
||||
|
||||
|
||||
@ -367,7 +389,7 @@ def getPossibleLocations():
|
||||
database_config = config()
|
||||
site_name = session['selected_site']
|
||||
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))
|
||||
|
||||
@items_api.route('/item/getLinkedItem', methods=["GET"])
|
||||
@ -486,12 +508,12 @@ def addSKUPrefix():
|
||||
site_name = session['selected_site']
|
||||
try:
|
||||
with psycopg2.connect(**database_config) as conn:
|
||||
prefix = postsqldb.SKUPrefixTable.Payload(
|
||||
prefix = db.SKUPrefixTable.Payload(
|
||||
request.get_json()['uuid'],
|
||||
request.get_json()['name'],
|
||||
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:
|
||||
conn.rollback()
|
||||
return jsonify({'error': True, 'message': error})
|
||||
@ -508,10 +530,10 @@ def addConversion():
|
||||
database_config = config()
|
||||
site_name = session['selected_site']
|
||||
with psycopg2.connect(**database_config) as conn:
|
||||
conversion = postsqldb.ConversionsTable.Payload(
|
||||
conversion = db.ConversionsTable.Payload(
|
||||
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=True, message="Unable to save this conversion, ERROR!")
|
||||
@ -524,7 +546,7 @@ def deleteConversion():
|
||||
database_config = config()
|
||||
site_name = session['selected_site']
|
||||
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=True, message="Unable to delete this conversion, ERROR!")
|
||||
@ -538,7 +560,7 @@ def updateConversion():
|
||||
database_config = config()
|
||||
site_name = session['selected_site']
|
||||
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=True, message="Unable to save this conversion, ERROR!")
|
||||
|
||||
@ -552,10 +574,10 @@ def addPrefix():
|
||||
database_config = config()
|
||||
site_name = session['selected_site']
|
||||
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)
|
||||
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=True, message="Unable to save this prefix, ERROR!")
|
||||
|
||||
@ -568,9 +590,9 @@ def deletePrefix():
|
||||
database_config = config()
|
||||
site_name = session['selected_site']
|
||||
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)
|
||||
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=True, message="Unable to delete this prefix, ERROR!")
|
||||
|
||||
@ -582,7 +604,7 @@ def refreshSearchString():
|
||||
database_config = config()
|
||||
site_name = session['selected_site']
|
||||
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']}",
|
||||
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']}")
|
||||
|
||||
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=True, message="Unable to update this search string, ERROR!")
|
||||
@ -603,10 +625,10 @@ def postNewItemLocation():
|
||||
database_config = config()
|
||||
site_name = session['selected_site']
|
||||
with psycopg2.connect(**database_config) as conn:
|
||||
item_location = postsqldb.ItemLocationsTable.Payload(
|
||||
item_location = db.ItemLocationsTable.Payload(
|
||||
item_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=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
|
||||
WHERE item.search_string LIKE '%%' || %s || '%%'
|
||||
ORDER BY item.id
|
||||
LIMIT %s OFFSET %s;
|
||||
Loading…
x
Reference in New Issue
Block a user