Загрузка данных


# 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')