File: converters.py

package info (click to toggle)
python-django 3%3A5.2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 61,236 kB
  • sloc: python: 361,585; javascript: 19,250; xml: 211; makefile: 182; sh: 28
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