folio-migration-tools 1.10.0b4__tar.gz → 1.10.0b6__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.
Files changed (61) hide show
  1. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/PKG-INFO +1 -1
  2. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/pyproject.toml +1 -1
  3. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/mapping_file_transformation/user_mapper.py +4 -0
  4. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/batch_poster.py +13 -13
  5. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/migration_task_base.py +13 -5
  6. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/user_transformer.py +10 -0
  7. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/README.md +0 -0
  8. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/__init__.py +0 -0
  9. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/__main__.py +0 -0
  10. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/circulation_helper.py +0 -0
  11. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/colors.py +0 -0
  12. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/config_file_load.py +0 -0
  13. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/custom_dict.py +0 -0
  14. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/custom_exceptions.py +0 -0
  15. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/extradata_writer.py +0 -0
  16. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/folder_structure.py +0 -0
  17. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/helper.py +0 -0
  18. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/holdings_helper.py +0 -0
  19. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/i18n_config.py +0 -0
  20. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/library_configuration.py +0 -0
  21. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/mapper_base.py +0 -0
  22. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/mapping_file_transformation/__init__.py +0 -0
  23. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/mapping_file_transformation/courses_mapper.py +0 -0
  24. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/mapping_file_transformation/holdings_mapper.py +0 -0
  25. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/mapping_file_transformation/item_mapper.py +0 -0
  26. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/mapping_file_transformation/manual_fee_fines_mapper.py +0 -0
  27. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/mapping_file_transformation/mapping_file_mapper_base.py +0 -0
  28. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/mapping_file_transformation/notes_mapper.py +0 -0
  29. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/mapping_file_transformation/order_mapper.py +0 -0
  30. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/mapping_file_transformation/organization_mapper.py +0 -0
  31. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/mapping_file_transformation/ref_data_mapping.py +0 -0
  32. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/marc_rules_transformation/__init__.py +0 -0
  33. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/marc_rules_transformation/conditions.py +0 -0
  34. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/marc_rules_transformation/holdings_statementsparser.py +0 -0
  35. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/marc_rules_transformation/hrid_handler.py +0 -0
  36. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/marc_rules_transformation/loc_language_codes.xml +0 -0
  37. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/marc_rules_transformation/marc_file_processor.py +0 -0
  38. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/marc_rules_transformation/marc_reader_wrapper.py +0 -0
  39. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/marc_rules_transformation/rules_mapper_base.py +0 -0
  40. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/marc_rules_transformation/rules_mapper_bibs.py +0 -0
  41. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/marc_rules_transformation/rules_mapper_holdings.py +0 -0
  42. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_report.py +0 -0
  43. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/__init__.py +0 -0
  44. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/bibs_transformer.py +0 -0
  45. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/courses_migrator.py +0 -0
  46. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/holdings_csv_transformer.py +0 -0
  47. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/holdings_marc_transformer.py +0 -0
  48. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/items_transformer.py +0 -0
  49. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/loans_migrator.py +0 -0
  50. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/manual_fee_fines_transformer.py +0 -0
  51. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/orders_transformer.py +0 -0
  52. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/organization_transformer.py +0 -0
  53. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/requests_migrator.py +0 -0
  54. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/migration_tasks/reserves_migrator.py +0 -0
  55. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/task_configuration.py +0 -0
  56. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/transaction_migration/__init__.py +0 -0
  57. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/transaction_migration/legacy_loan.py +0 -0
  58. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/transaction_migration/legacy_request.py +0 -0
  59. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/transaction_migration/legacy_reserve.py +0 -0
  60. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/transaction_migration/transaction_result.py +0 -0
  61. {folio_migration_tools-1.10.0b4 → folio_migration_tools-1.10.0b6}/src/folio_migration_tools/translations/en.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: folio-migration-tools
3
- Version: 1.10.0b4
3
+ Version: 1.10.0b6
4
4
  Summary: A tool allowing you to migrate data from legacy ILS:s (Library systems) into FOLIO LSP
5
5
  Keywords: FOLIO,ILS,LSP,Library Systems,MARC21,Library data
6
6
  Author: Theodor Tolstoy, Lisa Sjögren, Brooks Travis, Jeremy Nelson, Clinton Bradford
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "folio_migration_tools"
3
- version = "1.10.0b4"
3
+ version = "1.10.0b6"
4
4
  description = "A tool allowing you to migrate data from legacy ILS:s (Library systems) into FOLIO LSP"
