diff --git a/machine/corpora/paratext_project_settings.py b/machine/corpora/paratext_project_settings.py index eadd1ec6..b932b214 100644 --- a/machine/corpora/paratext_project_settings.py +++ b/machine/corpora/paratext_project_settings.py @@ -22,6 +22,7 @@ class ParatextProjectSettings: biblical_terms_file_name: str language_code: Optional[str] translation_type: str + visibility: Optional[str] = None parent_guid: Optional[str] = None parent_name: Optional[str] = None _parent: Optional["ParatextProjectSettings"] = None diff --git a/machine/corpora/paratext_project_settings_parser_base.py b/machine/corpora/paratext_project_settings_parser_base.py index 31976d9c..ca09971d 100644 --- a/machine/corpora/paratext_project_settings_parser_base.py +++ b/machine/corpora/paratext_project_settings_parser_base.py @@ -99,6 +99,8 @@ def parse(self) -> ParatextProjectSettings: parent_name = translation_info_setting_parts[1] if translation_info_setting_parts[1] != "" else None parent_guid = translation_info_setting_parts[2] if translation_info_setting_parts[2] != "" else None + visibility: Optional[str] = settings_tree.getroot().findtext("Visibility") + settings = ParatextProjectSettings( guid, name, @@ -114,6 +116,7 @@ def parse(self) -> ParatextProjectSettings: parts[2], language_code, translation_type, + visibility, parent_guid, parent_name, ) diff --git a/tests/corpora/test_file_paratext_project_settings_parser.py b/tests/corpora/test_file_paratext_project_settings_parser.py index 2bd294f5..03f9df24 100644 --- a/tests/corpora/test_file_paratext_project_settings_parser.py +++ b/tests/corpora/test_file_paratext_project_settings_parser.py @@ -3,6 +3,25 @@ from machine.corpora import FileParatextProjectSettingsParser, UsfmStyleType, UsfmTextType +def test_parse() -> None: + parser = FileParatextProjectSettingsParser(USFM_TEST_PROJECT_PATH) + settings = parser.parse() + assert settings.guid == "a7e0b3ce0200736062f9f810a444dbfbe64aca35" + assert settings.name == "Tes" + assert settings.full_name == "Test" + assert settings.encoding == "utf_8_sig" + assert settings.versification.name.startswith("English") + assert settings.file_name_prefix == "" + assert settings.file_name_form == "41MAT" + assert settings.file_name_suffix == "Tes.SFM" + assert settings.biblical_terms_list_type == "Project" + assert settings.biblical_terms_project_name == "Tes" + assert settings.biblical_terms_file_name == "ProjectBiblicalTerms.xml" + assert settings.language_code == "en" + assert settings.translation_type == "Standard" + assert settings.visibility == "Public" + + def test_parse_custom_stylesheet() -> None: parser = FileParatextProjectSettingsParser(USFM_TEST_PROJECT_PATH) settings = parser.parse() @@ -14,14 +33,14 @@ def test_parse_custom_stylesheet() -> None: def test_is_daughter_project() -> None: parser = FileParatextProjectSettingsParser(USFM_TEST_PROJECT_PATH) settings = parser.parse() + assert settings.translation_type == "Standard" + assert settings.visibility == "Public" assert settings.has_parent assert settings.is_daughter_project_of(settings) - assert settings.translation_type == "Standard" assert settings.parent is None parser = FileParatextProjectSettingsParser(USFM_TEST_PROJECT_PATH, settings) settings = parser.parse() assert settings.has_parent assert settings.is_daughter_project_of(settings) - assert settings.translation_type == "Standard" assert settings.parent is not None diff --git a/tests/corpora/test_paratext_project_settings.py b/tests/corpora/test_paratext_project_settings.py index 2cce0159..fc607410 100644 --- a/tests/corpora/test_paratext_project_settings.py +++ b/tests/corpora/test_paratext_project_settings.py @@ -129,4 +129,5 @@ def _create_settings(file_name_form: str) -> ParatextProjectSettings: "BiblicalTerms.xml", "en", "Standard", + "Public", ) diff --git a/tests/corpora/test_zip_paratext_project_settings_parser.py b/tests/corpora/test_zip_paratext_project_settings_parser.py index 1058953c..a60cf10e 100644 --- a/tests/corpora/test_zip_paratext_project_settings_parser.py +++ b/tests/corpora/test_zip_paratext_project_settings_parser.py @@ -10,6 +10,25 @@ from machine.corpora import UsfmStyleType, UsfmTextType, ZipParatextProjectSettingsParser +def test_parse() -> None: + with _TestEnvironment() as env: + settings = env.parser.parse() + assert settings.guid == "a7e0b3ce0200736062f9f810a444dbfbe64aca35" + assert settings.name == "Tes" + assert settings.full_name == "Test" + assert settings.encoding == "utf_8_sig" + assert settings.versification.name.startswith("English") + assert settings.file_name_prefix == "" + assert settings.file_name_form == "41MAT" + assert settings.file_name_suffix == "Tes.SFM" + assert settings.biblical_terms_list_type == "Project" + assert settings.biblical_terms_project_name == "Tes" + assert settings.biblical_terms_file_name == "ProjectBiblicalTerms.xml" + assert settings.language_code == "en" + assert settings.translation_type == "Standard" + assert settings.visibility == "Public" + + def test_parse_custom_stylesheet() -> None: with _TestEnvironment() as env: settings = env.parser.parse() @@ -23,7 +42,6 @@ def test_is_daughter_project() -> None: settings = env.parser.parse() assert settings.has_parent assert settings.is_daughter_project_of(settings) - assert settings.translation_type == "Standard" assert settings.parent is None env.parser = ZipParatextProjectSettingsParser(env.zip_file, settings) @@ -31,7 +49,6 @@ def test_is_daughter_project() -> None: settings = env.parser.parse() assert settings.has_parent assert settings.is_daughter_project_of(settings) - assert settings.translation_type == "Standard" assert settings.parent is not None