# pylint: skip-file
import uuid
import re
def get_guid_from_url(url: str) -> str | None:
"""
Вытащить guid из url
"""
guid_list = re.findall(r'\w{8}-\w{4}-\w{4}-\w{4}-\w{12}', url)
if len(guid_list) == 0:
return None
return guid_list[0]
status_create_items = "HTTP_CONFLICT"
resp_create_items_json = {
"errors" : [ {
"id" : "6bd3c63d-cf4b-4b73-a32c-0108f61f3cb8",
"status" : "409",
"code" : "STATE_ERROR.ENTITY_STATE_INVALID",
"title" : "appStoreVersions with id '893519693' is not in valid state.",
"detail" : "This resource cannot be reviewed, please check associated errors to see why.",
"meta" : {
"associatedErrors" : {
"/appStoreVersions/893519693" : [ {
"id" : "ed8f4e19-55e9-4142-9573-775a179c5a84",
"status" : "409",
"code" : "STATE_ERROR.ITEM_PART_OF_ANOTHER_SUBMISSION",
"title" : "Item is already present in another reviewSubmission",
"detail" : "appStoreVersions with id 893519693 was already added to another reviewSubmission with id 7f79d186-9754-4ac9-ab40-59769d85f68f"
} ]
}
}
} ]
}
if status_create_items == "HTTP_CONFLICT":
for err in ((resp_create_items_json or {}).get("errors") or []):
associated_errors = (err.get("meta") or {}).get("associatedErrors") or {}
for details in associated_errors.values():
for detail in details:
if detail.get("code") == "STATE_ERROR.ITEM_PART_OF_ANOTHER_SUBMISSION":
#self.call_back.send_msg("Версия привязана к другому reviewSubmissions, редактируем его.")
review_submissions_id = get_guid_from_url(detail["detail"])
#review_submissions_url = f"{API_URL}/reviewSubmissions/{self._review_submissions_id}"
#_, read_review_json = self.http_client.get(review_submissions_url)
#relationships = read_review_json["data"]["relationships"]
#self._review_items_link = relationships["items"]["links"]["related"]
#if read_review_json["data"]["attributes"]["state"] not in ("READY_FOR_REVIEW", "CANCELING"):
# self._version_editor.disable_submissions_review(self._review_submissions_id)
raise Exception('Смена reviewSubmissions при создании reviewSubmissionItems')