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,
 | 
						|
    )
 |