pyPreservica 3.0.0__py3-none-any.whl → 3.0.1__py3-none-any.whl
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.
- pyPreservica/__init__.py +1 -1
- pyPreservica/common.py +2 -2
- pyPreservica/contentAPI.py +4 -3
- pyPreservica/entityAPI.py +10 -10
- pyPreservica/mdformsAPI.py +3 -2
- pyPreservica/parAPI.py +1 -37
- pyPreservica/retentionAPI.py +3 -2
- pyPreservica/workflowAPI.py +2 -2
- {pyPreservica-3.0.0.dist-info → pyPreservica-3.0.1.dist-info}/METADATA +1 -1
- pyPreservica-3.0.1.dist-info/RECORD +19 -0
- pyPreservica-3.0.0.dist-info/RECORD +0 -19
- {pyPreservica-3.0.0.dist-info → pyPreservica-3.0.1.dist-info}/LICENSE.txt +0 -0
- {pyPreservica-3.0.0.dist-info → pyPreservica-3.0.1.dist-info}/WHEEL +0 -0
- {pyPreservica-3.0.0.dist-info → pyPreservica-3.0.1.dist-info}/top_level.txt +0 -0
pyPreservica/__init__.py
CHANGED
|
@@ -23,6 +23,6 @@ from .mdformsAPI import MetadataGroupsAPI, Group, GroupField, GroupFieldType
|
|
|
23
23
|
__author__ = "James Carr (drjamescarr@gmail.com)"
|
|
24
24
|
|
|
25
25
|
# Version of the pyPreservica package
|
|
26
|
-
__version__ = "3.0.
|
|
26
|
+
__version__ = "3.0.1"
|
|
27
27
|
|
|
28
28
|
__license__ = "Apache License Version 2.0"
|
pyPreservica/common.py
CHANGED
|
@@ -880,10 +880,10 @@ class AuthenticatedAPI:
|
|
|
880
880
|
|
|
881
881
|
def __init__(self, username: str = None, password: str = None, tenant: str = None, server: str = None,
|
|
882
882
|
use_shared_secret: bool = False, two_fa_secret_key: str = None,
|
|
883
|
-
protocol: str = "https", request_hook=None):
|
|
883
|
+
protocol: str = "https", request_hook=None, credentials_path: str = 'credentials.properties'):
|
|
884
884
|
|
|
885
885
|
config = configparser.ConfigParser(interpolation=configparser.Interpolation())
|
|
886
|
-
config.read(
|
|
886
|
+
config.read(os.path.relpath(credentials_path), encoding='utf-8')
|
|
887
887
|
self.session: Session = requests.Session()
|
|
888
888
|
|
|
889
889
|
if request_hook is not None:
|
pyPreservica/contentAPI.py
CHANGED
|
@@ -35,11 +35,12 @@ class Field:
|
|
|
35
35
|
|
|
36
36
|
class ContentAPI(AuthenticatedAPI):
|
|
37
37
|
|
|
38
|
-
def __init__(self, username=None, password=None, tenant=None, server=None,
|
|
39
|
-
|
|
38
|
+
def __init__(self, username: str = None, password: str = None, tenant: str = None, server: str = None,
|
|
39
|
+
use_shared_secret: bool = False, two_fa_secret_key: str = None,
|
|
40
|
+
protocol: str = "https", request_hook: Callable = None, credentials_path: str = 'credentials.properties'):
|
|
40
41
|
|
|
41
42
|
super().__init__(username, password, tenant, server, use_shared_secret, two_fa_secret_key,
|
|
42
|
-
protocol, request_hook)
|
|
43
|
+
protocol, request_hook, credentials_path)
|
|
43
44
|
self.callback = None
|
|
44
45
|
|
|
45
46
|
class SearchResult:
|
pyPreservica/entityAPI.py
CHANGED
|
@@ -35,10 +35,10 @@ class EntityAPI(AuthenticatedAPI):
|
|
|
35
35
|
|
|
36
36
|
def __init__(self, username: str = None, password: str = None, tenant: str = None, server: str = None,
|
|
37
37
|
use_shared_secret: bool = False, two_fa_secret_key: str = None,
|
|
38
|
-
protocol: str = "https", request_hook: Callable = None):
|
|
38
|
+
protocol: str = "https", request_hook: Callable = None, credentials_path: str = 'credentials.properties'):
|
|
39
39
|
|
|
40
40
|
super().__init__(username, password, tenant, server, use_shared_secret, two_fa_secret_key,
|
|
41
|
-
protocol, request_hook)
|
|
41
|
+
protocol, request_hook, credentials_path)
|
|
42
42
|
|
|
43
43
|
xml.etree.ElementTree.register_namespace("oai_dc", "http://www.openarchives.org/OAI/2.0/oai_dc/")
|
|
44
44
|
xml.etree.ElementTree.register_namespace("ead", "urn:isbn:1-931666-22-9")
|
|
@@ -2281,7 +2281,7 @@ class EntityAPI(AuthenticatedAPI):
|
|
|
2281
2281
|
logger.error(exception)
|
|
2282
2282
|
raise exception
|
|
2283
2283
|
|
|
2284
|
-
def delete_asset(self, asset: Asset, operator_comment: str, supervisor_comment: str):
|
|
2284
|
+
def delete_asset(self, asset: Asset, operator_comment: str, supervisor_comment: str, credentials_path: str = "credentials.properties"):
|
|
2285
2285
|
"""
|
|
2286
2286
|
Delete an asset from the repository
|
|
2287
2287
|
|
|
@@ -2290,11 +2290,11 @@ class EntityAPI(AuthenticatedAPI):
|
|
|
2290
2290
|
:param supervisor_comment: The supervisor comment on the deletion
|
|
2291
2291
|
"""
|
|
2292
2292
|
if isinstance(asset, Asset):
|
|
2293
|
-
return self._delete_entity(asset, operator_comment, supervisor_comment)
|
|
2293
|
+
return self._delete_entity(asset, operator_comment, supervisor_comment, credentials_path)
|
|
2294
2294
|
else:
|
|
2295
2295
|
raise RuntimeError("delete_asset only deletes assets")
|
|
2296
2296
|
|
|
2297
|
-
def delete_folder(self, folder: Folder, operator_comment: str, supervisor_comment: str):
|
|
2297
|
+
def delete_folder(self, folder: Folder, operator_comment: str, supervisor_comment: str, credentials_path: str = "credentials.properties"):
|
|
2298
2298
|
"""
|
|
2299
2299
|
Delete an asset from the repository
|
|
2300
2300
|
|
|
@@ -2304,11 +2304,11 @@ class EntityAPI(AuthenticatedAPI):
|
|
|
2304
2304
|
:param supervisor_comment: The supervisor comment on the deletion
|
|
2305
2305
|
"""
|
|
2306
2306
|
if isinstance(folder, Folder):
|
|
2307
|
-
return self._delete_entity(folder, operator_comment, supervisor_comment)
|
|
2307
|
+
return self._delete_entity(folder, operator_comment, supervisor_comment, credentials_path)
|
|
2308
2308
|
else:
|
|
2309
2309
|
raise RuntimeError("delete_folder only deletes folders")
|
|
2310
2310
|
|
|
2311
|
-
def _delete_entity(self, entity: Entity, operator_comment: str, supervisor_comment: str):
|
|
2311
|
+
def _delete_entity(self, entity: Entity, operator_comment: str, supervisor_comment: str, credentials_path: str = "credentials.properties"):
|
|
2312
2312
|
"""
|
|
2313
2313
|
Delete an asset from the repository
|
|
2314
2314
|
|
|
@@ -2319,7 +2319,7 @@ class EntityAPI(AuthenticatedAPI):
|
|
|
2319
2319
|
|
|
2320
2320
|
# check manager password is available:
|
|
2321
2321
|
config = configparser.ConfigParser()
|
|
2322
|
-
config.read(
|
|
2322
|
+
config.read(credentials_path, encoding='utf-8')
|
|
2323
2323
|
try:
|
|
2324
2324
|
manager_username = config['credentials']['manager.username']
|
|
2325
2325
|
manager_password = config['credentials']['manager.password']
|
|
@@ -2373,7 +2373,7 @@ class EntityAPI(AuthenticatedAPI):
|
|
|
2373
2373
|
headers=headers)
|
|
2374
2374
|
elif request.status_code == requests.codes.unauthorized:
|
|
2375
2375
|
self.token = self.__token__()
|
|
2376
|
-
return self._delete_entity(entity, operator_comment, supervisor_comment)
|
|
2376
|
+
return self._delete_entity(entity, operator_comment, supervisor_comment, credentials_path)
|
|
2377
2377
|
if request.status_code == requests.codes.unprocessable:
|
|
2378
2378
|
logger.error(request.content.decode('utf-8'))
|
|
2379
2379
|
raise RuntimeError(request.status_code, "no active workflow context for full deletion exists in the system")
|
|
@@ -2385,4 +2385,4 @@ class EntityAPI(AuthenticatedAPI):
|
|
|
2385
2385
|
exception = HTTPException(entity.reference, request.status_code, request.url,
|
|
2386
2386
|
"_delete_entity", request.content.decode('utf-8'))
|
|
2387
2387
|
logger.error(exception)
|
|
2388
|
-
raise exception
|
|
2388
|
+
raise exception
|
pyPreservica/mdformsAPI.py
CHANGED
|
@@ -134,12 +134,13 @@ def _json_from_object_(group: Group) -> dict:
|
|
|
134
134
|
|
|
135
135
|
|
|
136
136
|
class MetadataGroupsAPI(AuthenticatedAPI):
|
|
137
|
+
|
|
137
138
|
def __init__(self, username: str = None, password: str = None, tenant: str = None, server: str = None,
|
|
138
139
|
use_shared_secret: bool = False, two_fa_secret_key: str = None,
|
|
139
|
-
protocol: str = "https", request_hook: Callable = None):
|
|
140
|
+
protocol: str = "https", request_hook: Callable = None, credentials_path: str = 'credentials.properties'):
|
|
140
141
|
|
|
141
142
|
super().__init__(username, password, tenant, server, use_shared_secret, two_fa_secret_key,
|
|
142
|
-
protocol, request_hook)
|
|
143
|
+
protocol, request_hook, credentials_path)
|
|
143
144
|
|
|
144
145
|
xml.etree.ElementTree.register_namespace("oai_dc", "http://www.openarchives.org/OAI/2.0/oai_dc/")
|
|
145
146
|
xml.etree.ElementTree.register_namespace("ead", "urn:isbn:1-931666-22-9")
|
pyPreservica/parAPI.py
CHANGED
|
@@ -23,43 +23,7 @@ def __get_contents__(document) -> AnyStr:
|
|
|
23
23
|
return json.dumps(json.loads(document))
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
class PreservationActionRegistry:
|
|
27
|
-
|
|
28
|
-
def __init__(self, server: str = None, username: str = None, password: str = None, protocol: str = 'https'):
|
|
29
|
-
self.protocol = protocol
|
|
30
|
-
self.session = requests.Session()
|
|
31
|
-
self.session.headers.update({'accept': 'application/json;charset=UTF-8'})
|
|
32
|
-
config = configparser.ConfigParser()
|
|
33
|
-
config.read('credentials.properties')
|
|
34
|
-
if not server:
|
|
35
|
-
server = os.environ.get('PRESERVICA_SERVER')
|
|
36
|
-
if server is None:
|
|
37
|
-
try:
|
|
38
|
-
server = config['credentials']['server']
|
|
39
|
-
except KeyError:
|
|
40
|
-
pass
|
|
41
|
-
if not server:
|
|
42
|
-
msg = "No valid server found in method arguments, environment variables or credentials.properties file"
|
|
43
|
-
logger.error(msg)
|
|
44
|
-
raise RuntimeError(msg)
|
|
45
|
-
else:
|
|
46
|
-
self.server = server
|
|
47
|
-
if not username:
|
|
48
|
-
username = os.environ.get('PRESERVICA_USERNAME')
|
|
49
|
-
if username is None:
|
|
50
|
-
try:
|
|
51
|
-
username = config['credentials']['username']
|
|
52
|
-
except KeyError:
|
|
53
|
-
pass
|
|
54
|
-
self.username = username
|
|
55
|
-
if not password:
|
|
56
|
-
password = os.environ.get('PRESERVICA_PASSWORD')
|
|
57
|
-
if password is None:
|
|
58
|
-
try:
|
|
59
|
-
password = config['credentials']['password']
|
|
60
|
-
except KeyError:
|
|
61
|
-
pass
|
|
62
|
-
self.password = password
|
|
26
|
+
class PreservationActionRegistry(AuthenticatedAPI):
|
|
63
27
|
|
|
64
28
|
def format_family(self, guid: str) -> str:
|
|
65
29
|
return self.__guid__(guid, "format-families")
|
pyPreservica/retentionAPI.py
CHANGED
|
@@ -58,9 +58,10 @@ class RetentionPolicy:
|
|
|
58
58
|
class RetentionAPI(AuthenticatedAPI):
|
|
59
59
|
|
|
60
60
|
def __init__(self, username=None, password=None, tenant=None, server=None, use_shared_secret=False,
|
|
61
|
-
two_fa_secret_key: str = None, protocol: str = "https", request_hook: Callable = None):
|
|
61
|
+
two_fa_secret_key: str = None, protocol: str = "https", request_hook: Callable = None, credentials_path: str = 'credentials.properties'):
|
|
62
62
|
super().__init__(username, password, tenant, server, use_shared_secret, two_fa_secret_key,
|
|
63
|
-
protocol, request_hook)
|
|
63
|
+
protocol, request_hook, credentials_path)
|
|
64
|
+
|
|
64
65
|
if self.major_version < 7 and self.minor_version < 2:
|
|
65
66
|
raise RuntimeError("Retention API is only available when connected to a v6.2 System")
|
|
66
67
|
|
pyPreservica/workflowAPI.py
CHANGED
|
@@ -81,10 +81,10 @@ class WorkflowAPI(AuthenticatedAPI):
|
|
|
81
81
|
|
|
82
82
|
def __init__(self, username: str = None, password: str = None, tenant: str = None, server: str = None,
|
|
83
83
|
use_shared_secret: bool = False, two_fa_secret_key: str = None,
|
|
84
|
-
protocol: str = "https", request_hook: Callable = None):
|
|
84
|
+
protocol: str = "https", request_hook: Callable = None, credentials_path: str = 'credentials.properties'):
|
|
85
85
|
|
|
86
86
|
super().__init__(username, password, tenant, server, use_shared_secret, two_fa_secret_key,
|
|
87
|
-
protocol, request_hook)
|
|
87
|
+
protocol, request_hook, credentials_path)
|
|
88
88
|
self.base_url = "sdb/rest/workflow"
|
|
89
89
|
|
|
90
90
|
def get_workflow_contexts_by_type(self, workflow_type: str):
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
pyPreservica/__init__.py,sha256=6lYm_cDE5Z9aKXe_UfgNabaGq1MoIDPWUb16GgDGeS0,1177
|
|
2
|
+
pyPreservica/adminAPI.py,sha256=511bc5KtrCAXbDyBk39dmDnxUVDaOu6xaiyu0jYhxa4,37781
|
|
3
|
+
pyPreservica/authorityAPI.py,sha256=Eule8g6LXr8c8SFcJgpRah4lH1FgevUItO5HhHDEaZE,9172
|
|
4
|
+
pyPreservica/common.py,sha256=YvONehtYu2StoPY2oydWy86-zsyIK-r2FD79TnLi01Q,37707
|
|
5
|
+
pyPreservica/contentAPI.py,sha256=z_IwndqzpTMtsDKUgneqWec5YPhi2Yb110Z-4tC42qU,22182
|
|
6
|
+
pyPreservica/entityAPI.py,sha256=ljqiN2EjF20xprjrXjcb8OACtrgKn2K0Kl11uqh7uQU,119261
|
|
7
|
+
pyPreservica/mdformsAPI.py,sha256=cTHxHgPV-EZAFN6C1JfnxrVNv3FLzqI1SV_fb5ZOxeE,19196
|
|
8
|
+
pyPreservica/monitorAPI.py,sha256=HD-PUPdSI9wGAa07e2_2_-FLINH8PoWUwpFogz7F-j4,6269
|
|
9
|
+
pyPreservica/opex.py,sha256=ccra1S4ojUXS3PlbU8WfxajOkJrwG4OykBnNrYP_jus,4875
|
|
10
|
+
pyPreservica/parAPI.py,sha256=f0ZUxLd0U-BW6kBx5K7W2Pv7NjG3MkTNydmxQ3U1ZVE,9296
|
|
11
|
+
pyPreservica/retentionAPI.py,sha256=F6okFSyqtnLhfMbcyChd_5V-D_PAxNLwyx8XohH2DEM,24840
|
|
12
|
+
pyPreservica/uploadAPI.py,sha256=vIji6AUajiSvA2wuemHvU6RqHFd7PlKQToypIGx3KMw,98537
|
|
13
|
+
pyPreservica/webHooksAPI.py,sha256=_K3KUOsmwYf8qMa-mD47sAmNUW7Pzb9oKVpS0VoSbC0,6827
|
|
14
|
+
pyPreservica/workflowAPI.py,sha256=OcOiiUdrQerbPllrkj1lWpmuW0jTuyyV0urwPSYcd_U,17561
|
|
15
|
+
pyPreservica-3.0.1.dist-info/LICENSE.txt,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
|
|
16
|
+
pyPreservica-3.0.1.dist-info/METADATA,sha256=SKMkfDkZMetZdqGhV_lxqqDT8meV1mJwTXLpzuSNWN8,2779
|
|
17
|
+
pyPreservica-3.0.1.dist-info/WHEEL,sha256=YiKiUUeZQGmGJoR_0N1Y933DOBowq4AIvDe2-UIy8E4,91
|
|
18
|
+
pyPreservica-3.0.1.dist-info/top_level.txt,sha256=iIBh6NAznYQHOV8mv_y_kGKSDITek9rANyFDwJsbU-c,13
|
|
19
|
+
pyPreservica-3.0.1.dist-info/RECORD,,
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
pyPreservica/__init__.py,sha256=vDFtG_Ab8Iug4T0dwuqr4xAthdsVkzUEZW71WyCIbYU,1177
|
|
2
|
-
pyPreservica/adminAPI.py,sha256=511bc5KtrCAXbDyBk39dmDnxUVDaOu6xaiyu0jYhxa4,37781
|
|
3
|
-
pyPreservica/authorityAPI.py,sha256=Eule8g6LXr8c8SFcJgpRah4lH1FgevUItO5HhHDEaZE,9172
|
|
4
|
-
pyPreservica/common.py,sha256=qVmH5xazlxX02pZaYAX1GT-k0fDuzF8JmEIrYBGiTtw,37648
|
|
5
|
-
pyPreservica/contentAPI.py,sha256=6L7z5KZZDuBBLTm9GQ9RLOhugAawPnuQIgv1NZf0vIU,22060
|
|
6
|
-
pyPreservica/entityAPI.py,sha256=BxrJ-irL0-ohZGVd5uduvFgDgMvrB3Xf2pzTaZ00-Cg,118999
|
|
7
|
-
pyPreservica/mdformsAPI.py,sha256=v_PKjddWHr2-Lo3zqHXikupq4PJvyrwZEEhPHeKDdGY,19126
|
|
8
|
-
pyPreservica/monitorAPI.py,sha256=HD-PUPdSI9wGAa07e2_2_-FLINH8PoWUwpFogz7F-j4,6269
|
|
9
|
-
pyPreservica/opex.py,sha256=ccra1S4ojUXS3PlbU8WfxajOkJrwG4OykBnNrYP_jus,4875
|
|
10
|
-
pyPreservica/parAPI.py,sha256=bgaQvYfWNnzdD7ibKMV3ZV85pNkEdSoLsgVigoiFFfw,10771
|
|
11
|
-
pyPreservica/retentionAPI.py,sha256=31yKHbatxj9kt5vbqyTeg98nrMotd2iL4jsiNhcOLg4,24770
|
|
12
|
-
pyPreservica/uploadAPI.py,sha256=vIji6AUajiSvA2wuemHvU6RqHFd7PlKQToypIGx3KMw,98537
|
|
13
|
-
pyPreservica/webHooksAPI.py,sha256=_K3KUOsmwYf8qMa-mD47sAmNUW7Pzb9oKVpS0VoSbC0,6827
|
|
14
|
-
pyPreservica/workflowAPI.py,sha256=wDDR5_CsJ3dhX79E5mJaziAtgYb830J0ZpNJppzgvqk,17493
|
|
15
|
-
pyPreservica-3.0.0.dist-info/LICENSE.txt,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
|
|
16
|
-
pyPreservica-3.0.0.dist-info/METADATA,sha256=DUaranYq6jZdAEKSCcbHQ255Cc17jJd4se5E6IDsiGk,2779
|
|
17
|
-
pyPreservica-3.0.0.dist-info/WHEEL,sha256=YiKiUUeZQGmGJoR_0N1Y933DOBowq4AIvDe2-UIy8E4,91
|
|
18
|
-
pyPreservica-3.0.0.dist-info/top_level.txt,sha256=iIBh6NAznYQHOV8mv_y_kGKSDITek9rANyFDwJsbU-c,13
|
|
19
|
-
pyPreservica-3.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|