Finished clean up of posting new item with api
This commit is contained in:
parent
aec8f85a4d
commit
a006668ac1
@ -510,14 +510,33 @@ def insertCostLayersTuple(site, payload, convert=True, conn=None):
|
|||||||
except Exception as error:
|
except Exception as error:
|
||||||
raise postsqldb.DatabaseError(error, payload, sql)
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
def insertItemLocationsTuple(conn, site, payload, convert=True):
|
def insertItemLocationsTuple(site, payload, convert=True, conn=None):
|
||||||
|
"""insert payload into item_locations table for site
|
||||||
|
|
||||||
|
Args:
|
||||||
|
conn (_T_connector@connect): Postgresql Connector
|
||||||
|
site (str):
|
||||||
|
payload (tuple): (part_id[int], location_id[int], quantity_on_hand[float], cost_layers[lst2pgarr])
|
||||||
|
convert (bool, optional): Determines if to return tuple as dictionary. Defaults to False.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
DatabaseError:
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
tuple or dict: inserted tuple
|
||||||
|
"""
|
||||||
location = ()
|
location = ()
|
||||||
|
self_conn = False
|
||||||
database_config = config.config()
|
database_config = config.config()
|
||||||
with open(f"application/items/sql/insertItemLocationsTuple.sql", "r+") as file:
|
with open(f"application/items/sql/insertItemLocationsTuple.sql", "r+") as file:
|
||||||
sql = file.read().replace("%%site_name%%", site)
|
sql = file.read().replace("%%site_name%%", site)
|
||||||
try:
|
try:
|
||||||
conn = psycopg2.connect(**database_config)
|
if not conn:
|
||||||
conn.autocommit = False
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute(sql, payload)
|
cur.execute(sql, payload)
|
||||||
rows = cur.fetchone()
|
rows = cur.fetchone()
|
||||||
@ -525,11 +544,16 @@ def insertItemLocationsTuple(conn, site, payload, convert=True):
|
|||||||
location = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
location = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
elif rows and not convert:
|
elif rows and not convert:
|
||||||
location = rows
|
location = rows
|
||||||
return location, conn
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return location
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
raise postsqldb.DatabaseError(error, payload, sql)
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
def insertLogisticsInfoTuple(conn, site, payload, convert=False):
|
def insertLogisticsInfoTuple(site, payload, convert=True, conn=None):
|
||||||
"""insert payload into logistics_info table for site
|
"""insert payload into logistics_info table for site
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@ -546,9 +570,17 @@ def insertLogisticsInfoTuple(conn, site, payload, convert=False):
|
|||||||
tuple or dict: inserted tuple
|
tuple or dict: inserted tuple
|
||||||
"""
|
"""
|
||||||
logistics_info = ()
|
logistics_info = ()
|
||||||
|
self_conn = False
|
||||||
|
|
||||||
with open(f"application/items/sql/insertLogisticsInfoTuple.sql", "r+") as file:
|
with open(f"application/items/sql/insertLogisticsInfoTuple.sql", "r+") as file:
|
||||||
sql = file.read().replace("%%site_name%%", site)
|
sql = file.read().replace("%%site_name%%", site)
|
||||||
try:
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute(sql, payload)
|
cur.execute(sql, payload)
|
||||||
rows = cur.fetchone()
|
rows = cur.fetchone()
|
||||||
@ -556,12 +588,17 @@ def insertLogisticsInfoTuple(conn, site, payload, convert=False):
|
|||||||
logistics_info = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
logistics_info = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
elif rows and not convert:
|
elif rows and not convert:
|
||||||
logistics_info = rows
|
logistics_info = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return logistics_info
|
||||||
|
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
raise postsqldb.DatabaseError(error, payload, sql)
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
return logistics_info
|
def insertItemInfoTuple(site, payload, convert=True, conn=None):
|
||||||
|
|
||||||
def insertItemInfoTuple(conn, site, payload, convert=False):
|
|
||||||
"""inserts payload into the item_info table of site
|
"""inserts payload into the item_info table of site
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@ -578,9 +615,16 @@ def insertItemInfoTuple(conn, site, payload, convert=False):
|
|||||||
tuple or dict: inserted tuple
|
tuple or dict: inserted tuple
|
||||||
"""
|
"""
|
||||||
item_info = ()
|
item_info = ()
|
||||||
|
self_conn = False
|
||||||
with open(f"application/items/sql/insertItemInfoTuple.sql", "r+") as file:
|
with open(f"application/items/sql/insertItemInfoTuple.sql", "r+") as file:
|
||||||
sql = file.read().replace("%%site_name%%", site)
|
sql = file.read().replace("%%site_name%%", site)
|
||||||
try:
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute(sql, payload)
|
cur.execute(sql, payload)
|
||||||
rows = cur.fetchone()
|
rows = cur.fetchone()
|
||||||
@ -588,11 +632,15 @@ def insertItemInfoTuple(conn, site, payload, convert=False):
|
|||||||
item_info = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
item_info = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
elif rows and not convert:
|
elif rows and not convert:
|
||||||
item_info = rows
|
item_info = rows
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return item_info
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
raise postsqldb.DatabaseError(error, payload, sql)
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
return item_info
|
|
||||||
|
def insertFoodInfoTuple(site, payload, convert=True, conn=None):
|
||||||
def insertFoodInfoTuple(conn, site, payload, convert=False):
|
|
||||||
"""insert payload into food_info table for site
|
"""insert payload into food_info table for site
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@ -608,9 +656,16 @@ def insertFoodInfoTuple(conn, site, payload, convert=False):
|
|||||||
tuple or dict: inserted tuple
|
tuple or dict: inserted tuple
|
||||||
"""
|
"""
|
||||||
food_info = ()
|
food_info = ()
|
||||||
|
self_conn = False
|
||||||
with open(f"application/items/sql/insertFoodInfoTuple.sql", "r+") as file:
|
with open(f"application/items/sql/insertFoodInfoTuple.sql", "r+") as file:
|
||||||
sql = file.read().replace("%%site_name%%", site)
|
sql = file.read().replace("%%site_name%%", site)
|
||||||
try:
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute(sql, payload)
|
cur.execute(sql, payload)
|
||||||
rows = cur.fetchone()
|
rows = cur.fetchone()
|
||||||
@ -618,11 +673,16 @@ def insertFoodInfoTuple(conn, site, payload, convert=False):
|
|||||||
food_info = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
food_info = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
elif rows and not convert:
|
elif rows and not convert:
|
||||||
food_info = rows
|
food_info = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return food_info
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
raise postsqldb.DatabaseError(error, payload, sql)
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
return food_info
|
|
||||||
|
|
||||||
def insertItemTuple(conn, site, payload, convert=False):
|
def insertItemTuple(site, payload, convert=True, conn=None):
|
||||||
"""insert payload into items table for site
|
"""insert payload into items table for site
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@ -640,9 +700,16 @@ def insertItemTuple(conn, site, payload, convert=False):
|
|||||||
tuple or dict: inserted tuple
|
tuple or dict: inserted tuple
|
||||||
"""
|
"""
|
||||||
item = ()
|
item = ()
|
||||||
|
self_conn = False
|
||||||
with open(f"application/items/sql/insertItemTuple.sql", "r+") as file:
|
with open(f"application/items/sql/insertItemTuple.sql", "r+") as file:
|
||||||
sql = file.read().replace("%%site_name%%", site)
|
sql = file.read().replace("%%site_name%%", site)
|
||||||
try:
|
try:
|
||||||
|
if not conn:
|
||||||
|
database_config = config.config()
|
||||||
|
conn = psycopg2.connect(**database_config)
|
||||||
|
conn.autocommit = True
|
||||||
|
self_conn = True
|
||||||
|
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute(sql, payload)
|
cur.execute(sql, payload)
|
||||||
rows = cur.fetchone()
|
rows = cur.fetchone()
|
||||||
@ -650,40 +717,14 @@ def insertItemTuple(conn, site, payload, convert=False):
|
|||||||
item = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
item = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||||
elif rows and not convert:
|
elif rows and not convert:
|
||||||
item = rows
|
item = rows
|
||||||
|
|
||||||
|
if self_conn:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
return item
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
raise postsqldb.DatabaseError(error, payload, sql)
|
raise postsqldb.DatabaseError(error, payload, sql)
|
||||||
|
|
||||||
return item
|
|
||||||
|
|
||||||
def insertItemLocationsTuple(conn, site, payload, convert=False):
|
|
||||||
"""insert payload into item_locations table for site
|
|
||||||
|
|
||||||
Args:
|
|
||||||
conn (_T_connector@connect): Postgresql Connector
|
|
||||||
site (str):
|
|
||||||
payload (tuple): (part_id[int], location_id[int], quantity_on_hand[float], cost_layers[lst2pgarr])
|
|
||||||
convert (bool, optional): Determines if to return tuple as dictionary. Defaults to False.
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
DatabaseError:
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
tuple or dict: inserted tuple
|
|
||||||
"""
|
|
||||||
location = ()
|
|
||||||
with open(f"application/items/sql/insertItemLocationsTuple.sql", "r+") as file:
|
|
||||||
sql = file.read().replace("%%site_name%%", site)
|
|
||||||
try:
|
|
||||||
with conn.cursor() as cur:
|
|
||||||
cur.execute(sql, payload)
|
|
||||||
rows = cur.fetchone()
|
|
||||||
if rows and convert:
|
|
||||||
location = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
|
||||||
elif rows and not convert:
|
|
||||||
location = rows
|
|
||||||
except Exception as error:
|
|
||||||
raise postsqldb.DatabaseError(error, payload, sql)
|
|
||||||
return location
|
|
||||||
|
|
||||||
def selectItemLocationsTuple(site_name, payload, convert=True):
|
def selectItemLocationsTuple(site_name, payload, convert=True):
|
||||||
"""select a single tuple from ItemLocations table for site_name
|
"""select a single tuple from ItemLocations table for site_name
|
||||||
|
|||||||
@ -417,7 +417,6 @@ def getBrands():
|
|||||||
return jsonify({'brands': brands, 'endpage': math.ceil(count/limit), 'error': False, 'message': f''})
|
return jsonify({'brands': brands, 'endpage': math.ceil(count/limit), 'error': False, 'message': f''})
|
||||||
return jsonify({'brands': brands, 'endpage': math.ceil(count/limit), 'error': True, 'message': f'method {request.method} is not allowed.'})
|
return jsonify({'brands': brands, 'endpage': math.ceil(count/limit), 'error': True, 'message': f'method {request.method} is not allowed.'})
|
||||||
|
|
||||||
|
|
||||||
@items_api.route('/updateItem', methods=['POST'])
|
@items_api.route('/updateItem', methods=['POST'])
|
||||||
@login_required
|
@login_required
|
||||||
def updateItem():
|
def updateItem():
|
||||||
@ -493,7 +492,6 @@ def updateItemLink():
|
|||||||
return jsonify({'error':False, 'message': "Linked Item was updated successfully"})
|
return jsonify({'error':False, 'message': "Linked Item was updated successfully"})
|
||||||
return jsonify({'error': True, 'message': f"method {request.method} not allowed."})
|
return jsonify({'error': True, 'message': f"method {request.method} not allowed."})
|
||||||
|
|
||||||
|
|
||||||
@items_api.route('/getPossibleLocations', methods=["GET"])
|
@items_api.route('/getPossibleLocations', methods=["GET"])
|
||||||
@login_required
|
@login_required
|
||||||
def getPossibleLocations():
|
def getPossibleLocations():
|
||||||
@ -603,13 +601,40 @@ def addLinkedItem():
|
|||||||
|
|
||||||
@items_api.route('/addBlankItem', methods=["POST"])
|
@items_api.route('/addBlankItem', methods=["POST"])
|
||||||
def addBlankItem():
|
def addBlankItem():
|
||||||
|
""" POST new Blank item to the system given a barcode, item_name, subtype
|
||||||
|
---
|
||||||
|
parameters:
|
||||||
|
- in: query
|
||||||
|
name: barcode
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: 1
|
||||||
|
required: true
|
||||||
|
description: barcode for the item
|
||||||
|
- in: query
|
||||||
|
name: item_name
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: 1
|
||||||
|
required: true
|
||||||
|
description: name of the blank item
|
||||||
|
- in: query
|
||||||
|
name: subtype
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: 1
|
||||||
|
required: true
|
||||||
|
description: type of item this is categorized to be.
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: Item added successfully.
|
||||||
|
"""
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
data = {
|
data = {
|
||||||
'barcode': request.get_json()['barcode'],
|
'barcode': request.get_json()['barcode'],
|
||||||
'name': request.get_json()['name'],
|
'name': request.get_json()['name'],
|
||||||
'subtype': request.get_json()['subtype']
|
'subtype': request.get_json()['subtype']
|
||||||
}
|
}
|
||||||
database_config = config()
|
|
||||||
site_name = session['selected_site']
|
site_name = session['selected_site']
|
||||||
user_id = session['user_id']
|
user_id = session['user_id']
|
||||||
|
|
||||||
|
|||||||
@ -42,9 +42,9 @@ def postNewBlankItem(site_name: str, user_id: int, data: dict, conn=None):
|
|||||||
brand_id = 1
|
brand_id = 1
|
||||||
|
|
||||||
|
|
||||||
logistics_info = database_items.insertLogisticsInfoTuple(conn, site_name, logistics_info.payload(), convert=True)
|
logistics_info = database_items.insertLogisticsInfoTuple(site_name, logistics_info.payload(), conn=conn)
|
||||||
item_info = database_items.insertItemInfoTuple(conn, site_name, item_info.payload(), convert=True)
|
item_info = database_items.insertItemInfoTuple(site_name, item_info.payload(), conn=conn)
|
||||||
food_info = database_items.insertFoodInfoTuple(conn, site_name, food_info.payload(), convert=True)
|
food_info = database_items.insertFoodInfoTuple(site_name, food_info.payload(), conn=conn)
|
||||||
|
|
||||||
name = data['name']
|
name = data['name']
|
||||||
name = name.replace("'", "@&apostraphe&")
|
name = name.replace("'", "@&apostraphe&")
|
||||||
@ -66,7 +66,7 @@ def postNewBlankItem(site_name: str, user_id: int, data: dict, conn=None):
|
|||||||
search_string=search_string
|
search_string=search_string
|
||||||
)
|
)
|
||||||
|
|
||||||
item = database_items.insertItemTuple(conn, site_name, item.payload(), convert=True)
|
item = database_items.insertItemTuple(site_name, item.payload(), conn=conn)
|
||||||
|
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute(f"SELECT id FROM {site_name}_locations WHERE uuid=%s;", (uuid, ))
|
cur.execute(f"SELECT id FROM {site_name}_locations WHERE uuid=%s;", (uuid, ))
|
||||||
@ -74,7 +74,7 @@ def postNewBlankItem(site_name: str, user_id: int, data: dict, conn=None):
|
|||||||
|
|
||||||
dbPayloads.ItemLocationPayload
|
dbPayloads.ItemLocationPayload
|
||||||
item_location = dbPayloads.ItemLocationPayload(item['id'], location_id)
|
item_location = dbPayloads.ItemLocationPayload(item['id'], location_id)
|
||||||
database_items.insertItemLocationsTuple(conn, site_name, item_location.payload())
|
database_items.insertItemLocationsTuple(site_name, item_location.payload(), conn=conn)
|
||||||
|
|
||||||
|
|
||||||
creation_tuple = dbPayloads.TransactionPayload(
|
creation_tuple = dbPayloads.TransactionPayload(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user