Clean up and I think I fixed a weird bug with Pydantic models and the list object type. It seems to try for a dict conversion first if Union[dict,list] is used.
This commit is contained in:
@@ -22,7 +22,7 @@ class Resp_Body_Base(BaseModel):
|
||||
# alias = 'test_prop_alias'
|
||||
# )
|
||||
|
||||
data: Union[dict, list]
|
||||
data: Union[list, dict]
|
||||
meta: Optional[dict]
|
||||
# ### END ### API Response Model ### Resp_Body_Base() ###
|
||||
|
||||
@@ -41,17 +41,22 @@ def mk_resp(
|
||||
exclude_unset: bool = True,
|
||||
response = None
|
||||
):
|
||||
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||
log.debug(locals())
|
||||
|
||||
if data is None: data_out = { 'result': data }
|
||||
elif data == False: data_out = { 'result': data }
|
||||
elif data == True: data_out = { 'result': data }
|
||||
elif isinstance(data, dict): data_out = data
|
||||
elif isinstance(data, list): data_out = data
|
||||
elif isinstance(data, dict):
|
||||
log.info('Data type is a dict')
|
||||
data_out = data
|
||||
elif isinstance(data, list):
|
||||
log.info('Data type is a list')
|
||||
data_out = data
|
||||
else: # Assuming it is still and object. This should be improved. Example model type: "<class 'app.models.account_models.Account_Base'>"
|
||||
log.info('Data type is other')
|
||||
data_out = data.dict(by_alias=by_alias, exclude_unset=exclude_unset)
|
||||
log.debug(data_out)
|
||||
# log.debug(data_out)
|
||||
|
||||
resp_body = {}
|
||||
resp_body['data'] = data_out
|
||||
@@ -90,11 +95,15 @@ def mk_resp(
|
||||
elif status_code == 503: response.status_code = status.HTTP_503_SERVICE_UNAVAILABLE
|
||||
elif status_code == 504: response.status_code = status.HTTP_504_GATEWAY_TIMEOUT
|
||||
|
||||
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||
log.debug(type(resp_body['data']))
|
||||
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||
# log.debug(resp_body)
|
||||
# log.debug(type(resp_body['data']))
|
||||
|
||||
# import json
|
||||
# with open('data.txt', 'w') as outfile:
|
||||
# json.dump(resp_body['data'], outfile)
|
||||
|
||||
resp_body_obj = Resp_Body_Base(**resp_body)
|
||||
# resp_body_obj.test_prop = 'my value'
|
||||
log.debug(resp_body_obj)
|
||||
resp_body_dict = resp_body_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
|
||||
log.debug(resp_body_dict)
|
||||
|
||||
Reference in New Issue
Block a user