Coverage for app/venv/lib/python3.14/site-packages/weblate/utils/urls.py: 96%

24 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 

4 

5from django.urls import register_converter 

6from django.urls.converters import PathConverter, StringConverter 

7 

8from weblate.trans.defines import CATEGORY_DEPTH 

9 

10URL_DEPTH = CATEGORY_DEPTH + 3 

11 

12 

13class WeblateSlugConverter(StringConverter): 

14 regex = "[^/]+" 

15 

16 

17class GitPathConverter(StringConverter): 

18 regex = "(info/|git-upload-pack)[a-z0-9_/-]*" 

19 

20 

21class WordConverter(StringConverter): 

22 regex = "[^/-]+" 

23 

24 

25class WidgetExtensionConverter(StringConverter): 

26 regex = "(png|svg)" 

27 

28 

29class ObjectPathConverter(PathConverter): 

30 regex = f"[^/]+(/[^/]+){{0,{URL_DEPTH}}}" 

31 

32 def to_python(self, value): 

33 return value.split("/") 

34 

35 def to_url(self, value): 

36 return "/".join(value) 

37 

38 

39def register_weblate_converters() -> None: 

40 register_converter(WeblateSlugConverter, "name") 

41 register_converter(GitPathConverter, "git_path") 

42 register_converter(WordConverter, "word") 

43 register_converter(WidgetExtensionConverter, "extension") 

44 register_converter(ObjectPathConverter, "object_path")