mirror of
https://github.com/django/django.git
synced 2024-11-22 11:57:34 +01:00
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
|