Skip to content
Snippets Groups Projects
Commit fbd6be27 authored by Samuel GAIST's avatar Samuel GAIST
Browse files

[common][mixins] Remove permission related mixins

parent e069cef4
No related branches found
No related tags found
No related merge requests found
Pipeline #39165 passed
This commit is part of merge request !327. Comments created here will be created in the context of that merge request.
...@@ -25,8 +25,6 @@ ...@@ -25,8 +25,6 @@
# # # #
############################################################################### ###############################################################################
from rest_framework import permissions
from .permissions import IsAuthor
class CommonContextMixin(object): class CommonContextMixin(object):
""" """
...@@ -34,16 +32,17 @@ class CommonContextMixin(object): ...@@ -34,16 +32,17 @@ class CommonContextMixin(object):
request user in the serializer context request user in the serializer context
optionnaly the request object format optionnaly the request object format
""" """
def get_serializer_context(self): def get_serializer_context(self):
context = super(CommonContextMixin, self).get_serializer_context() context = super(CommonContextMixin, self).get_serializer_context()
context['user'] = self.request.user context["user"] = self.request.user
object_format = self.request.GET.get('object_format', None) object_format = self.request.GET.get("object_format", None)
if object_format is not None: if object_format is not None:
if object_format not in ['json', 'string']: if object_format not in ["json", "string"]:
object_format = 'json' object_format = "json"
context['object_format'] = object_format context["object_format"] = object_format
return context return context
...@@ -53,52 +52,27 @@ class SerializerFieldsMixin(object): ...@@ -53,52 +52,27 @@ class SerializerFieldsMixin(object):
Apply this mixin to any view or viewset to get the Apply this mixin to any view or viewset to get the
list of fields to return list of fields to return
""" """
def get_serializer_fields(self, request, allow_sharing=False, exclude_fields=[]): def get_serializer_fields(self, request, allow_sharing=False, exclude_fields=[]):
# Process the query string # Process the query string
fields = None fields = None
query_params = request.query_params query_params = request.query_params
if 'fields' in query_params: if "fields" in query_params:
fields = query_params['fields'].split(',') fields = query_params["fields"].split(",")
else: else:
fields = self.get_serializer_class().Meta.default_fields fields = self.get_serializer_class().Meta.default_fields
if 'include_fields' in query_params: if "include_fields" in query_params:
include_fields = query_params['include_fields'].split(',') include_fields = query_params["include_fields"].split(",")
fields.extend(include_fields) fields.extend(include_fields)
if not(allow_sharing): if not (allow_sharing):
exclude_fields = ['sharing'] + exclude_fields exclude_fields = ["sharing"] + exclude_fields
if request.user.is_anonymous(): if request.user.is_anonymous():
exclude_fields = ['is_owner'] + exclude_fields exclude_fields = ["is_owner"] + exclude_fields
fields = [field for field in fields if field not in exclude_fields] fields = [field for field in fields if field not in exclude_fields]
return fields return fields
class IsAuthorOrReadOnlyMixin(object):
"""
Apply this mixin to any view or viewset. Allows read for
all and modification only by author
"""
def get_permissions(self):
if self.request.method == 'GET':
self.permission_classes = [permissions.AllowAny]
else:
self.permission_classes = [permissions.IsAuthenticated, IsAuthor]
return super(IsAuthorOrReadOnlyMixin, self).get_permissions()
class IsAdminOrReadOnlyMixin(object):
"""
Apply this mixin to any view or viewset. Allows read for
all and modification only by admin
"""
def get_permissions(self):
if self.request.method == 'GET':
self.permission_classes = [permissions.AllowAny]
else:
self.permission_classes = [permissions.IsAuthenticated, permissions.IsAdminUser]
return super(IsAdminOrReadOnlyMixin, self).get_permissions()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment