37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """passbook helper views"""
 | |
| from django.http import HttpRequest
 | |
| from django.template.response import TemplateResponse
 | |
| from django.utils.translation import gettext_lazy as _
 | |
| from django.views.generic import CreateView
 | |
| from guardian.shortcuts import assign_perm
 | |
| 
 | |
| 
 | |
| class CreateAssignPermView(CreateView):
 | |
|     """Assign permissions to object after creation"""
 | |
| 
 | |
|     permissions = [
 | |
|         "%s.view_%s",
 | |
|         "%s.change_%s",
 | |
|         "%s.delete_%s",
 | |
|     ]
 | |
| 
 | |
|     def form_valid(self, form):
 | |
|         response = super().form_valid(form)
 | |
|         for permission in self.permissions:
 | |
|             full_permission = permission % (
 | |
|                 self.object._meta.app_label,
 | |
|                 self.object._meta.model_name,
 | |
|             )
 | |
|             assign_perm(full_permission, self.request.user, self.object)
 | |
|         return response
 | |
| 
 | |
| 
 | |
| def bad_request_message(request: HttpRequest, message: str) -> TemplateResponse:
 | |
|     """Return generic error page with message, with status code set to 400"""
 | |
|     return TemplateResponse(
 | |
|         request,
 | |
|         "error/generic.html",
 | |
|         {"message": message, "card_title": _("Bad Request")},
 | |
|         status=400,
 | |
|     )
 | 
