pyxecm 3.6.2__tar.gz → 3.8.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyxecm-3.6.2 → pyxecm-3.8.0}/PKG-INFO +5 -3
- {pyxecm-3.6.2 → pyxecm-3.8.0}/pyproject.toml +4 -3
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/__init__.py +1 -1
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/avts.py +16 -16
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/coreshare.py +33 -35
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/helper/assoc.py +14 -10
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/helper/data.py +139 -112
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/helper/logadapter.py +7 -4
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/helper/web.py +12 -8
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/helper/xml.py +21 -20
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/otac.py +20 -28
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/otawp.py +28 -60
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/otca.py +24 -27
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/otcs.py +627 -509
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/otds.py +737 -91
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/otiv.py +1 -1
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/otkd.py +46 -48
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/otmm.py +21 -23
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/otpd.py +27 -27
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/app.py +27 -6
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/auth/functions.py +9 -9
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/auth/router.py +4 -4
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/common/functions.py +1 -1
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/common/metrics.py +1 -1
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/common/router.py +1 -1
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/settings.py +1 -10
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/terminal/__init__.py +1 -1
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/terminal/router.py +6 -9
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/v1_maintenance/router.py +1 -1
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/v1_payload/functions.py +133 -4
- pyxecm-3.8.0/src/pyxecm_api/v1_payload/log_reader.py +1524 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/v1_payload/models.py +36 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/v1_payload/router.py +203 -9
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/browser_automation.py +55 -45
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/customizer.py +9 -37
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/guidewire.py +322 -356
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/k8s.py +54 -53
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/log.py +9 -5
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/m365.py +140 -132
- pyxecm-3.8.0/src/pyxecm_customizer/manager_push.py +261 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/payload.py +464 -354
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/payload_list.py +49 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/salesforce.py +38 -37
- pyxecm-3.8.0/src/pyxecm_customizer/sap.py +6098 -0
- pyxecm-3.8.0/src/pyxecm_customizer/sap_models.py +7260 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/servicenow.py +54 -53
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/settings.py +132 -9
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/successfactors.py +189 -168
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/translate.py +4 -4
- pyxecm-3.8.0/src/pyxecm_customizer/version.py +33 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_maintenance_page/app.py +3 -1
- pyxecm-3.6.2/src/pyxecm_customizer/sap.py +0 -163
- {pyxecm-3.6.2 → pyxecm-3.8.0}/.gitignore +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/README.md +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/helper/__init__.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm/py.typed +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/__init__.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/__main__.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/auth/__init__.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/auth/models.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/common/__init__.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/common/models.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/v1_maintenance/__init__.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/v1_maintenance/functions.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/v1_maintenance/models.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/v1_otcs/__init__.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/v1_otcs/functions.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/v1_otcs/router.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_api/v1_payload/__init__.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/__init__.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/__main__.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_customizer/exceptions.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_maintenance_page/__init__.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_maintenance_page/__main__.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_maintenance_page/settings.py +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_maintenance_page/static/favicon.avif +0 -0
- {pyxecm-3.6.2 → pyxecm-3.8.0}/src/pyxecm_maintenance_page/templates/maintenance.html +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: pyxecm
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.8.0
|
|
4
4
|
Summary: A Python library to interact with Opentext Content Management Rest API
|
|
5
5
|
Project-URL: Homepage, https://github.com/opentext/pyxecm
|
|
6
6
|
Author-email: Kai Gatzweiler <kgatzweiler@opentext.com>, "Dr. Marc Diefenbruch" <mdiefenb@opentext.com>
|
|
@@ -11,7 +11,7 @@ Classifier: License :: OSI Approved :: Apache Software License
|
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System
|
|
14
|
-
Requires-Python: >=3.
|
|
14
|
+
Requires-Python: >=3.12
|
|
15
15
|
Requires-Dist: lxml>=6.0.0
|
|
16
16
|
Requires-Dist: opentelemetry-api>=1.34.1
|
|
17
17
|
Requires-Dist: opentelemetry-exporter-otlp>=1.34.1
|
|
@@ -40,10 +40,12 @@ Provides-Extra: customizer
|
|
|
40
40
|
Requires-Dist: kubernetes>=33.1.0; extra == 'customizer'
|
|
41
41
|
Requires-Dist: openpyxl>=3.1.5; extra == 'customizer'
|
|
42
42
|
Requires-Dist: playwright>=1.53.0; extra == 'customizer'
|
|
43
|
-
Requires-Dist: pydantic>=2.
|
|
43
|
+
Requires-Dist: pydantic>=2.12.0; extra == 'customizer'
|
|
44
44
|
Requires-Dist: python-hcl2==7.3.1; extra == 'customizer'
|
|
45
45
|
Provides-Extra: magic
|
|
46
46
|
Requires-Dist: python-magic; extra == 'magic'
|
|
47
|
+
Provides-Extra: saml
|
|
48
|
+
Requires-Dist: signxml>=5.1.0; extra == 'saml'
|
|
47
49
|
Provides-Extra: sap
|
|
48
50
|
Requires-Dist: pyrfc==3.3.1; extra == 'sap'
|
|
49
51
|
Description-Content-Type: text/markdown
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "pyxecm"
|
|
3
|
-
version = "3.
|
|
3
|
+
version = "3.8.0"
|
|
4
4
|
description = 'A Python library to interact with Opentext Content Management Rest API'
|
|
5
5
|
keywords = [
|
|
6
6
|
'opentext',
|
|
@@ -15,7 +15,7 @@ authors = [
|
|
|
15
15
|
{ name = "Kai Gatzweiler", email = "kgatzweiler@opentext.com" },
|
|
16
16
|
{ name = "Dr. Marc Diefenbruch", email = "mdiefenb@opentext.com" },
|
|
17
17
|
]
|
|
18
|
-
requires-python = '>=3.
|
|
18
|
+
requires-python = '>=3.12'
|
|
19
19
|
dependencies = [
|
|
20
20
|
"lxml>=6.0.0",
|
|
21
21
|
"opentelemetry-api>=1.34.1",
|
|
@@ -43,10 +43,11 @@ classifiers = [
|
|
|
43
43
|
[project.optional-dependencies]
|
|
44
44
|
magic = ['python-magic']
|
|
45
45
|
sap = ['pyrfc==3.3.1']
|
|
46
|
+
saml = ['signxml>=5.1.0']
|
|
46
47
|
customizer = [
|
|
47
48
|
"kubernetes>=33.1.0",
|
|
48
49
|
"playwright>=1.53.0",
|
|
49
|
-
"pydantic>=2.
|
|
50
|
+
"pydantic>=2.12.0",
|
|
50
51
|
"python-hcl2==7.3.1",
|
|
51
52
|
"openpyxl>=3.1.5",
|
|
52
53
|
]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""AVTS stands for Aviator Search and is an OpenText offering for
|
|
1
|
+
"""AVTS stands for Aviator Search and is an OpenText offering for LLM-based search across multiple repositories."""
|
|
2
2
|
|
|
3
3
|
__author__ = "Dr. Marc Diefenbruch"
|
|
4
4
|
__copyright__ = "Copyright (C) 2024-2025, OpenText"
|
|
@@ -172,7 +172,7 @@ class AVTS:
|
|
|
172
172
|
HTTP method (GET, POST, etc.). Defaults to "GET".
|
|
173
173
|
headers (dict | None, optional):
|
|
174
174
|
Request headers. Defaults to None.
|
|
175
|
-
data (dict | None, optional):
|
|
175
|
+
data (dict | list | None, optional):
|
|
176
176
|
Request payload. Defaults to None.
|
|
177
177
|
json_data (dict | None, optional):
|
|
178
178
|
Request payload for the JSON parameter. Defaults to None.
|
|
@@ -315,7 +315,7 @@ class AVTS:
|
|
|
315
315
|
|
|
316
316
|
Args:
|
|
317
317
|
response_object (requests.Response):
|
|
318
|
-
This is
|
|
318
|
+
This is the response object delivered by the request call.
|
|
319
319
|
additional_error_message (str, optional):
|
|
320
320
|
Use a more specific error message in case of an error.
|
|
321
321
|
show_error (bool, optional):
|
|
@@ -650,13 +650,13 @@ class AVTS:
|
|
|
650
650
|
certificate_password (str):
|
|
651
651
|
The password for the certificate.
|
|
652
652
|
index_attachments (bool, optional):
|
|
653
|
-
Whether or not to index / crawl attachments.
|
|
653
|
+
Whether or not to index / crawl attachments. Defaults to True.
|
|
654
654
|
index_call_recordings (bool, optional):
|
|
655
|
-
Whether or not to index / crawl meeting recordings.
|
|
655
|
+
Whether or not to index / crawl meeting recordings. Defaults to True.
|
|
656
656
|
index_message_replies (bool, optional):
|
|
657
|
-
Whether or not to index / crawl message replies.
|
|
657
|
+
Whether or not to index / crawl message replies. Defaults to True.
|
|
658
658
|
index_user_chats (bool, optional):
|
|
659
|
-
Whether or not to index / crawl user chats.
|
|
659
|
+
Whether or not to index / crawl user chats. Defaults to True.
|
|
660
660
|
|
|
661
661
|
Returns:
|
|
662
662
|
dict | None:
|
|
@@ -956,9 +956,9 @@ class AVTS:
|
|
|
956
956
|
tenant_id (str):
|
|
957
957
|
The M365 tenant ID.
|
|
958
958
|
certificate_file (str):
|
|
959
|
-
|
|
959
|
+
The path to the certificate file.
|
|
960
960
|
certificate_password (int):
|
|
961
|
-
|
|
961
|
+
The password for the certificate.
|
|
962
962
|
sharepoint_url (str):
|
|
963
963
|
The SharePoint URL.
|
|
964
964
|
sharepoint_url_type (str):
|
|
@@ -968,11 +968,11 @@ class AVTS:
|
|
|
968
968
|
sharepoint_admin_url (str):
|
|
969
969
|
The SharePoint administration URL.
|
|
970
970
|
index_user_profiles (bool, optional):
|
|
971
|
-
|
|
971
|
+
Whether or not to index information from user profiles. Defaults to True.
|
|
972
972
|
oauth2_site_name (str, optional):
|
|
973
|
-
|
|
973
|
+
The value of the "OAuth2SiteName" repository parameter. Defaults to "AVTS".
|
|
974
974
|
oauth2_sites_file (str, optional):
|
|
975
|
-
|
|
975
|
+
The value of the "OAuth2SitesFile" repository parameter. Defaults to "".
|
|
976
976
|
|
|
977
977
|
Returns:
|
|
978
978
|
dict | None:
|
|
@@ -1440,7 +1440,7 @@ class AVTS:
|
|
|
1440
1440
|
|
|
1441
1441
|
Returns:
|
|
1442
1442
|
dict | None:
|
|
1443
|
-
|
|
1443
|
+
The repository data for the given name or None if no repository is found or in case of an error
|
|
1444
1444
|
|
|
1445
1445
|
"""
|
|
1446
1446
|
|
|
@@ -1459,7 +1459,7 @@ class AVTS:
|
|
|
1459
1459
|
def get_certificate_file_content_base64(self, filepath: str) -> str | None:
|
|
1460
1460
|
"""Return the certificate as a base64 string.
|
|
1461
1461
|
|
|
1462
|
-
In Kubernetes
|
|
1462
|
+
In Kubernetes deployments the certificate is already mounted base64 encoded.
|
|
1463
1463
|
|
|
1464
1464
|
Args:
|
|
1465
1465
|
filepath (str):
|
|
@@ -1512,7 +1512,7 @@ class AVTS:
|
|
|
1512
1512
|
# end method definition
|
|
1513
1513
|
|
|
1514
1514
|
def set_questions(self, questions: list) -> list | None:
|
|
1515
|
-
"""
|
|
1515
|
+
"""Set the list of proposed questions.
|
|
1516
1516
|
|
|
1517
1517
|
Args:
|
|
1518
1518
|
questions (list):
|
|
@@ -1520,7 +1520,7 @@ class AVTS:
|
|
|
1520
1520
|
|
|
1521
1521
|
Returns:
|
|
1522
1522
|
list | None:
|
|
1523
|
-
Parsed response object from the API
|
|
1523
|
+
Parsed response object from the API or None in case of an error.
|
|
1524
1524
|
|
|
1525
1525
|
"""
|
|
1526
1526
|
|
|
@@ -253,7 +253,7 @@ class CoreShare:
|
|
|
253
253
|
Data is sent as key-value pairs in the body of the request, similar to query parameters.
|
|
254
254
|
* multipart/form-data - Used for file uploads or when a form includes non-ASCII characters
|
|
255
255
|
|
|
256
|
-
|
|
256
|
+
Returns:
|
|
257
257
|
dict:
|
|
258
258
|
The request header values.
|
|
259
259
|
|
|
@@ -279,7 +279,7 @@ class CoreShare:
|
|
|
279
279
|
content_type (str, optional):
|
|
280
280
|
The content type for the request.
|
|
281
281
|
|
|
282
|
-
|
|
282
|
+
Returns:
|
|
283
283
|
dict:
|
|
284
284
|
The request header values.
|
|
285
285
|
|
|
@@ -316,7 +316,7 @@ class CoreShare:
|
|
|
316
316
|
user_credentials: bool = False,
|
|
317
317
|
verify: bool = True,
|
|
318
318
|
) -> dict | None:
|
|
319
|
-
"""Call
|
|
319
|
+
"""Call a Core Share REST API in a safe way.
|
|
320
320
|
|
|
321
321
|
Args:
|
|
322
322
|
url (str):
|
|
@@ -338,9 +338,8 @@ class CoreShare:
|
|
|
338
338
|
Whether or not an error should be logged in case of a failed REST call.
|
|
339
339
|
If False, then only a warning is logged. Defaults to True.
|
|
340
340
|
show_warning (bool, optional):
|
|
341
|
-
Whether or not
|
|
342
|
-
failed REST call.
|
|
343
|
-
If False, then only a warning is logged. Defaults to True.
|
|
341
|
+
Whether or not a warning should be logged in case of a
|
|
342
|
+
failed REST call (only used if show_error is False). Defaults to False.
|
|
344
343
|
warning_message (str, optional):
|
|
345
344
|
Specific warning message. Defaults to "". If not given the error_message will be used.
|
|
346
345
|
failure_message (str, optional):
|
|
@@ -363,7 +362,7 @@ class CoreShare:
|
|
|
363
362
|
|
|
364
363
|
Returns:
|
|
365
364
|
dict | None:
|
|
366
|
-
Response of
|
|
365
|
+
Response of the Core Share REST API or None in case of an error.
|
|
367
366
|
|
|
368
367
|
"""
|
|
369
368
|
|
|
@@ -519,7 +518,7 @@ class CoreShare:
|
|
|
519
518
|
|
|
520
519
|
Args:
|
|
521
520
|
response_object (object):
|
|
522
|
-
This is
|
|
521
|
+
This is the response object returned by the request call.
|
|
523
522
|
additional_error_message (str, optional):
|
|
524
523
|
Can be used to provide a more specific error message
|
|
525
524
|
in case an error occurs.
|
|
@@ -564,11 +563,11 @@ class CoreShare:
|
|
|
564
563
|
value: str,
|
|
565
564
|
return_key: str,
|
|
566
565
|
) -> str | None:
|
|
567
|
-
"""Lookup a property value based on a provided key / value pair in the response of
|
|
566
|
+
"""Lookup a property value based on a provided key / value pair in the response of a Core Share REST API call.
|
|
568
567
|
|
|
569
568
|
Args:
|
|
570
569
|
response (dict):
|
|
571
|
-
REST response from
|
|
570
|
+
REST response from a Core Share REST Call
|
|
572
571
|
key (str):
|
|
573
572
|
The property name (key).
|
|
574
573
|
value (str):
|
|
@@ -617,7 +616,7 @@ class CoreShare:
|
|
|
617
616
|
value (str):
|
|
618
617
|
The value to find in the item with the matching key.
|
|
619
618
|
results_marker (str, optional):
|
|
620
|
-
The name of the data structure for the results.
|
|
619
|
+
The name of the data structure for the results. Defaults to "results".
|
|
621
620
|
|
|
622
621
|
Returns:
|
|
623
622
|
bool:
|
|
@@ -710,12 +709,12 @@ class CoreShare:
|
|
|
710
709
|
|
|
711
710
|
Args:
|
|
712
711
|
revalidate (bool, optional):
|
|
713
|
-
Defines whether or not a re-
|
|
712
|
+
Defines whether or not a re-authentication is enforced
|
|
714
713
|
(e.g. if session has timed out with 401 error).
|
|
715
714
|
|
|
716
715
|
Returns:
|
|
717
716
|
str:
|
|
718
|
-
The access token. Also stores access token in self.
|
|
717
|
+
The access token. Also stores access token in self._access_token_admin.
|
|
719
718
|
None in case of error.
|
|
720
719
|
|
|
721
720
|
"""
|
|
@@ -796,14 +795,14 @@ class CoreShare:
|
|
|
796
795
|
|
|
797
796
|
Args:
|
|
798
797
|
revalidate (bool, optional):
|
|
799
|
-
Defines whether or not a re-
|
|
798
|
+
Defines whether or not a re-authentication is enforced
|
|
800
799
|
(e.g. if session has timed out with 401 error).
|
|
801
800
|
grant_type (str, optional):
|
|
802
|
-
Can either be "client_credentials"
|
|
801
|
+
Can either be "client_credentials" or "password". Defaults to "password".
|
|
803
802
|
|
|
804
803
|
Returns:
|
|
805
804
|
str:
|
|
806
|
-
The access token. Also stores access token in self.
|
|
805
|
+
The access token. Also stores access token in self._access_token_user.
|
|
807
806
|
None in case of error.
|
|
808
807
|
|
|
809
808
|
"""
|
|
@@ -944,8 +943,8 @@ class CoreShare:
|
|
|
944
943
|
Returning a generator avoids loading a large number of items into memory at once. Instead you
|
|
945
944
|
can iterate over the potential large list of Core Share groups.
|
|
946
945
|
|
|
947
|
-
Example
|
|
948
|
-
groups = core_share_object.get_groups_iterator(
|
|
946
|
+
Example:
|
|
947
|
+
groups = core_share_object.get_groups_iterator(count=10)
|
|
949
948
|
for group in groups:
|
|
950
949
|
logger.info("Traversing Core Share group -> %s", group["name"])
|
|
951
950
|
|
|
@@ -956,7 +955,7 @@ class CoreShare:
|
|
|
956
955
|
|
|
957
956
|
Returns:
|
|
958
957
|
iter:
|
|
959
|
-
A generator yielding one
|
|
958
|
+
A generator yielding one Core Share group per iteration.
|
|
960
959
|
If the REST API fails, returns no value.
|
|
961
960
|
|
|
962
961
|
"""
|
|
@@ -1005,7 +1004,7 @@ class CoreShare:
|
|
|
1005
1004
|
group_name: str,
|
|
1006
1005
|
description: str = "",
|
|
1007
1006
|
) -> dict | None:
|
|
1008
|
-
"""Add a new Core Share group. This requires a
|
|
1007
|
+
"""Add a new Core Share group. This requires a Tenant Admin authorization.
|
|
1009
1008
|
|
|
1010
1009
|
Args:
|
|
1011
1010
|
group_name (str):
|
|
@@ -1149,7 +1148,7 @@ class CoreShare:
|
|
|
1149
1148
|
|
|
1150
1149
|
Returns:
|
|
1151
1150
|
list | None:
|
|
1152
|
-
|
|
1151
|
+
List with the Core Share group membership or None if the request fails.
|
|
1153
1152
|
|
|
1154
1153
|
Example Response ('errors' is only output if success = False):
|
|
1155
1154
|
[
|
|
@@ -1240,7 +1239,7 @@ class CoreShare:
|
|
|
1240
1239
|
|
|
1241
1240
|
Returns:
|
|
1242
1241
|
list | None:
|
|
1243
|
-
|
|
1242
|
+
List with the Core Share group membership or None if the request fails.
|
|
1244
1243
|
|
|
1245
1244
|
Example Response ('errors' is only output if success = False):
|
|
1246
1245
|
[
|
|
@@ -1378,10 +1377,12 @@ class CoreShare:
|
|
|
1378
1377
|
"""Search Core Share group(s) using a query string.
|
|
1379
1378
|
|
|
1380
1379
|
Args:
|
|
1381
|
-
query_string(str):
|
|
1380
|
+
query_string (str):
|
|
1381
|
+
Query for the group name / property.
|
|
1382
1382
|
|
|
1383
1383
|
Returns:
|
|
1384
|
-
dict | None:
|
|
1384
|
+
dict | None:
|
|
1385
|
+
Dictionary with the Core Share group data or None if the request fails.
|
|
1385
1386
|
|
|
1386
1387
|
"""
|
|
1387
1388
|
|
|
@@ -1413,9 +1414,6 @@ class CoreShare:
|
|
|
1413
1414
|
def get_users(self) -> list | None:
|
|
1414
1415
|
"""Get Core Share users.
|
|
1415
1416
|
|
|
1416
|
-
Args:
|
|
1417
|
-
None
|
|
1418
|
-
|
|
1419
1417
|
Returns:
|
|
1420
1418
|
list | None:
|
|
1421
1419
|
List with the Core Share user data or None if the request fails.
|
|
@@ -1664,7 +1662,7 @@ class CoreShare:
|
|
|
1664
1662
|
|
|
1665
1663
|
"""
|
|
1666
1664
|
|
|
1667
|
-
# Search the users with this
|
|
1665
|
+
# Search the users with this email address (and hope this is unique ;-).
|
|
1668
1666
|
users = self.search_users(
|
|
1669
1667
|
query_string=email,
|
|
1670
1668
|
user_status=user_status,
|
|
@@ -1776,7 +1774,7 @@ class CoreShare:
|
|
|
1776
1774
|
title: str | None = None,
|
|
1777
1775
|
company: str | None = None,
|
|
1778
1776
|
) -> dict | None:
|
|
1779
|
-
"""Add a new Core Share user. This requires a
|
|
1777
|
+
"""Add a new Core Share user. This requires a Tenant Admin authorization.
|
|
1780
1778
|
|
|
1781
1779
|
Args:
|
|
1782
1780
|
first_name (str):
|
|
@@ -2094,7 +2092,7 @@ class CoreShare:
|
|
|
2094
2092
|
|
|
2095
2093
|
response = None
|
|
2096
2094
|
|
|
2097
|
-
# Admins don't have/need specific access roles. They are
|
|
2095
|
+
# Admins don't have/need specific access roles. They are controlled by isAdmin flag.
|
|
2098
2096
|
if is_admin is not None:
|
|
2099
2097
|
update_data = {}
|
|
2100
2098
|
update_data["isAdmin"] = is_admin
|
|
@@ -2514,7 +2512,7 @@ class CoreShare:
|
|
|
2514
2512
|
|
|
2515
2513
|
Returns:
|
|
2516
2514
|
dict | None:
|
|
2517
|
-
|
|
2515
|
+
Response of the REST call or None in case of an error.
|
|
2518
2516
|
|
|
2519
2517
|
"""
|
|
2520
2518
|
|
|
@@ -2604,7 +2602,7 @@ class CoreShare:
|
|
|
2604
2602
|
* Local resources - not shared
|
|
2605
2603
|
* Resources shared by the user
|
|
2606
2604
|
* Resources shared by other users or groups
|
|
2607
|
-
This method
|
|
2605
|
+
This method impersonates the user. Only the user can delete its folders.
|
|
2608
2606
|
The Core Share admin is not entitled to do this.
|
|
2609
2607
|
|
|
2610
2608
|
Args:
|
|
@@ -2634,7 +2632,7 @@ class CoreShare:
|
|
|
2634
2632
|
)
|
|
2635
2633
|
return True
|
|
2636
2634
|
|
|
2637
|
-
self.logger.info("
|
|
2635
|
+
self.logger.info("Impersonate as user -> %s to cleanup files...", user_login)
|
|
2638
2636
|
|
|
2639
2637
|
# Save admin credentials the class has been initialized with:
|
|
2640
2638
|
admin_credentials = self.credentials()
|
|
@@ -2713,7 +2711,7 @@ class CoreShare:
|
|
|
2713
2711
|
response = self.delete_document(item["id"])
|
|
2714
2712
|
else:
|
|
2715
2713
|
self.logger.error(
|
|
2716
|
-
"
|
|
2714
|
+
"Unsupported resource type -> '%s'! Cannot remove this item from Core Share.",
|
|
2717
2715
|
item["resourceType"],
|
|
2718
2716
|
)
|
|
2719
2717
|
response = None
|
|
@@ -2795,7 +2793,7 @@ class CoreShare:
|
|
|
2795
2793
|
group_id (str):
|
|
2796
2794
|
The Core Share group ID.
|
|
2797
2795
|
resource_id (str):
|
|
2798
|
-
The ID of the Core
|
|
2796
|
+
The ID of the Core Share folder.
|
|
2799
2797
|
|
|
2800
2798
|
Returns:
|
|
2801
2799
|
dict | None:
|
|
@@ -22,10 +22,12 @@ class Assoc:
|
|
|
22
22
|
"""Determine if a string is unicode escaped.
|
|
23
23
|
|
|
24
24
|
Args:
|
|
25
|
-
assoc_string (str):
|
|
25
|
+
assoc_string (str):
|
|
26
|
+
String with the Assoc data.
|
|
26
27
|
|
|
27
28
|
Returns:
|
|
28
|
-
bool:
|
|
29
|
+
bool:
|
|
30
|
+
True if the string contains unicode escape sequences, False otherwise.
|
|
29
31
|
|
|
30
32
|
"""
|
|
31
33
|
|
|
@@ -100,13 +102,15 @@ class Assoc:
|
|
|
100
102
|
|
|
101
103
|
@classmethod
|
|
102
104
|
def unescape_html(cls, assoc_string: str) -> str:
|
|
103
|
-
"""HTML unescape a
|
|
105
|
+
"""HTML unescape a string.
|
|
104
106
|
|
|
105
107
|
Args:
|
|
106
|
-
assoc_string (str):
|
|
108
|
+
assoc_string (str):
|
|
109
|
+
The string to unescape.
|
|
107
110
|
|
|
108
111
|
Returns:
|
|
109
|
-
str:
|
|
112
|
+
str:
|
|
113
|
+
The unescaped string.
|
|
110
114
|
|
|
111
115
|
"""
|
|
112
116
|
|
|
@@ -218,13 +222,13 @@ class Assoc:
|
|
|
218
222
|
input_string (str):
|
|
219
223
|
Input string to search the delimited substring in.
|
|
220
224
|
start_sequence (str):
|
|
221
|
-
Start
|
|
225
|
+
Start sequence of characters.
|
|
222
226
|
stop_sequence (str):
|
|
223
|
-
Stop sequence of characters
|
|
227
|
+
Stop sequence of characters.
|
|
224
228
|
|
|
225
229
|
Returns:
|
|
226
230
|
str | None:
|
|
227
|
-
The
|
|
231
|
+
The delimited substring (including start and stop sequence) or None if not found.
|
|
228
232
|
|
|
229
233
|
"""
|
|
230
234
|
|
|
@@ -245,14 +249,14 @@ class Assoc:
|
|
|
245
249
|
def extract_assoc_string(cls, input_string: str, is_escaped: bool = False) -> str:
|
|
246
250
|
"""Extract an Assoc from a string.
|
|
247
251
|
|
|
248
|
-
The assoc is
|
|
252
|
+
The assoc is delimited by A< ... >.
|
|
249
253
|
|
|
250
254
|
Args:
|
|
251
255
|
input_string (str):
|
|
252
256
|
Input string that includes the Assoc as a substring.
|
|
253
257
|
is_escaped (bool, optional):
|
|
254
258
|
Whether or not the input string includes the
|
|
255
|
-
assoc escaped or not.
|
|
259
|
+
assoc escaped or not. Defaults to False.
|
|
256
260
|
|
|
257
261
|
Returns:
|
|
258
262
|
str:
|