def _include_resources(self, resource: JsonObject,
                        result: JsonObject) -> None:
     for relationship_name, relationship in resource.get(
             "relationships", {}).items():
         relationship_guid = (relationship.get("data") or {}).get("guid")
         included_resources = result["included"].get(
             plural(relationship_name))
         if relationship_guid is not None and included_resources is not None:
             included_resource = next(
                 (r for r in included_resources
                  if relationship_guid == r.get("guid")), None)
             if included_resource is not None:
                 self._include_resources(included_resource, result)
                 included = resource.setdefault("_included", {})
                 included.update({relationship_name: included_resource})
 def _mixin_included_resources(self, result: JsonObject) -> JsonObject:
     if "included" not in result:
         return result
     for resource in result.get("resources", [result]):
         self._include_resources(resource, result)
     del result["included"]
     return result
 def from_json_object(to_one_relationship: JsonObject):
     if to_one_relationship is None:
         return ToOneRelationship(None)
     data = to_one_relationship.pop("data", None)
     result = ToOneRelationship(None if data is None else data["guid"])
     result.update(to_one_relationship)
     return result
예제 #4
0
 def _safe_get_instances(self, application_guid: str) -> JsonObject:
     try:
         return self.get_instances(application_guid)
     except InvalidStatusCode as ex:
         if ex.status_code == HTTPStatus.BAD_REQUEST and type(
                 ex.body) == dict:
             code = ex.body.get('code', -1)
             # 170002: staging not finished
             # 220001: instances error
             if code == 220001 or code == 170002:
                 return JsonObject()
             else:
                 _logger.error("")
         raise
 def from_json_object(to_many_relations: JsonObject):
     result = ToManyRelationship(
         *[relation["guid"] for relation in to_many_relations.pop("data")])
     result.update(to_many_relations)
     return result