From b9e4ec527830a7e468812b7bfac93a35adb2b3a5 Mon Sep 17 00:00:00 2001 From: terraJeffrey <129749632+terraJeffrey@users.noreply.github.com> Date: Tue, 13 Jun 2023 13:02:08 +0100 Subject: [PATCH 1/2] fix: remove parsing warning status and overwritten default warning status from the class --- terra/api/api_responses.py | 27 +++++++++++++-------------- terra/models/base_model.py | 3 +++ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/terra/api/api_responses.py b/terra/api/api_responses.py index 0557533..b39004f 100644 --- a/terra/api/api_responses.py +++ b/terra/api/api_responses.py @@ -61,9 +61,9 @@ class TerraParsedApiResponse(base_model.TerraDataModel): def _parse_api_body( - dtype: typing.Optional[str], - body: typing.Optional[typing.Dict[str, typing.Any]], - user: typing.Optional[models.user.User], + dtype: typing.Optional[str], + body: typing.Optional[typing.Dict[str, typing.Any]], + user: typing.Optional[models.user.User], ) -> TerraParsedApiResponse: if not body: raise exceptions.NoBodyException @@ -72,7 +72,7 @@ def _parse_api_body( if "user" in body: Auser = models.user.User.from_dict(body["user"]) - if ("status" in body) and (body["status"] in STATUS.keys()): + if ("status" in body) and (body["status"] in STATUS.keys()) and (body["status"] != 'warning'): response = STATUS[body["status"]]().from_dict(body) elif dtype in USER_DATATYPES: @@ -123,11 +123,11 @@ def _parse_api_body( class TerraApiResponse(TerraParsedApiResponse): def __init__( - self, - resp: requests.Response, - dtype: str, - user: typing.Optional[user_.User] = None, - client: typing.Optional[Terra] = None, + self, + resp: requests.Response, + dtype: str, + user: typing.Optional[user_.User] = None, + client: typing.Optional[Terra] = None, ) -> None: self.response_code: int = resp.status_code self.raw_body: typing.Optional[str] = resp.text @@ -165,10 +165,10 @@ def get_json(self) -> typing.Optional[typing.Dict[str, typing.Any]]: class TerraWebhookResponse(TerraParsedApiResponse): def __init__( - self, - resp: typing.Union[typing.Dict[str, typing.Any], requests.Response], - user: typing.Optional[user_.User] = None, - dtype: typing.Optional[str] = None, + self, + resp: typing.Union[typing.Dict[str, typing.Any], requests.Response], + user: typing.Optional[user_.User] = None, + dtype: typing.Optional[str] = None, ) -> None: self.json: typing.Dict[str, typing.Any] = resp.json() if isinstance(resp, requests.Response) else resp self.dtype: typing.Optional[str] = self.json.get("type", dtype) @@ -352,7 +352,6 @@ class SentToWebhook(TerraParsedApiResponse): "nutrition": models.v2.nutrition.Nutrition, } - DTYPE_TO_RESPONSE = { "widget_session": WidgetSession, "auth_url": UserAuthUrl, diff --git a/terra/models/base_model.py b/terra/models/base_model.py index 491289e..f4c2804 100644 --- a/terra/models/base_model.py +++ b/terra/models/base_model.py @@ -137,6 +137,9 @@ def from_dict( (inner_item := getattr(data_model, k, *(("NOT_FOUND",) if safe else ()))) in [None, []] or isinstance(inner_item, TerraDataModel) or isinstance(v, list) + or (inner_item := getattr(data_model, k, *(("NOT_FOUND",) if safe else ()))) != v # Added this + # condition because the data model has a default status: warning and this condition allows it to + # get overwritten ): if isinstance(inner_item, TerraDataModel): v = inner_item.from_dict(v) From 9a5f71a58a235a551d52953d25accf3f7ed7ea1b Mon Sep 17 00:00:00 2001 From: terraJeffrey <129749632+terraJeffrey@users.noreply.github.com> Date: Tue, 13 Jun 2023 13:03:54 +0100 Subject: [PATCH 2/2] style: link --- terra/api/api_responses.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/terra/api/api_responses.py b/terra/api/api_responses.py index b39004f..6a3e721 100644 --- a/terra/api/api_responses.py +++ b/terra/api/api_responses.py @@ -61,9 +61,9 @@ class TerraParsedApiResponse(base_model.TerraDataModel): def _parse_api_body( - dtype: typing.Optional[str], - body: typing.Optional[typing.Dict[str, typing.Any]], - user: typing.Optional[models.user.User], + dtype: typing.Optional[str], + body: typing.Optional[typing.Dict[str, typing.Any]], + user: typing.Optional[models.user.User], ) -> TerraParsedApiResponse: if not body: raise exceptions.NoBodyException @@ -72,7 +72,7 @@ def _parse_api_body( if "user" in body: Auser = models.user.User.from_dict(body["user"]) - if ("status" in body) and (body["status"] in STATUS.keys()) and (body["status"] != 'warning'): + if ("status" in body) and (body["status"] in STATUS.keys()) and (body["status"] != "warning"): response = STATUS[body["status"]]().from_dict(body) elif dtype in USER_DATATYPES: @@ -123,11 +123,11 @@ def _parse_api_body( class TerraApiResponse(TerraParsedApiResponse): def __init__( - self, - resp: requests.Response, - dtype: str, - user: typing.Optional[user_.User] = None, - client: typing.Optional[Terra] = None, + self, + resp: requests.Response, + dtype: str, + user: typing.Optional[user_.User] = None, + client: typing.Optional[Terra] = None, ) -> None: self.response_code: int = resp.status_code self.raw_body: typing.Optional[str] = resp.text @@ -165,10 +165,10 @@ def get_json(self) -> typing.Optional[typing.Dict[str, typing.Any]]: class TerraWebhookResponse(TerraParsedApiResponse): def __init__( - self, - resp: typing.Union[typing.Dict[str, typing.Any], requests.Response], - user: typing.Optional[user_.User] = None, - dtype: typing.Optional[str] = None, + self, + resp: typing.Union[typing.Dict[str, typing.Any], requests.Response], + user: typing.Optional[user_.User] = None, + dtype: typing.Optional[str] = None, ) -> None: self.json: typing.Dict[str, typing.Any] = resp.json() if isinstance(resp, requests.Response) else resp self.dtype: typing.Optional[str] = self.json.get("type", dtype)