Migrated addConversion to new api schema
This commit is contained in:
parent
009e3b6b1d
commit
7c6846dd99
@ -411,6 +411,19 @@ class SKUPrefixPayload:
|
||||
self.description
|
||||
)
|
||||
|
||||
@dataclass
|
||||
class ConversionPayload:
|
||||
item_id: int
|
||||
uom_id: int
|
||||
conv_factor: float
|
||||
|
||||
def payload(self):
|
||||
return (
|
||||
self.item_id,
|
||||
self.uom_id,
|
||||
self.conv_factor
|
||||
)
|
||||
|
||||
@dataclass
|
||||
class SiteManager:
|
||||
site_name: str
|
||||
|
||||
@ -823,7 +823,7 @@ def insertItemTuple(site, payload, convert=True, conn=None):
|
||||
except Exception as error:
|
||||
raise postsqldb.DatabaseError(error, payload, sql)
|
||||
|
||||
def insertSKUPrefixtuple(site, payload, convert=True, conn=None):
|
||||
def insertSKUPrefixtuple(site:str, payload:tuple, convert=True, conn=None):
|
||||
"""insert payload into zones table of site
|
||||
|
||||
Args:
|
||||
@ -865,6 +865,48 @@ def insertSKUPrefixtuple(site, payload, convert=True, conn=None):
|
||||
except Exception as error:
|
||||
raise postsqldb.DatabaseError(error, payload, sql)
|
||||
|
||||
def insertConversionTuple(site: str, payload: list, convert=True, conn=None):
|
||||
"""insert into recipes table for site
|
||||
|
||||
Args:
|
||||
conn (_T_connector@connect): Postgresql Connector
|
||||
site (stre):
|
||||
payload (tuple): (item_id, uom_id, conversion_factor)
|
||||
convert (bool, optional): Determines if to return tuple as a dictionary. Defaults to False.
|
||||
|
||||
Raises:
|
||||
DatabaseError:
|
||||
|
||||
Returns:
|
||||
tuple or dict: inserted tuple
|
||||
"""
|
||||
record = ()
|
||||
self_conn = False
|
||||
with open(f"sql/INSERT/insertConversionsTuple.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:
|
||||
record = postsqldb.tupleDictionaryFactory(cur.description, rows)
|
||||
elif rows and not convert:
|
||||
record = rows
|
||||
|
||||
if self_conn:
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
return record
|
||||
|
||||
except Exception as error:
|
||||
raise postsqldb.DatabaseError(error, payload, sql)
|
||||
|
||||
def postDeleteCostLayer(site_name, payload, convert=True, conn=None):
|
||||
"""
|
||||
|
||||
@ -687,20 +687,47 @@ def addSKUPrefix():
|
||||
|
||||
@items_api.route('/addConversion', methods=['POST'])
|
||||
def addConversion():
|
||||
""" POST new conversion to the system given a item_id, uom_id, conv_factor
|
||||
---
|
||||
parameters:
|
||||
- in: header
|
||||
name: item_id
|
||||
schema:
|
||||
type: integer
|
||||
default: 1
|
||||
required: true
|
||||
description: item_id the conversion applies to
|
||||
- in: header
|
||||
name: uom_id
|
||||
schema:
|
||||
type: integer
|
||||
default: 1
|
||||
required: true
|
||||
description: uom_id to match item_id uom to convert to
|
||||
- in: header
|
||||
name: conv_factor
|
||||
schema:
|
||||
type: float
|
||||
default: 1
|
||||
required: true
|
||||
description: item_id.uom -> uom_id amount
|
||||
responses:
|
||||
200:
|
||||
description: Prefix added successfully.
|
||||
"""
|
||||
if request.method == "POST":
|
||||
item_id = request.get_json()['parent_id']
|
||||
uom_id = request.get_json()['uom_id']
|
||||
conv_factor = request.get_json()['conv_factor']
|
||||
|
||||
database_config = config()
|
||||
site_name = session['selected_site']
|
||||
with psycopg2.connect(**database_config) as conn:
|
||||
conversion = db.ConversionsTable.Payload(
|
||||
item_id, uom_id, conv_factor
|
||||
)
|
||||
db.ConversionsTable.insert_tuple(conn, site_name, conversion.payload())
|
||||
|
||||
return jsonify(error=False, message="Conversion was added successfully")
|
||||
conversion = dbPayloads.ConversionPayload(
|
||||
item_id, uom_id, conv_factor
|
||||
)
|
||||
|
||||
database_items.insertConversionTuple(site_name, conversion.payload())
|
||||
|
||||
return jsonify(error=False, message="Conversion was added successfully")
|
||||
return jsonify(error=True, message="Unable to save this conversion, ERROR!")
|
||||
|
||||
@items_api.route('/deleteConversion', methods=['POST'])
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user