File: converters.py

package info (click to toggle)
python-django 3%3A3.2.19-1%2Bdeb12u2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-proposed-updates
  • size: 56,696 kB
  • sloc: python: 264,418; javascript: 18,362; xml: 193; makefile: 178; sh: 43
file content (38 lines) | stat: -rw-r--r-- 842 bytes parent folder | download | duplicates (3)
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