5
5
  authors = [
6
6
  {name = "Theodor Tolstoy", email = "github.teddes@tolstoy.se"},
@@ -115,6 +115,10 @@ class UserMapper(MappingFileMapperBase):
115
115
 
116
116
  if self.task_config.remove_request_preferences:
117
117
  del clean_folio_object["requestPreference"]
118
+
119
+ if self.task_config.remove_username:
120
+ del clean_folio_object["username"]
121
+
118
122
  self.report_folio_mapping_no_schema(clean_folio_object)
119
123
  self.report_legacy_mapping_no_schema(legacy_user)
120
124
 
@@ -4,7 +4,6 @@ import json
4
4
  import logging
5
5
  import re
6
6
  import sys
7
- import time
8
7
  import traceback
9
8
  from datetime import datetime, timezone
10
9
  from typing import TYPE_CHECKING, Annotated, List, Optional
@@ -792,18 +791,19 @@ class BatchPoster(MigrationTaskBase):
792
791
  )
793
792
 
794
793
  def do_post(self, batch):
795
- url = self.api_info["api_endpoint"]
796
- if self.api_info["object_name"] == "users":
797
- payload = {self.api_info["object_name"]: list(batch), "totalRecords": len(batch)}
798
- elif self.api_info["total_records"]:
799
- payload = {"records": list(batch), "totalRecords": len(batch)}
800
- else:
801
- payload = {self.api_info["object_name"]: batch}
802
- return self.folio_client.folio_post(
803
- url,
804
- payload,
805
- query_params=self.query_params,
806
- )
794
+ with self.folio_client.get_folio_http_client() as http_client:
795
+ url = self.api_info["api_endpoint"]
796
+ if self.api_info["object_name"] == "users":
797
+ payload = {self.api_info["object_name"]: list(batch), "totalRecords": len(batch)}
798
+ elif self.api_info["total_records"]:
799
+ payload = {"records": list(batch), "totalRecords": len(batch)}
800
+ else:
801
+ payload = {self.api_info["object_name"]: batch}
802
+ return http_client.post(
803
+ url,
804
+ json=payload,
805
+ params=self.query_params,
806
+ )
807
807
 
808
808
  def get_current_record_count_in_folio(self):
809
809
  if "query_endpoint" in self.api_info:
@@ -99,6 +99,7 @@ class MigrationTaskBase:
99
99
  raise NotImplementedError()
100
100
 
101
101
  def clean_out_empty_logs(self):
102
+ _close_handler(self.data_issue_file_handler)
102
103
  if (
103
104
  self.folder_structure.data_issue_file_path.is_file()
104
105
  and os.stat(self.folder_structure.data_issue_file_path).st_size == 0
@@ -260,13 +261,13 @@ class MigrationTaskBase:
260
261
 
261
262
  # Data issue file formatter
262
263
  data_issue_file_formatter = logging.Formatter("%(message)s")
263
- data_issue_file_handler = logging.FileHandler(
264
+ self.data_issue_file_handler = logging.FileHandler(
264
265
  filename=str(self.folder_structure.data_issue_file_path), mode="w"
265
266
  )
266
- data_issue_file_handler.addFilter(LevelFilter(26))
267
- data_issue_file_handler.setFormatter(data_issue_file_formatter)
268
- data_issue_file_handler.setLevel(26)
269
- logging.getLogger().addHandler(data_issue_file_handler)
267
+ self.data_issue_file_handler.addFilter(LevelFilter(26))
268
+ self.data_issue_file_handler.setFormatter(data_issue_file_formatter)
269
+ self.data_issue_file_handler.setLevel(26)
270
+ logging.getLogger().addHandler(self.data_issue_file_handler)
270
271
  logger.info("Logging set up")
271
272
 
272
273
  def setup_records_map(self, mapping_file_path):
@@ -553,3 +554,10 @@ class LevelFilter(logging.Filter):
553
554
 
554
555
  def filter(self, record):
555
556
  return record.levelno == self.level
557
+
558
+
559
+ def _close_handler(handler: logging.Handler | None):
560
+ if handler is None:
561
+ return
562
+ handler.flush()
563
+ handler.close()
@@ -101,6 +101,16 @@ class UserTransformer(MigrationTaskBase):
101
101
  ),
102
102
  ),
103
103
  ] = False
104
+ remove_username: Annotated[
105
+ Optional[bool],
106
+ Field(
107
+ title="Remove username",
108
+ description=(
109
+ "Specify whether to remove username. Resulting objects are not compatible with"
110
+ " the mod-user-import. Optional, by default is False"
111
+ ),
112
+ ),
113
+ ] = False
104
114
 
105
115
  @staticmethod
106
116
  def get_object_type() -> FOLIONamespaces: