summaryrefslogtreecommitdiff
path: root/tests/urlpatterns/converters.py
blob: 14a65b04833d1a0d782f0360bfadf79c3ecc891f (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