mirror of
				https://github.com/django/django.git
				synced 2025-10-30 17:16:10 +00: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
 |