Add GET methods to API, for departments, subdepartments, products

This commit is contained in:
Lance Edgar 2020-03-15 14:27:22 -05:00
parent deea31597c
commit b76e82975a

View file

@ -109,6 +109,90 @@ class CoreWebAPI(object):
assert set(js['result'].keys()) == set(['result']) assert set(js['result'].keys()) == set(['result'])
return js['result']['result'] return js['result']['result']
def get_departments(self, **columns):
"""
Fetch some or all of Department records from CORE.
:returns: A (potentially empty) list of department dict records.
To fetch all departments::
api.get_departments()
To fetch only departments named "Grocery"::
api.get_departments(dept_name='Grocery')
"""
params = {
'entity': 'Departments',
'submethod': 'get',
'columns': columns,
}
response = self.post(params)
result = self.parse_response(response)
return [json.loads(rec) for rec in result]
def get_department(self, dept_no, **columns):
"""
Fetch an existing Department record from CORE.
:returns: Either a department dict record, or ``None``.
"""
columns['dept_no'] = dept_no
params = {
'entity': 'Departments',
'submethod': 'get',
'columns': columns,
}
response = self.post(params)
result = self.parse_response(response)
if result:
if len(result) > 1:
log.warning("CORE API returned %s department results", len(result))
return json.loads(result[0])
def get_subdepartments(self, **columns):
"""
Fetch some or all of Subdepartment records from CORE.
:returns: A (potentially empty) list of subdepartment dict records.
To fetch all subdepartments::
api.get_subdepartments()
To fetch only subdepartments named "Grocery"::
api.get_subdepartments(subdept_name='Grocery')
"""
params = {
'entity': 'SubDepts',
'submethod': 'get',
'columns': columns,
}
response = self.post(params)
result = self.parse_response(response)
return [json.loads(rec) for rec in result]
def get_subdepartment(self, subdept_no, **columns):
"""
Fetch an existing Subdepartment record from CORE.
:returns: Either a subdepartment dict record, or ``None``.
"""
columns['subdept_no'] = subdept_no
params = {
'entity': 'SubDepts',
'submethod': 'get',
'columns': columns,
}
response = self.post(params)
result = self.parse_response(response)
if result:
if len(result) > 1:
log.warning("CORE API returned %s subdepartment results", len(result))
return json.loads(result[0])
def get_vendors(self, **columns): def get_vendors(self, **columns):
""" """
Fetch some or all of Vendor records from CORE. Fetch some or all of Vendor records from CORE.
@ -172,3 +256,45 @@ class CoreWebAPI(object):
response = self.post(params) response = self.post(params)
result = self.parse_response(response) result = self.parse_response(response)
return json.loads(result) return json.loads(result)
def get_products(self, **columns):
"""
Fetch some or all of Product records from CORE.
:returns: A (potentially empty) list of product dict records.
To fetch all products::
api.get_products()
To fetch only products with brand name "Braggs"::
api.get_products(brand='Braggs')
"""
params = {
'entity': 'Products',
'submethod': 'get',
'columns': columns,
}
response = self.post(params)
result = self.parse_response(response)
return [json.loads(rec) for rec in result]
def get_product(self, upc, **columns):
"""
Fetch an existing Product record from CORE.
:returns: Either a product dict record, or ``None``.
"""
columns['upc'] = upc
params = {
'entity': 'Products',
'submethod': 'get',
'columns': columns,
}
response = self.post(params)
result = self.parse_response(response)
if result:
if len(result) > 1:
log.warning("CORE API returned %s product results", len(result))
return json.loads(result[0])