summaryrefslogtreecommitdiff
path: root/tests/urlpatterns/converters.py
blob: 9e2af062698f72964c82819c476360598f98b754 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import base64


class Base64Converter:
    regex = r"[a-zA-Z0-9+/]*={0,2}"

    def to_python(self, value):
        return base64.b64decode(value)

    def to_url(self, value):
        return base64.b64encode(value).decode("ascii")


class DynamicConverter:
    _dynamic_to_python = None
    _dynamic_to_url = None

    @property
    def regex(self):
        return r"[0-9a-zA-Z]+"

    @regex.setter
    def regex(self):
        raise Exception("You can't modify the regular expression.")

    def to_python(self, value):
        return type(self)._dynamic_to_python(value)

    def to_url(self, value):
        return type(self)._dynamic_to_url(value)

    @classmethod
    def register_to_python(cls, value):
        cls._dynamic_to_python = value

    @classmethod
    def register_to_url(cls, value):
        cls._dynamic_to_url = value