39 lines
842 B
Python
39 lines
842 B
Python
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
|