mirror of
				https://github.com/yweber/lodel2.git
				synced 2025-10-31 03:29:03 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #-*- coding: utf-8 -*-
 | |
| 
 | |
| from werkzeug.wrappers import Response
 | |
| 
 | |
| class HttpException(Exception):
 | |
| 
 | |
|     STATUS_STR = {
 | |
|         4:{
 | |
|             400: 'Bad request',
 | |
|             401: 'Unauthorized',
 | |
|             402: 'Payment required',
 | |
|             403: 'Forbidden',
 | |
|             404: 'Not found',
 | |
|             418: 'I\'m a teapot', #RFC 2324
 | |
|         },
 | |
|         5:{
 | |
|             500: 'Internal server error',
 | |
|             501: 'Not implemented',
 | |
|         },
 | |
|     }
 | |
| 
 | |
|     def __init__(self, status_code = 500, tpl = 'error.html', custom = None):
 | |
|         self.status_code = status_code
 | |
|         self.tpl = tpl
 | |
|         self.custom = custom
 | |
| 
 | |
|     def render(self, request):
 | |
|         from .interface.template.loader import TemplateLoader
 | |
|         loader = TemplateLoader()
 | |
|         tpl_vars = {
 | |
|             'status_code': self.status_code,
 | |
|             'status_str': self.status_str(self.status_code),
 | |
|             'custom': self.custom }
 | |
|         response = Response(
 | |
|             loader.render_to_response(self.tpl, template_vars = tpl_vars),
 | |
|             mimetype = 'text/html')
 | |
|         response.status_code = self.status_code
 | |
|         return response
 | |
| 
 | |
|     @staticmethod
 | |
|     def status_str(status_code):
 | |
|         status_fam = status_code / 100
 | |
|         if status_fam not in HttpException.STATUS_STR or \
 | |
|             status_code not in HttpException.STATUS_STR[status_fam]:
 | |
|             return 'Unknown'
 | |
|         else:
 | |
|             return HttpException.STATUS_STR[status_fam][status_code]
 | |
| 
 | |
| 
 | |
| 
 | |
|         
 | 
