Skip to content

Commit 0d98fd0

Browse files
committed
New option --skip-correctbot for translateodt
1 parent 8adec8b commit 0d98fd0

3 files changed

Lines changed: 40 additions & 9 deletions

File tree

pywikitools/test/test_translateodt.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,28 @@ def test_translate_worksheet_aborts(self, mock_correctbot, mock_fortraininglib):
262262

263263
# TODO test all the main functionality of translate_worksheet()
264264

265+
@patch("pywikitools.translateodt.ForTrainingLib", autospec=True)
266+
@patch("pywikitools.translateodt.CorrectBot", autospec=True)
267+
def test_translate_worksheet_skips_correctbot(
268+
self, mock_correctbot, mock_fortraininglib
269+
):
270+
translateodt = TranslateODT(
271+
keep_english_file=True,
272+
skip_correctbot=True,
273+
config={"translateodt": {"site": "4training"}},
274+
)
275+
translateodt._loffice = Mock(spec=LibreOffice)
276+
self.addCleanup(translateodt.fortraininglib.session.close)
277+
278+
mock_fortraininglib.return_value.get_translation_units.return_value = None
279+
with self.assertLogs("pywikitools.translateodt", level="ERROR"):
280+
self.assertIsNone(translateodt.translate_worksheet("Prayer", "de"))
281+
282+
mock_correctbot.assert_not_called()
283+
mock_fortraininglib.return_value.get_translation_units.assert_called_with(
284+
"Prayer", "de"
285+
)
286+
265287

266288
if __name__ == "__main__":
267289
unittest.main()

pywikitools/translateodt/__init__.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,15 @@ def _missing_spaces_exceptions(self) -> List[str]:
3030

3131
class TranslateODT:
3232
def __init__(
33-
self, *, keep_english_file: bool = False, config: Dict[str, Dict[str, str]] = {}
33+
self,
34+
*,
35+
keep_english_file: bool = False,
36+
skip_correctbot: bool = False,
37+
config: Dict[str, Dict[str, str]] = {},
3438
):
3539
"""Variable initializations (no connection to LibreOffice here)
3640
@param keep_english_file: Don't delete English ODT file afterwards (command line option)
41+
@param skip_correctbot: Skip the pre-flight CorrectBot check (command line option)
3742
@param config: can be used to overwrite config settings
3843
"""
3944
# Read configuration from config.ini in this folder; set default values in case it doesn't exist
@@ -47,7 +52,10 @@ def __init__(
4752
self.config.read(join(dirname(abspath(__file__)), "..", "..", "config.ini"))
4853
self.config.read_dict(config)
4954

50-
self.correctbot = CorrectBot(self.config, simulate=True)
55+
self.skip_correctbot: bool = skip_correctbot
56+
self.correctbot = (
57+
None if skip_correctbot else CorrectBot(self.config, simulate=True)
58+
)
5159

5260
self.logger = logging.getLogger("pywikitools.translateodt")
5361
self.keep_english_file: bool = keep_english_file
@@ -363,13 +371,14 @@ def translate_worksheet(self, worksheet: str, language_code: str) -> Optional[st
363371
file name of the created ODT file (or None in case of error)
364372
"""
365373
self.logger.debug(f"Worksheet: {worksheet}, language code: {language_code}")
366-
self.correctbot.check_page(worksheet, language_code)
367-
if (
368-
self.correctbot.get_correction_counter() > 0
369-
or self.correctbot.get_warning_counter() > 0
370-
):
371-
self.logger.error("Please run CorrectBot first and then try again.")
372-
return None
374+
if not self.skip_correctbot:
375+
self.correctbot.check_page(worksheet, language_code)
376+
if (
377+
self.correctbot.get_correction_counter() > 0
378+
or self.correctbot.get_warning_counter() > 0
379+
):
380+
self.logger.error("Please run CorrectBot first and then try again.")
381+
return None
373382
translated_page: Optional[TranslatedPage] = (
374383
self.fortraininglib.get_translation_units(worksheet, language_code)
375384
)

pywikitools/translationreview/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)