Estoy intentado realizar el proceso de permisos para cada app

Tengo un proyecto en el cual estoy en el proceso de implemetar los permisos que tiene cada usuario para que pueda ter el crud. Pero hasta el momento no me funciona nada y soy nuevo en esto.

from django.contrib.auth.mixins import (LoginRequiredMixin, PermissionRequiredMixin)

class ListDataPlanTemplate(LoginRequiredMixin, generic.TemplateView,PermissionRequiredMixin):
“”"
Vista como clase que renderiza el template HTML que contiene la lista de planes de datos.
“”"

template_name = "realtime/dataplan/list_dataplan.html"
permission_required = 'realtime.view_dataplan'
permission_denied_message = 'no estas autorizado'

class ListDataPlanView(LoginRequiredMixin, generic.ListView,PermissionRequiredMixin):
“”"
Vista como clase que permite al usuario visualizar los planes de datos
creados y acceder a la opción para editar y añadir.
“”"

template_name = "realtime/dataplan/list_dataplan_created.html"
context_object_name = "list_data_plans"
permission_required = 'realtime.view_dataplan'
permission_denied_message = 'no estas autorizado'

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    list_data_plans = DataPlan.objects.filter(visible=True)
    context.update({"list_data_plans": list_data_plans})
    return context

def get_queryset(self):
    return DataPlan.objects.filter(company=self.request.user.company_id)

class AddDataPlanView(LoginRequiredMixin, generic.CreateView,PermissionRequiredMixin):
“”"
Vista como clase que implementa la opción de crear planes de datos.
Permite añadir una configuración personalizada para los campos ‘name’ y ‘price’.
“”"

template_name = "realtime/dataplan/add_dataplan.html"
form_class = DataPlanForm
permission_required = 'realtime.add_dataplan'
permission_denied_message = 'no estas autorizado'

def get_context_data(self, **kwargs):
    operator = MobileOperator.objects.all()
    company = Company.objects.all()
    context = super().get_context_data(**kwargs)
    context.update({"operator": operator, "company":company})
    return context

def form_valid(self, form):
    form.instance.modified_by = self.request.user
    dataplan = form.save(commit=False)
    dataplan.save()
    return HttpResponse(status=204, headers={"HX-Trigger": "ListDataplanChanged"})

Este es el codigo que tengo pero hasta el momento no me funciona. Por lo anterior no se si alguien tiene algún consejo o me pueda guiar como django maneja los permisos

Nota al margen: cuando publique código aquí, encierre el código entre líneas de tres acentos graves - ` caracteres. Eso significa que tendrá una línea de ```, luego su código, luego otra línea de ```. (Al publicar código de varios archivos, generalmente es más útil hacer esto para cada archivo individualmente). Esto obliga al software del foro a mantener su código correctamente formateado. Este también es el proceso recomendado al publicar plantillas, mensajes de error y otro texto con formato previo.

Los mixins deben aparecer antes de la clase base principal en las definiciones de clase.
ejemplo:

[quote=“desarrollador8, post:1, tema:19420”]
clase ListDataPlanTemplate(LoginRequiredMixin, generic.TemplateView, PermissionRequiredMixin):
[/cita]
debiera ser:
clase ListDataPlanTemplate(PermissionRequiredMixin, LoginRequiredMixin, generic.TemplateView):

Y, dado que AnonymousUser nunca debería tener permisos otorgados, incluso podría simplificarse como:
clase ListDataPlanTemplate (PermissionRequiredMixin, generic.TemplateView):

----- And the original English -----

Side note: When posting code here, enclose the code between lines of three backtick - ` characters. That means you will have a line of ```, then your code, then another line of ```. (When posting code from multiple files, it’s generally most useful to do this for each file individually.) This forces the forum software to keep your code properly formatted. This is also the recommended process when posting templates, error messages, and other pre-formatted text.

The mixins must appear before the parent base class in the class definitions.
example:

should be:
class ListDataPlanTemplate(PermissionRequiredMixin, LoginRequiredMixin, generic.TemplateView):

And, since the AnonymousUser should never have permissions granted to it, could even be simplified as:
class ListDataPlanTemplate(PermissionRequiredMixin, generic.TemplateView):

1 Like