From df1a359f62e1a4270ec451e5da7545aefd56e0f7 Mon Sep 17 00:00:00 2001 From: EssKayz Date: Fri, 18 Sep 2026 10:13:17 +0300 Subject: [PATCH] BS-161: Mobility period scrambler --- .../data_scramblers/mobility_period.py | 31 +++++++++++++++++++ .../resources/sis_resources.py | 4 +++ 2 files changed, 35 insertions(+) create mode 100644 funidata_utils/data_scramblers/mobility_period.py diff --git a/funidata_utils/data_scramblers/mobility_period.py b/funidata_utils/data_scramblers/mobility_period.py new file mode 100644 index 0000000..ce0c532 --- /dev/null +++ b/funidata_utils/data_scramblers/mobility_period.py @@ -0,0 +1,31 @@ +from .replacement_data import thesis_titles_fi, thesis_titles_en, thesis_titles_sv +from .utils.generic_scrambling import replace_from_list +from ..data_scramblers.base import SingletonMetaScrambler +from ..utils import update_inner_dictionary_key + + +class MobilityPeriodScrambler(SingletonMetaScrambler): + # key=None means "Keep the original value" + # lambda x: None means -> set the value None + scrambling_keys = dict( + id=None, + documentState=None, + studyRightId=None, + personId=None, + mobilityDirection=None, + activityPeriod=None, + phase=None, + mobilityProgramUrn=None, + mobilityProgramDescription=[ + lambda x: 'mobilityProgramDescription' if x else x + ], + mobilityTypeUrn=None, + countryUrn=None, + internationalInstitutionUrn=None, + organisation=[ + lambda x: 'organisation' if x else x, + ], + mobilityStudyRightTypeUrn=None, + virtualMobilityType=None, + isCancelled=None, + ) diff --git a/funidata_utils/sis_integration/resources/sis_resources.py b/funidata_utils/sis_integration/resources/sis_resources.py index 6e521b2..06fec4a 100644 --- a/funidata_utils/sis_integration/resources/sis_resources.py +++ b/funidata_utils/sis_integration/resources/sis_resources.py @@ -8,6 +8,7 @@ from ...data_scramblers.kori_person import KoriPersonScrambler from ...data_scramblers.attainment import AttainmentScrambler from ...data_scramblers.ilmo_enrolment import IlmoEnrolmentScrambler +from ...data_scramblers.mobility_period import MobilityPeriodScrambler from ...data_scramblers.study_right import StudyRightScrambler from ...data_scramblers.studyright_termregistration import StudyRightTermRegistrationScrambler from ...data_scramblers.osuva_plan_scrambler import OsuvaPlanScrambler @@ -176,6 +177,9 @@ class Thesis(BaseResource): class MobilityPeriods(BaseResource): + scrambling_classes = [ + MobilityPeriodScrambler + ] imports = SisImport( endpoint='/ori/api/mobility-periods/v1/import', default_import_limit=_DEFAULT_IMPORT_LIMIT,