Получение has_permission() missing 1 required positional argument: 'view' вместо JSON Response

введите описание изображения здесь

  1. Getting has_permission() missing 1 required positional argument: 'view' instead of JSON Response

    from rest_framework import filters from rest_framework import viewsets from rest_framework.permissions import IsAuthenticated

    from apps.fm.models.asset import Asset from apps.fm. serializers import AssetSerializer from django.shortcuts import render, redirect from django.urls import reverse

    class AssetViewSet(viewsets.ModelViewSet): model = Asset serializer_class = AssetSerializer permission_classes = [IsAuthenticated] filter_backends = [filters.SearchFilter, filters. OrderingFilter] search_fields = ['name'] ordering_fields = ['id'] ordering = ['-id']

    def get_permissions(self): uagent = ['Chrome','Firefox'] if self.request.user_agent. browser.family in uagent: return [] return [IsAuthenticated] def retrieve(self, request, *args, **kwargs): instance = self.get_object() uagent = ['Chrome','Firefox'] if self.request.user_agent. browser.family in uagent: authentication_classes = [] #disables authentication permission_classes = [] #disables permission return redirect(reverse("feedback")+"?type=Asset&id="+str(instance.id)) serializer = self.get_serializer(instance) return Response(serializer.data) def get_queryset(self): queryset = self.model.objects.all() return queryset 

get_permissions должен возвращать экземпляры ваших классов разрешений, в настоящее время вы возвращаете класс вместо этого

def get_permissions(self):
    uagent = ['Chrome','Firefox']
    if self.request.user_agent.browser.family in uagent:
        return []
    return [IsAuthenticated()] # Create an instance of the permission class

Или еще лучше, поскольку вы установили permission_classes на ViewSet, вы можете просто вызвать super

def get_permissions(self):
    uagent = ['Chrome','Firefox']
    if self.request.user_agent.browser.family in uagent:
        return []
    return super().get_permissions()
Вернуться на верх