Coverage for app/venv/lib/python3.14/site-packages/weblate/memory/management/commands/import_memory.py: 0%

30 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-07 07:15 +0000

1# Copyright © Michal Čihař <michal@weblate.org> 

2# 

3# SPDX-License-Identifier: GPL-3.0-or-later 

4from __future__ import annotations 

5 

6from pathlib import Path 

7from typing import TYPE_CHECKING 

8 

9from django.core.management.base import CommandError 

10 

11from weblate.memory.models import Memory, MemoryImportError 

12from weblate.utils.management.base import BaseCommand 

13 

14if TYPE_CHECKING: 

15 from django.core.management.base import CommandParser 

16 

17 

18class Command(BaseCommand): 

19 """Command for importing translation memory.""" 

20 

21 help = "imports translation memory" 

22 

23 def add_arguments(self, parser: CommandParser) -> None: 

24 super().add_arguments(parser) 

25 parser.add_argument( 

26 "--language-map", 

27 help="Map language codes in the TMX to Weblate, for example en_US:en", 

28 ) 

29 parser.add_argument( 

30 "--source-language", 

31 required=False, 

32 help="Source language of the document when not specified in file", 

33 ) 

34 parser.add_argument( 

35 "--target-language", 

36 required=False, 

37 help="Target language of the document when not specified in file", 

38 ) 

39 

40 parser.add_argument("file", type=Path, help="File to import (TMX or JSON)") 

41 

42 def handle(self, *args, **options) -> None: 

43 """Perform translation memory import.""" 

44 langmap = None 

45 if options["language_map"]: 

46 langmap = dict(z.split(":", 1) for z in options["language_map"].split(",")) 

47 

48 try: 

49 with options["file"].open("rb") as handle: 

50 try: 

51 Memory.objects.import_file( 

52 None, 

53 handle, 

54 langmap, 

55 source_language=options["source_language"], 

56 target_language=options["target_language"], 

57 ) 

58 except MemoryImportError as error: 

59 msg = f"Import failed: {error}" 

60 raise CommandError(msg) from error 

61 except OSError as error: 

62 msg = f"Could not open file: {error}" 

63 raise CommandError(msg) from error