folio-migration-tools 1.9.9__py3-none-any.whl → 1.10.0__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.
- folio_migration_tools/__init__.py +3 -4
- folio_migration_tools/__main__.py +53 -31
- folio_migration_tools/circulation_helper.py +118 -108
- folio_migration_tools/custom_dict.py +2 -2
- folio_migration_tools/custom_exceptions.py +4 -5
- folio_migration_tools/folder_structure.py +17 -7
- folio_migration_tools/helper.py +8 -7
- folio_migration_tools/holdings_helper.py +4 -3
- folio_migration_tools/i18n_cache.py +79 -0
- folio_migration_tools/library_configuration.py +77 -37
- folio_migration_tools/mapper_base.py +45 -31
- folio_migration_tools/mapping_file_transformation/courses_mapper.py +1 -1
- folio_migration_tools/mapping_file_transformation/holdings_mapper.py +7 -3
- folio_migration_tools/mapping_file_transformation/item_mapper.py +13 -26
- folio_migration_tools/mapping_file_transformation/manual_fee_fines_mapper.py +1 -2
- folio_migration_tools/mapping_file_transformation/mapping_file_mapper_base.py +13 -11
- folio_migration_tools/mapping_file_transformation/order_mapper.py +23 -5
- folio_migration_tools/mapping_file_transformation/organization_mapper.py +3 -3
- folio_migration_tools/mapping_file_transformation/ref_data_mapping.py +3 -0
- folio_migration_tools/mapping_file_transformation/user_mapper.py +47 -28
- folio_migration_tools/marc_rules_transformation/conditions.py +82 -97
- folio_migration_tools/marc_rules_transformation/holdings_statementsparser.py +13 -5
- folio_migration_tools/marc_rules_transformation/hrid_handler.py +3 -2
- folio_migration_tools/marc_rules_transformation/marc_file_processor.py +26 -24
- folio_migration_tools/marc_rules_transformation/rules_mapper_base.py +56 -51
- folio_migration_tools/marc_rules_transformation/rules_mapper_bibs.py +28 -17
- folio_migration_tools/marc_rules_transformation/rules_mapper_holdings.py +68 -37
- folio_migration_tools/migration_report.py +18 -7
- folio_migration_tools/migration_tasks/batch_poster.py +285 -354
- folio_migration_tools/migration_tasks/bibs_transformer.py +14 -9
- folio_migration_tools/migration_tasks/courses_migrator.py +2 -3
- folio_migration_tools/migration_tasks/holdings_csv_transformer.py +23 -24
- folio_migration_tools/migration_tasks/holdings_marc_transformer.py +14 -24
- folio_migration_tools/migration_tasks/items_transformer.py +23 -34
- folio_migration_tools/migration_tasks/loans_migrator.py +67 -144
- folio_migration_tools/migration_tasks/manual_fee_fines_transformer.py +3 -3
- folio_migration_tools/migration_tasks/migration_task_base.py +43 -52
- folio_migration_tools/migration_tasks/orders_transformer.py +25 -41
- folio_migration_tools/migration_tasks/organization_transformer.py +9 -18
- folio_migration_tools/migration_tasks/requests_migrator.py +21 -24
- folio_migration_tools/migration_tasks/reserves_migrator.py +6 -5
- folio_migration_tools/migration_tasks/user_transformer.py +25 -20
- folio_migration_tools/task_configuration.py +6 -7
- folio_migration_tools/transaction_migration/legacy_loan.py +15 -27
- folio_migration_tools/transaction_migration/legacy_request.py +1 -1
- folio_migration_tools/translations/en.json +3 -8
- {folio_migration_tools-1.9.9.dist-info → folio_migration_tools-1.10.0.dist-info}/METADATA +19 -28
- folio_migration_tools-1.10.0.dist-info/RECORD +63 -0
- folio_migration_tools-1.10.0.dist-info/WHEEL +4 -0
- folio_migration_tools-1.10.0.dist-info/entry_points.txt +3 -0
- folio_migration_tools/marc_rules_transformation/rules_mapper_authorities.py +0 -241
- folio_migration_tools/migration_tasks/authority_transformer.py +0 -119
- folio_migration_tools/test_infrastructure/__init__.py +0 -0
- folio_migration_tools/test_infrastructure/mocked_classes.py +0 -406
- folio_migration_tools-1.9.9.dist-info/RECORD +0 -67
- folio_migration_tools-1.9.9.dist-info/WHEEL +0 -4
- folio_migration_tools-1.9.9.dist-info/entry_points.txt +0 -3
- folio_migration_tools-1.9.9.dist-info/licenses/LICENSE +0 -21
|
@@ -1,406 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
import logging
|
|
3
|
-
import uuid
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from unittest.mock import MagicMock
|
|
6
|
-
from unittest.mock import Mock
|
|
7
|
-
|
|
8
|
-
from folioclient import FolioClient
|
|
9
|
-
|
|
10
|
-
from folio_migration_tools.extradata_writer import ExtradataWriter
|
|
11
|
-
from folio_migration_tools.mapping_file_transformation.holdings_mapper import (
|
|
12
|
-
HoldingsMapper,
|
|
13
|
-
)
|
|
14
|
-
from folio_migration_tools.migration_report import MigrationReport
|
|
15
|
-
from folio_migration_tools.library_configuration import (
|
|
16
|
-
LibraryConfiguration,
|
|
17
|
-
FolioRelease,
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def mocked_holdings_mapper() -> Mock:
|
|
22
|
-
mock_mapper = Mock(spec=HoldingsMapper)
|
|
23
|
-
mock_mapper.migration_report = MigrationReport()
|
|
24
|
-
mock_mapper.extradata_writer = ExtradataWriter(Path(""))
|
|
25
|
-
|
|
26
|
-
return mock_mapper
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def mocked_folio_client() -> FolioClient:
|
|
30
|
-
try:
|
|
31
|
-
FolioClient.login = MagicMock(name="login", return_value=None)
|
|
32
|
-
FolioClient.okapi_token = "token" # noqa:S105
|
|
33
|
-
mocked_folio = FolioClient("okapi_url", "tenant_id", "username", "password")
|
|
34
|
-
mocked_folio.folio_get_single_object = folio_get_single_object_mocked
|
|
35
|
-
mocked_folio.folio_get_all = folio_get_all_mocked
|
|
36
|
-
mocked_folio.get_from_github = folio_get_from_github
|
|
37
|
-
mocked_folio.current_user = str(uuid.uuid4())
|
|
38
|
-
return mocked_folio
|
|
39
|
-
except Exception as ee:
|
|
40
|
-
logging.error(ee)
|
|
41
|
-
raise ee
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def folio_get_all_mocked(ref_data_path, array_name, query="", limit=10):
|
|
45
|
-
with open("./static/reference_data.json", "r") as super_schema_file:
|
|
46
|
-
super_schema = json.load(super_schema_file)
|
|
47
|
-
if ref_data_path == "/coursereserves/terms":
|
|
48
|
-
yield from [
|
|
49
|
-
{"name": "Fall 2022", "id": "42093be3-d1e7-4bb6-b2b9-18e153d109b2"},
|
|
50
|
-
{"name": "Summer 2022", "id": "415b14a8-c94c-4aa1-a0a8-d397efae343e"},
|
|
51
|
-
]
|
|
52
|
-
elif ref_data_path == "/coursereserves/departments":
|
|
53
|
-
yield from [
|
|
54
|
-
{
|
|
55
|
-
"id": "7532e5ab-9812-496c-ab77-4fbb6a7e5dbf",
|
|
56
|
-
"name": "Department_t",
|
|
57
|
-
"description": "Art & Art History",
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"id": "af7ae6be-c0b2-444d-b76f-4061098d17cd",
|
|
61
|
-
"name": "Department_FALLBACK",
|
|
62
|
-
"description": "FALLBACK",
|
|
63
|
-
},
|
|
64
|
-
]
|
|
65
|
-
elif ref_data_path == "/organizations-storage/categories":
|
|
66
|
-
yield from [
|
|
67
|
-
{"id": "c78640d5-a1ec-4721-9a1f-c6f876d4c179", "value": "Returns"},
|
|
68
|
-
{"id": "604c2c9d-ed3a-46cd-bec4-69926c303b22", "value": "Sales"},
|
|
69
|
-
{"id": "c5b175bd-34a0-4a4d-9bd9-8eddae8e67f8", "value": "General"},
|
|
70
|
-
{"id": "97dcb23df-1aba-444e-b88d-804d17c715a5", "value": "Technical Support"},
|
|
71
|
-
{"id": "e193b0d1-4674-4a9e-818b-375f013d963f", "value": "Moral Support"},
|
|
72
|
-
]
|
|
73
|
-
|
|
74
|
-
elif ref_data_path == "/organizations-storage/organization-types":
|
|
75
|
-
yield from [
|
|
76
|
-
{"id": "837d04b6-d81c-4c49-9efd-2f62515999b3", "name": "Consortium"},
|
|
77
|
-
{"id": "fc54327d-fd60-4f6a-ba37-a4375511b91b", "name": "Unspecified"},
|
|
78
|
-
]
|
|
79
|
-
elif (
|
|
80
|
-
ref_data_path == "/organizations-storage/organizations"
|
|
81
|
-
and query == '?query=(code=="EBSCO")'
|
|
82
|
-
):
|
|
83
|
-
yield from [{"id": "some id", "code": "some code", "name": "EBSCO Information Services"}]
|
|
84
|
-
|
|
85
|
-
elif (
|
|
86
|
-
ref_data_path == "/organizations-storage/organizations"
|
|
87
|
-
and query == '?query=(code=="LisasAwesomeStartup")'
|
|
88
|
-
):
|
|
89
|
-
yield from []
|
|
90
|
-
|
|
91
|
-
elif ref_data_path == "/organizations-storage/organizations":
|
|
92
|
-
yield from [
|
|
93
|
-
{"id": "837d04b6-d81c-4c49-9efd-2f62515999b3", "code": "GOBI"},
|
|
94
|
-
{"id": "fc54327d-fd60-4f6a-ba37-a4375511b91b", "code": "EBSCO"},
|
|
95
|
-
]
|
|
96
|
-
|
|
97
|
-
elif ref_data_path == "/orders/acquisition-methods":
|
|
98
|
-
yield from [
|
|
99
|
-
{"id": "837d04b6-d81c-4c49-9efd-2f62515999b3", "value": "Purchase"},
|
|
100
|
-
{"id": "fc54327d-fd60-4f6a-ba37-a4375511b91b", "value": "Theft"},
|
|
101
|
-
{"id": "fc54327d-fd60-4f6a-ba37-a437551sarfs91b", "value": "Other"},
|
|
102
|
-
]
|
|
103
|
-
|
|
104
|
-
elif ref_data_path == "/groups":
|
|
105
|
-
yield from [
|
|
106
|
-
{
|
|
107
|
-
"group": "FOLIO fallback group name",
|
|
108
|
-
"desc": "Mocked response",
|
|
109
|
-
"id": "27ab99d3-0e17-41f0-a20a-99e05acc0e6f",
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
"group": "FOLIO group name",
|
|
113
|
-
"desc": "Mocked response",
|
|
114
|
-
"id": "5fc96cbd-a860-42a7-8d2b-72af30206712",
|
|
115
|
-
},
|
|
116
|
-
]
|
|
117
|
-
elif ref_data_path == "/departments":
|
|
118
|
-
yield from [
|
|
119
|
-
{
|
|
120
|
-
"id": "12a2ad12-951d-4124-9fb2-58c70f0b7f71",
|
|
121
|
-
"name": "FOLIO user department name",
|
|
122
|
-
"code": "fdp",
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
"id": "12a2ad12-951d-4124-9fb2-58c70f0b7f72",
|
|
126
|
-
"name": "FOLIO user department name 2",
|
|
127
|
-
"code": "fdp2",
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"id": "2f452d21-507d-4b32-a89d-8ea9753cc946",
|
|
131
|
-
"name": "FOLIO fallback user department name",
|
|
132
|
-
"code": "fb",
|
|
133
|
-
},
|
|
134
|
-
]
|
|
135
|
-
elif ref_data_path == "/owners":
|
|
136
|
-
yield from [
|
|
137
|
-
{
|
|
138
|
-
"owner": "The Best Fee Fine Owner",
|
|
139
|
-
"desc": "She really is!",
|
|
140
|
-
"servicePointOwner": [
|
|
141
|
-
{"value": "a77b55e7-f9f3-40a1-83e0-241bc606a826", "label": "lisatest"}
|
|
142
|
-
],
|
|
143
|
-
"id": "5abfff3f-50eb-432a-9a43-21f8f7a70194",
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
"owner": "The Other Fee Fine Owner",
|
|
147
|
-
"desc": "heeey",
|
|
148
|
-
"servicePointOwner": [
|
|
149
|
-
{"value": "1543c345-dcaf-4367-84a8-853d95837a3b", "label": "lisatest2 :) <3 "}
|
|
150
|
-
],
|
|
151
|
-
"id": "62a0eb54-de96-46ee-b184-5be6c8114a19",
|
|
152
|
-
},
|
|
153
|
-
]
|
|
154
|
-
elif ref_data_path == "/feefines":
|
|
155
|
-
yield from [
|
|
156
|
-
{
|
|
157
|
-
"automatic": False,
|
|
158
|
-
"feeFineType": "Coffee spill",
|
|
159
|
-
"ownerId": "5abfff3f-50eb-432a-9a43-21f8f7a70194",
|
|
160
|
-
"id": "6e8dc178-f667-45cd-90b5-338c78c3a85c",
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
"automatic": False,
|
|
164
|
-
"feeFineType": "Coffee spill",
|
|
165
|
-
"ownerId": "62a0eb54-de96-46ee-b184-5be6c8114a19",
|
|
166
|
-
"id": "031836ec-521a-4493-9f76-0e02c2e7d241",
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
"automatic": False,
|
|
170
|
-
"feeFineType": "Replacement library card",
|
|
171
|
-
"ownerId": "5abfff3f-50eb-432a-9a43-21f8f7a70194",
|
|
172
|
-
"id": "8936606d-223b-428e-9a70-4b8105f60cdb",
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
"automatic": True,
|
|
176
|
-
"feeFineType": "Replacement processing fee",
|
|
177
|
-
"id": "d20df2fb-45fd-4184-b238-0d25747ffdd9",
|
|
178
|
-
},
|
|
179
|
-
]
|
|
180
|
-
|
|
181
|
-
elif ref_data_path == "/service-points":
|
|
182
|
-
yield from [
|
|
183
|
-
{
|
|
184
|
-
"id": "finance_office_uuid",
|
|
185
|
-
"name": "Finance Office",
|
|
186
|
-
"code": "fo",
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
"id": "library_main_desk_uuid",
|
|
190
|
-
"name": "Library Main Desk",
|
|
191
|
-
"code": "lmd",
|
|
192
|
-
},
|
|
193
|
-
]
|
|
194
|
-
|
|
195
|
-
elif ref_data_path == "/users" and query == '?query=(externalSystemId=="Some external id")':
|
|
196
|
-
yield from [{"id": "some id", "barcode": "some barcode", "patronGroup": "some group"}]
|
|
197
|
-
elif ref_data_path == "/users" and query == '?query=(barcode=="u123")':
|
|
198
|
-
yield from [{"id": "user123", "barcode": "u123", "patronGroup": "some group"}]
|
|
199
|
-
elif ref_data_path == "/users" and query == '?query=(barcode=="u456")':
|
|
200
|
-
yield from [{"id": "user456", "barcode": "u456", "patronGroup": "some group"}]
|
|
201
|
-
|
|
202
|
-
elif ref_data_path == "/inventory/items" and query == '?query=(barcode=="some barcode")':
|
|
203
|
-
yield from [
|
|
204
|
-
{
|
|
205
|
-
"id": "a FOLIO item uuid",
|
|
206
|
-
"title": "Döda fallen i Avesta.",
|
|
207
|
-
"barcode": "some barcode",
|
|
208
|
-
"callNumber": "QB611 .C44",
|
|
209
|
-
"materialType": {
|
|
210
|
-
"id": "4eea3f27-8910-46fc-9666-e2b44326c2b8",
|
|
211
|
-
"name": "sound recording",
|
|
212
|
-
},
|
|
213
|
-
"effectiveLocation": {
|
|
214
|
-
"id": "2e48e713-17f3-4c13-a9f8-23845bb210a4",
|
|
215
|
-
"name": "Reading room",
|
|
216
|
-
},
|
|
217
|
-
}
|
|
218
|
-
]
|
|
219
|
-
|
|
220
|
-
elif ref_data_path == "/holdings-note-types":
|
|
221
|
-
yield from [
|
|
222
|
-
{
|
|
223
|
-
"id": "88914775-f677-4759-b57b-1a33b90b24e0",
|
|
224
|
-
"name": "Electronic bookplate",
|
|
225
|
-
"source": "folio",
|
|
226
|
-
"metadata": {
|
|
227
|
-
"createdDate": "2024-09-04T01:54:20.719+00:00",
|
|
228
|
-
"updatedDate": "2024-09-04T01:54:20.719+00:00"
|
|
229
|
-
}
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
"id": "c4407cc7-d79f-4609-95bd-1cefb2e2b5c5",
|
|
233
|
-
"name": "Copy note",
|
|
234
|
-
"source": "folio",
|
|
235
|
-
"metadata": {
|
|
236
|
-
"createdDate": "2024-09-04T01:54:20.722+00:00",
|
|
237
|
-
"updatedDate": "2024-09-04T01:54:20.722+00:00"
|
|
238
|
-
}
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
"id": "d6510242-5ec3-42ed-b593-3585d2e48fd6",
|
|
242
|
-
"name": "Action note",
|
|
243
|
-
"source": "folio",
|
|
244
|
-
"metadata": {
|
|
245
|
-
"createdDate": "2024-09-04T01:54:20.723+00:00",
|
|
246
|
-
"updatedDate": "2024-09-04T01:54:20.723+00:00"
|
|
247
|
-
}
|
|
248
|
-
},
|
|
249
|
-
{
|
|
250
|
-
"id": "e19eabab-a85c-4aef-a7b2-33bd9acef24e",
|
|
251
|
-
"name": "Binding",
|
|
252
|
-
"source": "folio",
|
|
253
|
-
"metadata": {
|
|
254
|
-
"createdDate": "2024-09-04T01:54:20.724+00:00",
|
|
255
|
-
"updatedDate": "2024-09-04T01:54:20.724+00:00"
|
|
256
|
-
}
|
|
257
|
-
},
|
|
258
|
-
{
|
|
259
|
-
"id": "db9b4787-95f0-4e78-becf-26748ce6bdeb",
|
|
260
|
-
"name": "Provenance",
|
|
261
|
-
"source": "folio",
|
|
262
|
-
"metadata": {
|
|
263
|
-
"createdDate": "2024-09-04T01:54:20.725+00:00",
|
|
264
|
-
"updatedDate": "2024-09-04T01:54:20.725+00:00"
|
|
265
|
-
}
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
"id": "6a41b714-8574-4084-8d64-a9373c3fbb59",
|
|
269
|
-
"name": "Reproduction",
|
|
270
|
-
"source": "folio",
|
|
271
|
-
"metadata": {
|
|
272
|
-
"createdDate": "2024-09-04T01:54:20.728+00:00",
|
|
273
|
-
"updatedDate": "2024-09-04T01:54:20.728+00:00"
|
|
274
|
-
}
|
|
275
|
-
},
|
|
276
|
-
{
|
|
277
|
-
"id": "b160f13a-ddba-4053-b9c4-60ec5ea45d56",
|
|
278
|
-
"name": "Note",
|
|
279
|
-
"source": "folio",
|
|
280
|
-
"metadata": {
|
|
281
|
-
"createdDate": "2024-09-04T01:54:20.728+00:00",
|
|
282
|
-
"updatedDate": "2024-09-04T01:54:20.728+00:00"
|
|
283
|
-
}
|
|
284
|
-
},
|
|
285
|
-
{
|
|
286
|
-
"id": "841d1873-015b-4bfb-a69f-6cbb41d925ba",
|
|
287
|
-
"name": "Original MARC holdings statements",
|
|
288
|
-
"source": "local",
|
|
289
|
-
"metadata": {
|
|
290
|
-
"createdDate": "2025-05-02T01:54:20.728+00:00",
|
|
291
|
-
"updatedDate": "2025-05-02T01:54:20.728+00:00"
|
|
292
|
-
}
|
|
293
|
-
},
|
|
294
|
-
{
|
|
295
|
-
"id": "09c1e5c9-6f11-432e-bcbe-b9e733ccce57",
|
|
296
|
-
"name": "Original MFHD Record",
|
|
297
|
-
"source": "local",
|
|
298
|
-
"metadata": {
|
|
299
|
-
"createdDate": "2025-05-02T01:54:20.728+00:00",
|
|
300
|
-
"updatedDate": "2025-05-02T01:54:20.728+00:00"
|
|
301
|
-
}
|
|
302
|
-
},
|
|
303
|
-
{
|
|
304
|
-
"id": "474120b0-d64e-4a6f-9c9c-e7d3e76f3cf5",
|
|
305
|
-
"name": "Original MFHD (MARC21)",
|
|
306
|
-
"source": "local",
|
|
307
|
-
"metadata": {
|
|
308
|
-
"createdDate": "2025-05-02T01:54:20.728+00:00",
|
|
309
|
-
"updatedDate": "2025-05-02T01:54:20.728+00:00"
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
]
|
|
313
|
-
|
|
314
|
-
elif ref_data_path in super_schema:
|
|
315
|
-
yield from super_schema.get(ref_data_path)
|
|
316
|
-
else:
|
|
317
|
-
yield {}
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
def folio_get_single_object_mocked(*args, **kwargs):
|
|
321
|
-
with open("./static/reference_data.json", "r") as super_schema_file:
|
|
322
|
-
super_schema = json.load(super_schema_file)
|
|
323
|
-
if args[0] == "/hrid-settings-storage/hrid-settings":
|
|
324
|
-
return {
|
|
325
|
-
"instances": {"prefix": "pref", "startNumber": 1},
|
|
326
|
-
"holdings": {"prefix": "pref", "startNumber": 1},
|
|
327
|
-
"items": {"prefix": "pref", "startNumber": 1},
|
|
328
|
-
"commonRetainLeadingZeroes": True,
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
elif (
|
|
332
|
-
args[0] == "/configurations/entries?query=(module==ORG%20and%20configName==localeSettings)"
|
|
333
|
-
):
|
|
334
|
-
return {
|
|
335
|
-
"configs": [
|
|
336
|
-
{
|
|
337
|
-
"value": '{"timezone":"America/New_York"}',
|
|
338
|
-
}
|
|
339
|
-
]
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
elif args[0] in super_schema:
|
|
343
|
-
return super_schema.get(args[0])
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
def folio_get_from_github(owner, repo, file_path):
|
|
347
|
-
return FolioClient.get_latest_from_github(owner, repo, file_path, "")
|
|
348
|
-
|
|
349
|
-
OKAPI_URL = "http://localhost:9130"
|
|
350
|
-
LIBRARY_NAME = "Test Library"
|
|
351
|
-
|
|
352
|
-
def get_mocked_library_config():
|
|
353
|
-
return LibraryConfiguration(
|
|
354
|
-
okapi_url=OKAPI_URL,
|
|
355
|
-
tenant_id="test_tenant",
|
|
356
|
-
okapi_username="test_user",
|
|
357
|
-
okapi_password="test_password",
|
|
358
|
-
base_folder=Path("."),
|
|
359
|
-
library_name=LIBRARY_NAME,
|
|
360
|
-
log_level_debug=False,
|
|
361
|
-
folio_release=FolioRelease.sunflower,
|
|
362
|
-
iteration_identifier="test_iteration"
|
|
363
|
-
)
|
|
364
|
-
|
|
365
|
-
def get_mocked_ecs_central_libarary_config():
|
|
366
|
-
return LibraryConfiguration(
|
|
367
|
-
okapi_url=OKAPI_URL,
|
|
368
|
-
tenant_id="test_tenant",
|
|
369
|
-
okapi_username="test_user",
|
|
370
|
-
okapi_password="test_password",
|
|
371
|
-
base_folder=Path("."),
|
|
372
|
-
library_name=LIBRARY_NAME,
|
|
373
|
-
log_level_debug=False,
|
|
374
|
-
folio_release=FolioRelease.sunflower,
|
|
375
|
-
iteration_identifier="central_iteration",
|
|
376
|
-
is_ecs=True,
|
|
377
|
-
)
|
|
378
|
-
|
|
379
|
-
def get_mocked_ecs_member_libarary_config():
|
|
380
|
-
return LibraryConfiguration(
|
|
381
|
-
okapi_url=OKAPI_URL,
|
|
382
|
-
tenant_id="test_tenant",
|
|
383
|
-
ecs_tenant_id="test_ecs_tenant",
|
|
384
|
-
okapi_username="test_user",
|
|
385
|
-
okapi_password="test_password",
|
|
386
|
-
base_folder=Path("."),
|
|
387
|
-
library_name=LIBRARY_NAME,
|
|
388
|
-
log_level_debug=False,
|
|
389
|
-
folio_release=FolioRelease.sunflower,
|
|
390
|
-
iteration_identifier="member_iteration",
|
|
391
|
-
ecs_central_iteration_identifier="central_iteration",
|
|
392
|
-
is_ecs=True,
|
|
393
|
-
)
|
|
394
|
-
|
|
395
|
-
def get_mocked_folder_structure():
|
|
396
|
-
mock_fs = MagicMock()
|
|
397
|
-
mock_fs.mapping_files = Path("mapping_files")
|
|
398
|
-
mock_fs.results_folder = Path("results")
|
|
399
|
-
mock_fs.legacy_records_folder = Path("source_files")
|
|
400
|
-
mock_fs.logs_folder = Path("logs")
|
|
401
|
-
mock_fs.migration_reports_file = Path("/dev/null")
|
|
402
|
-
mock_fs.transformation_extra_data_path = Path("transformation_extra_data")
|
|
403
|
-
mock_fs.transformation_log_path = Path("/dev/null")
|
|
404
|
-
mock_fs.data_issue_file_path = Path("/dev/null")
|
|
405
|
-
mock_fs.failed_marc_recs_file = Path("failed_marc_recs.txt")
|
|
406
|
-
return mock_fs
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
folio_migration_tools/__init__.py,sha256=DXvzUKFSpSZjflFWaNm0L8yhFk0u7RVIvQMskwMmKFc,238
|
|
2
|
-
folio_migration_tools/__main__.py,sha256=kfo4iKf3GJD7deh4RvIizKnC4zvIgCpNo-Bs7HBM34s,8453
|
|
3
|
-
folio_migration_tools/circulation_helper.py,sha256=iib2p0WGzOcAnwaJppDYiONc-1Jdna66dPAtBmAIuCE,14538
|
|
4
|
-
folio_migration_tools/colors.py,sha256=GP0wdI_GZ2WD5SjrbPN-S3u8vvN_u6rGQIBBcWv_0ZM,227
|
|
5
|
-
folio_migration_tools/config_file_load.py,sha256=zHHa6NDkN6EJiQE4DgjrFQPVKsd70POsfbGkB8308jg,2822
|
|
6
|
-
folio_migration_tools/custom_dict.py,sha256=-FUnhKp90Dg8EHlY6twx-PYQxBUWEO7FgxL2b7pf-xk,678
|
|
7
|
-
folio_migration_tools/custom_exceptions.py,sha256=1zgOKy3NBUVGG6i9YxK6w2Hntlea8MHmm7mdnjBtzvQ,2687
|
|
8
|
-
folio_migration_tools/extradata_writer.py,sha256=fuchNcMc6BYb9IyfAcvXg7X4J2TfX6YiROfT2hr0JMw,1678
|
|
9
|
-
folio_migration_tools/folder_structure.py,sha256=bZlmKGtxdytWcqjnM2lE4Vpx4nHyYRk7CNL1tZhLtXY,6917
|
|
10
|
-
folio_migration_tools/helper.py,sha256=iWQhdcuzbGzVpEAiHQczO4hdhIH_iciLEp1SCGDynMI,2983
|
|
11
|
-
folio_migration_tools/holdings_helper.py,sha256=yJpz6aJrKRBiJ1MtT5bs2vXAc88uJuGh2_KDuCySOKc,7559
|
|
12
|
-
folio_migration_tools/i18n_config.py,sha256=3AH_2b9zTsxE4XTe4isM_zYtPJSlK0ix6eBmV7kAYUM,228
|
|
13
|
-
folio_migration_tools/library_configuration.py,sha256=LzICsZQdOkXwIqdDfh59x0-Cx77Lb18qVnWroNqekS8,7046
|
|
14
|
-
folio_migration_tools/mapper_base.py,sha256=IYER8Dq-4qLq3qiAvUpnzc33usUbfZtNKzyZJD6DNds,23567
|
|
15
|
-
folio_migration_tools/mapping_file_transformation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
folio_migration_tools/mapping_file_transformation/courses_mapper.py,sha256=yX8yCCw6B54r7JUn5IPhMYKBgImiagUzfwBxNVRf5MQ,8091
|
|
17
|
-
folio_migration_tools/mapping_file_transformation/holdings_mapper.py,sha256=qT8LMWZytSaOyUC9OzfJeekVIkLkNim4OzfoGlAh75g,8290
|
|
18
|
-
folio_migration_tools/mapping_file_transformation/item_mapper.py,sha256=ZmPc64X_l3hq8qc0WDhZ020TdjvucZoQciIVIpPzwiA,10472
|
|
19
|
-
folio_migration_tools/mapping_file_transformation/manual_fee_fines_mapper.py,sha256=2-W2Z8hwAhWT77zfDWuwWqm20j4w1mfzeAXWiyssQ8I,13434
|
|
20
|
-
folio_migration_tools/mapping_file_transformation/mapping_file_mapper_base.py,sha256=LqxpULlickaQhIv92iBA7SwSXy1PN7l-9swLHQdnx6g,38408
|
|
21
|
-
folio_migration_tools/mapping_file_transformation/notes_mapper.py,sha256=vCmZmjrjyYtXeFCyVqvWfnP8y1jGGu15RXzXIHh12xY,3530
|
|
22
|
-
folio_migration_tools/mapping_file_transformation/order_mapper.py,sha256=-JEBEeOntNPE9-NYhWAJ1hpQI03ZzMv-_mkyLzSa9x4,17750
|
|
23
|
-
folio_migration_tools/mapping_file_transformation/organization_mapper.py,sha256=u1Lb6tApn-nVLqbbJV38BuipKL3OK8Y2uQ4ogoyGQaI,14639
|
|
24
|
-
folio_migration_tools/mapping_file_transformation/ref_data_mapping.py,sha256=qFsn_LwKZeKFdOudfEQnNA3DEHOdNQVKzTPdZAlDPX0,8864
|
|
25
|
-
folio_migration_tools/mapping_file_transformation/user_mapper.py,sha256=LJTj2F2dRKqyI37Ww0gY1AHLLT3dqyuKkY_RS_3-rg0,8543
|
|
26
|
-
folio_migration_tools/marc_rules_transformation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
|
-
folio_migration_tools/marc_rules_transformation/conditions.py,sha256=F78a70HXcDLnOXDs_vSTdgf4opMWHzXzOjvpWlOh4PM,47719
|
|
28
|
-
folio_migration_tools/marc_rules_transformation/holdings_statementsparser.py,sha256=gM0ETZVVih35cSSpOBXA8wrBFhq2oeYaGsD89tnSNJs,13433
|
|
29
|
-
folio_migration_tools/marc_rules_transformation/hrid_handler.py,sha256=SgnSYeNR0z_qarkizBMWZZWr8tOPZJ4fvlZjlM3nJOU,9999
|
|
30
|
-
folio_migration_tools/marc_rules_transformation/loc_language_codes.xml,sha256=ztn2_yKws6qySL4oSsZh7sOjxq5bCC1PhAnXJdtgmJ0,382912
|
|
31
|
-
folio_migration_tools/marc_rules_transformation/marc_file_processor.py,sha256=QhVbJSlsWkGQgUo7ZVmQvlwpEN20Tyon_kzrZOWECoE,12549
|
|
32
|
-
folio_migration_tools/marc_rules_transformation/marc_reader_wrapper.py,sha256=9ATjYMRAjy0QcXtmNZaHVhHLJ5hE1WUgOcF6KMJjbgo,5309
|
|
33
|
-
folio_migration_tools/marc_rules_transformation/rules_mapper_authorities.py,sha256=PGt2w8h2pj8_8sGjQe3L-odFDlquURtKnoNFRWQB3GI,9621
|
|
34
|
-
folio_migration_tools/marc_rules_transformation/rules_mapper_base.py,sha256=loNZ9gEYaAwjkP2_wLlXGedjWvSdHoGF_oJN9g6gI3s,45928
|
|
35
|
-
folio_migration_tools/marc_rules_transformation/rules_mapper_bibs.py,sha256=RD46EzS0NQArn5LCGbrxDm9vbbW9PO_6iNUQwJBAbSg,30364
|
|
36
|
-
folio_migration_tools/marc_rules_transformation/rules_mapper_holdings.py,sha256=ZgyDxmNE7LwW8Cd55wRIEE-u6iyMKCRRXdq2ZRjm2nc,28779
|
|
37
|
-
folio_migration_tools/migration_report.py,sha256=BkRspM1hwTBnWeqsHamf7yVEofzLj560Q-9G--O00hw,4258
|
|
38
|
-
folio_migration_tools/migration_tasks/__init__.py,sha256=ZkbY_yGyB84Ke8OMlYUzyyBj4cxxNrhMTwQlu_GbdDs,211
|
|
39
|
-
folio_migration_tools/migration_tasks/authority_transformer.py,sha256=AoXg9s-GLO3yEEDCrQV7hc4YVXxwxsdxDdpj1zhHydE,4251
|
|
40
|
-
folio_migration_tools/migration_tasks/batch_poster.py,sha256=Oc04VXIs-D8HzvKDtFR3evGVuPZmw35iWyUyOnpP-RE,50410
|
|
41
|
-
folio_migration_tools/migration_tasks/bibs_transformer.py,sha256=46d44pcDAodFXDYbrTCMRASISbDciXmA0CXYfhP2IaE,6298
|
|
42
|
-
folio_migration_tools/migration_tasks/courses_migrator.py,sha256=CzXnsu-KGP7B4zcINJzLYUqz47D16NuFfzu_DPqRlTQ,7061
|
|
43
|
-
folio_migration_tools/migration_tasks/holdings_csv_transformer.py,sha256=-lMsQCkxVj2kFa0awf0_wsD5do1hbRhUqIu4p0UiRNk,21955
|
|
44
|
-
folio_migration_tools/migration_tasks/holdings_marc_transformer.py,sha256=c_ruhOgidyJdSnnRwWUs3wwFMiLqbVMPOhhCaYuH_TI,14343
|
|
45
|
-
folio_migration_tools/migration_tasks/items_transformer.py,sha256=oTbFX2saF7-ZCb1mO3baLvODnBSEbbN5F_GtSth3iG4,19755
|
|
46
|
-
folio_migration_tools/migration_tasks/loans_migrator.py,sha256=PF8DNpGKsppSDr7wX96Ao13UTFu6dl9cz2URLqSsOzE,40052
|
|
47
|
-
folio_migration_tools/migration_tasks/manual_fee_fines_transformer.py,sha256=CnmlTge7nChUJ10EiUkriQtJlVxWqglgfhjgneh2_yM,7247
|
|
48
|
-
folio_migration_tools/migration_tasks/migration_task_base.py,sha256=Q-57h6rmt74bC9LidA9ZoagEcwVd_ytq8IUWelVOm2E,22521
|
|
49
|
-
folio_migration_tools/migration_tasks/orders_transformer.py,sha256=6SnzU_rUTu2B5hQykI2nRA7vI1rg-uxuF9Ncupe0AEY,14302
|
|
50
|
-
folio_migration_tools/migration_tasks/organization_transformer.py,sha256=Kuxkh1sKyUVBqm5qAK1Jrq-4xcyNz2JPZvvFRqfwI8s,16922
|
|
51
|
-
folio_migration_tools/migration_tasks/requests_migrator.py,sha256=QP9OBezC3FfcKpI78oMmydxcPaUIYAgHyKevyLwC-WQ,14841
|
|
52
|
-
folio_migration_tools/migration_tasks/reserves_migrator.py,sha256=4sSPer6_6yMwiiY1VYJmYZske_Ah1XG4KAM3NDadPhg,9952
|
|
53
|
-
folio_migration_tools/migration_tasks/user_transformer.py,sha256=aylrMC9n47fdStgsNfW4ZbJh2E4FDSPypsaNv52ynKc,12330
|
|
54
|
-
folio_migration_tools/task_configuration.py,sha256=73OWc8TX--fwPRptv3eQVEVv0-XmNaZcb3m__1HENSA,1161
|
|
55
|
-
folio_migration_tools/test_infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
-
folio_migration_tools/test_infrastructure/mocked_classes.py,sha256=BurU3NGU_Q8as_BGmW98q9O6bujZDkOfFmvKKdVw9t8,15056
|
|
57
|
-
folio_migration_tools/transaction_migration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
|
-
folio_migration_tools/transaction_migration/legacy_loan.py,sha256=sLw2fCBao1VWZykOx-BWpMndLHjJNj-HJZFYqbpVV5A,7561
|
|
59
|
-
folio_migration_tools/transaction_migration/legacy_request.py,sha256=1ulyFzPQw_InOjyPzkWpGnNptgXdQ18nmri0J8Nlpkc,6124
|
|
60
|
-
folio_migration_tools/transaction_migration/legacy_reserve.py,sha256=qzw0okg4axAE_ezXopP9gFsQ_e60o0zh7zqRzFBSWHY,1806
|
|
61
|
-
folio_migration_tools/transaction_migration/transaction_result.py,sha256=cTdCN0BnlI9_ZJB2Z3Fdkl9gpymIi-9mGZsRFlQcmDk,656
|
|
62
|
-
folio_migration_tools/translations/en.json,sha256=6IpYYNFCtQoXACndPM0d1Oa25GYuaF-G-b4YpzTjQH0,41656
|
|
63
|
-
folio_migration_tools-1.9.9.dist-info/METADATA,sha256=oxsbwwpobooctgBeN52dRpbqhALQw4FB6D-zq-0Mwso,7471
|
|
64
|
-
folio_migration_tools-1.9.9.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
65
|
-
folio_migration_tools-1.9.9.dist-info/entry_points.txt,sha256=Hbe-HjqMcU8FwVshVIkeWyZd9XwgT1CCMNf06EpHQu8,77
|
|
66
|
-
folio_migration_tools-1.9.9.dist-info/licenses/LICENSE,sha256=PhIEkitVi3ejgq56tt6sWoJIG_zmv82cjjd_aYPPGdI,1072
|
|
67
|
-
folio_migration_tools-1.9.9.dist-info/RECORD,,
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2018 Theodor Tolstoy
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|