Add additional_permission_classes attribute on APIView

This attributes allows adding specific permissions to a view without overriding the default permissions in the settings
This commit is contained in:
Pawel Morawian 2019-11-09 11:19:59 +01:00
parent 0d6589cf45
commit a9b3c8a68b

View File

@ -109,6 +109,7 @@ class APIView(View):
authentication_classes = api_settings.DEFAULT_AUTHENTICATION_CLASSES authentication_classes = api_settings.DEFAULT_AUTHENTICATION_CLASSES
throttle_classes = api_settings.DEFAULT_THROTTLE_CLASSES throttle_classes = api_settings.DEFAULT_THROTTLE_CLASSES
permission_classes = api_settings.DEFAULT_PERMISSION_CLASSES permission_classes = api_settings.DEFAULT_PERMISSION_CLASSES
additional_permission_classes = []
content_negotiation_class = api_settings.DEFAULT_CONTENT_NEGOTIATION_CLASS content_negotiation_class = api_settings.DEFAULT_CONTENT_NEGOTIATION_CLASS
metadata_class = api_settings.DEFAULT_METADATA_CLASS metadata_class = api_settings.DEFAULT_METADATA_CLASS
versioning_class = api_settings.DEFAULT_VERSIONING_CLASS versioning_class = api_settings.DEFAULT_VERSIONING_CLASS
@ -275,7 +276,8 @@ class APIView(View):
""" """
Instantiates and returns the list of permissions that this view requires. Instantiates and returns the list of permissions that this view requires.
""" """
return [permission() for permission in self.permission_classes] permissions = self.permission_classes + self.additional_permission_classes
return [permission() for permission in permissions]
def get_throttles(self): def get_throttles(self):
""" """