Coverage for app/venv/lib/python3.14/site-packages/weblate/api/routers.py: 100%
10 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
« 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
5from rest_framework import routers
8class WeblateRouter(routers.DefaultRouter):
9 def get_lookup_regex(self, viewset, lookup_prefix=""):
10 """
11 Get lookup regex for a viewset.
13 Given a viewset, return the portion of URL regex that is used
14 to match against a single instance.
16 Note that lookup_prefix is not used directly inside REST rest_framework
17 itself, but is required in order to nicely support nested router
18 implementations, such as drf-nested-routers.
20 https://github.com/alanjds/drf-nested-routers
21 """
22 base_regex = "(?P<{lookup_prefix}{lookup_url_kwarg}>{lookup_value})"
23 # Use `pk` as default field, unset set. Default regex should not
24 # consume `.json` style suffixes and should break at '/' boundaries.
25 lookup_field = getattr(viewset, "lookup_field", "pk")
26 lookup_fields = getattr(viewset, "lookup_fields", None)
27 if lookup_fields is None:
28 lookup_fields = [lookup_field]
30 lookup_value = getattr(viewset, "lookup_value_regex", "[^/]+")
32 return "/".join(
33 base_regex.format(
34 lookup_prefix=lookup_prefix,
35 lookup_url_kwarg=field,
36 lookup_value=lookup_value,
37 )
38 for field in lookup_fields
39 )