def formulation_collection_service():
resp = flask.Response(json.dumps({'status': 'failed'}))
if request.method == 'GET':
formulations = []
formulations_rs = Formulation.query.all()
for formulation_r in formulations_rs:
formulation_properties = []
formulations_property_rs = formulation_r.formulation_property.all()
for formulations_property_r in formulations_property_rs:
formulation_properties.append({formulations_property_r.key: formulations_property_r.value})
formulations.append({
'id': formulation_r.id,
'name': formulation_r.name,
'date': formulation_r.date.timestamp(),
'formulation_properties': formulation_properties
})
resp = flask.Response(json.dumps({'status': 'success', 'formulations': formulations}))
elif request.method == 'POST':
if request.is_json:
req_json = request.json
property_list, property_key_list = [], []
name = req_json.pop('formulationName', 'formulation-%f' % datetime.now().timestamp())
date_ts = req_json.pop('formulationDate', datetime.now().timestamp())
property_key_list = [x for x in req_json if x.startswith('key-')]
property_key_list.sort(key=lambda x: int(x.replace('key-', '')))
for fpkey in property_key_list:
key = req_json[fpkey]
val = req_json['value-%s' % fpkey.split('-', maxsplit=1)[1]]
property_list.append((key, val))
# create new formulation in db
formulation = Formulation(name=name, date=datetime.fromtimestamp(date_ts))
db.session.add(formulation)
db.session.commit()
for fpkey, fpval in property_list:
formulation.formulation_property.append(FormulationProperty(key=fpkey, value=fpval))
db.session.commit()
resp = flask.Response(json.dumps({'status': 'success',
'new_formulation_id': formulation.id,
'new_formulation_name': formulation.name}))
return set_debug_response_header(resp)
评论列表
文章目录