def put_native(self, path: str, content) -> DocumentFamily: from kodexa import KodexaPlatform try: logger.info(f"Putting native content to path {path}") files = {"file": content} document_family_response = requests.post( f"{KodexaPlatform.get_url()}/api/stores/{self.ref.replace(':', '/')}/fs", params={ "path": path, "document": False }, headers={"x-access-token": KodexaPlatform.get_access_token()}, files=files) if document_family_response.status_code == 200: return DocumentFamily.parse_obj( document_family_response.json()) msg = "Document family create failed [" + document_family_response.text + "], response " + str( document_family_response.status_code) logger.warning(msg) raise Exception(msg) except JSONDecodeError: logger.warning("Unable to decode the JSON response") raise
def replace_content_object(self, document_family: DocumentFamily, content_object_id: str, document: Document) -> DocumentFamily: from kodexa import KodexaPlatform try: logger.info( f"Replacing document in family {document_family.id} content object {content_object_id}" ) files = {"file": document.to_kddb()} content_object_replace = requests.put( f"{KodexaPlatform.get_url()}/api/stores/{self.ref.replace(':', '/')}/families/{document_family.id}/objects/{content_object_id}/content", headers={"x-access-token": KodexaPlatform.get_access_token()}, files=files) if content_object_replace.status_code == 200: return DocumentFamily.parse_obj(content_object_replace.json()) msg = "Document replace failed [" + content_object_replace.text + "], response " + str( content_object_replace.status_code) logger.warning(msg) raise Exception(msg) except JSONDecodeError: logger.warning("Unable to decode the JSON response") raise
def get_family_by_path(self, path: str) -> Optional[DocumentFamily]: from kodexa import KodexaPlatform get_response = KodexaPlatform.get_client().get( f"api/stores/{self.ref.replace(':', '/')}/fs", params={ "path": path, "meta": True }) return DocumentFamily.parse_obj( get_response.json()) if get_response is not None else None
def put(self, path: str, content, replace=False) -> DocumentFamily: """Put the content into the model store at the given path Args: path: The path you wish to put the content at content: The content for that object replace: Replace the content if it exists Returns: the document family that was created """ from kodexa import KodexaPlatform import requests try: files = {"file": content} if replace: delete_response = requests.delete( f"{KodexaPlatform.get_url()}/api/stores/{self.ref.replace(':', '/')}/fs", params={"path": path}, headers={ "x-access-token": KodexaPlatform.get_access_token() }) logger.info(f"Deleting {path} ({delete_response.status_code})") content_object_response = requests.post( f"{KodexaPlatform.get_url()}/api/stores/{self.ref.replace(':', '/')}/fs", params={"path": path}, headers={"x-access-token": KodexaPlatform.get_access_token()}, files=files) logger.info( f"Uploaded {path} ({content_object_response.status_code})") if content_object_response.status_code == 200: return DocumentFamily.parse_obj(content_object_response.json()) if content_object_response.status_code == 400: from addict import Dict bad_request = Dict(json.loads(content_object_response.text)) for error_key in bad_request.errors.keys(): print(bad_request.errors[error_key] + " (" + error_key + ")") raise Exception("Invalid request") msg = "Execution creation failed [" + content_object_response.text + "], response " + str( content_object_response.status_code) logger.warning(msg) raise Exception(msg) except JSONDecodeError: logger.warning("Unable to JSON decode the response?") raise
def get_family(self, document_family_id: str) -> Optional[DocumentFamily]: from kodexa import KodexaPlatform try: logger.info(f"Getting document family id {document_family_id}") document_family_response = requests.get( f"{KodexaPlatform.get_url()}/api/stores/{self.ref.replace(':', '/')}/families/{document_family_id}", headers={"x-access-token": KodexaPlatform.get_access_token()}) if document_family_response.status_code == 200: return DocumentFamily.parse_obj( document_family_response.json()) msg = "Get document family failed [" + document_family_response.text + "], response " + str( document_family_response.status_code) logger.warning(msg) raise Exception(msg) except JSONDecodeError: logger.warning("Unable to decode the JSON response") raise
def query_families(self, query: str = "*", page: int = 1, page_size: int = 100, sort=None) -> List[DocumentFamily]: params = {'page': page, 'pageSize': page_size, 'query': query} if sort is not None: params.sort = sort from kodexa import KodexaPlatform get_response = KodexaPlatform.get_client().get( f"api/stores/{self.ref.replace(':', '/')}/families", params=params) if get_response is not None: families = [] for fam_dict in get_response.json()['content']: families.append(DocumentFamily.parse_obj(fam_dict)) return families return []