Views: change according to DRF best practices.
This commit is contained in:
parent
9ea01d4d93
commit
3680bd53b1
@ -153,7 +153,7 @@ class BaseViewSet(viewsets.ModelViewSet):
|
||||
return result, new_stoken, done
|
||||
|
||||
# Change how our list works by default
|
||||
def list(self, request, collection_uid=None):
|
||||
def list(self, request, collection_uid=None, *args, **kwargs):
|
||||
queryset = self.get_queryset()
|
||||
serializer = self.get_serializer(queryset, many=True)
|
||||
|
||||
@ -185,11 +185,11 @@ class CollectionViewSet(BaseViewSet):
|
||||
context.update({'request': self.request, 'prefetch': prefetch})
|
||||
return context
|
||||
|
||||
def destroy(self, request, uid=None):
|
||||
def destroy(self, request, uid=None, *args, **kwargs):
|
||||
# FIXME: implement
|
||||
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
def partial_update(self, request, uid=None):
|
||||
def partial_update(self, request, uid=None, *args, **kwargs):
|
||||
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
def update(self, request, *args, **kwargs):
|
||||
@ -202,7 +202,7 @@ class CollectionViewSet(BaseViewSet):
|
||||
|
||||
return Response({}, status=status.HTTP_201_CREATED)
|
||||
|
||||
def list(self, request):
|
||||
def list(self, request, *args, **kwargs):
|
||||
queryset = self.get_queryset()
|
||||
result, new_stoken, done = self.filter_by_stoken_and_limit(request, queryset)
|
||||
|
||||
@ -251,21 +251,21 @@ class CollectionItemViewSet(BaseViewSet):
|
||||
context.update({'request': self.request, 'prefetch': prefetch})
|
||||
return context
|
||||
|
||||
def create(self, request, collection_uid=None):
|
||||
def create(self, request, collection_uid=None, *args, **kwargs):
|
||||
# We create using batch and transaction
|
||||
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
def destroy(self, request, collection_uid=None, uid=None):
|
||||
def destroy(self, request, collection_uid=None, uid=None, *args, **kwargs):
|
||||
# We can't have destroy because we need to get data from the user (in the body) such as hmac.
|
||||
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
def update(self, request, collection_uid=None, uid=None):
|
||||
def update(self, request, collection_uid=None, uid=None, *args, **kwargs):
|
||||
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
def partial_update(self, request, collection_uid=None, uid=None):
|
||||
def partial_update(self, request, collection_uid=None, uid=None, *args, **kwargs):
|
||||
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
def list(self, request, collection_uid=None):
|
||||
def list(self, request, collection_uid=None, *args, **kwargs):
|
||||
queryset = self.get_queryset()
|
||||
|
||||
if not self.request.query_params.get('withCollection', False):
|
||||
@ -283,7 +283,7 @@ class CollectionItemViewSet(BaseViewSet):
|
||||
return Response(ret)
|
||||
|
||||
@action_decorator(detail=True, methods=['GET'])
|
||||
def revision(self, request, collection_uid=None, uid=None):
|
||||
def revision(self, request, collection_uid=None, uid=None, *args, **kwargs):
|
||||
col = get_object_or_404(self.get_collection_queryset(Collection.objects), main_item__uid=collection_uid)
|
||||
item = get_object_or_404(col.items, uid=uid)
|
||||
|
||||
@ -316,7 +316,7 @@ class CollectionItemViewSet(BaseViewSet):
|
||||
|
||||
# FIXME: rename to something consistent with what the clients have - maybe list_updates?
|
||||
@action_decorator(detail=False, methods=['POST'])
|
||||
def fetch_updates(self, request, collection_uid=None):
|
||||
def fetch_updates(self, request, collection_uid=None, *args, **kwargs):
|
||||
queryset = self.get_queryset()
|
||||
|
||||
serializer = CollectionItemBulkGetSerializer(data=request.data, many=True)
|
||||
@ -349,11 +349,11 @@ class CollectionItemViewSet(BaseViewSet):
|
||||
return Response(ret)
|
||||
|
||||
@action_decorator(detail=False, methods=['POST'])
|
||||
def batch(self, request, collection_uid=None):
|
||||
def batch(self, request, collection_uid=None, *args, **kwargs):
|
||||
return self.transaction(request, collection_uid, validate_etag=False)
|
||||
|
||||
@action_decorator(detail=False, methods=['POST'])
|
||||
def transaction(self, request, collection_uid=None, validate_etag=True):
|
||||
def transaction(self, request, collection_uid=None, validate_etag=True, *args, **kwargs):
|
||||
stoken = request.GET.get('stoken', None)
|
||||
with transaction.atomic(): # We need this for locking on the collection object
|
||||
collection_object = get_object_or_404(
|
||||
@ -405,7 +405,7 @@ class CollectionItemChunkViewSet(viewsets.ViewSet):
|
||||
user = self.request.user
|
||||
return queryset.filter(members__user=user)
|
||||
|
||||
def create(self, request, collection_uid=None, collection_item_uid=None):
|
||||
def create(self, request, collection_uid=None, collection_item_uid=None, *args, **kwargs):
|
||||
col = get_object_or_404(self.get_collection_queryset(), main_item__uid=collection_uid)
|
||||
col_it = get_object_or_404(col.items, uid=collection_item_uid)
|
||||
|
||||
@ -416,7 +416,7 @@ class CollectionItemChunkViewSet(viewsets.ViewSet):
|
||||
return Response({}, status=status.HTTP_201_CREATED)
|
||||
|
||||
@action_decorator(detail=True, methods=['GET'])
|
||||
def download(self, request, collection_uid=None, collection_item_uid=None, uid=None):
|
||||
def download(self, request, collection_uid=None, collection_item_uid=None, uid=None, *args, **kwargs):
|
||||
import os
|
||||
from django.views.static import serve
|
||||
|
||||
@ -461,7 +461,7 @@ class CollectionMemberViewSet(BaseViewSet):
|
||||
def get_stoken_obj_id(self, request):
|
||||
return request.GET.get('iterator', None)
|
||||
|
||||
def list(self, request, collection_uid=None):
|
||||
def list(self, request, collection_uid=None, *args, **kwargs):
|
||||
queryset = self.get_queryset().order_by('id')
|
||||
result, new_stoken, done = self.filter_by_stoken_and_limit(request, queryset)
|
||||
serializer = self.get_serializer(result, many=True)
|
||||
@ -474,7 +474,7 @@ class CollectionMemberViewSet(BaseViewSet):
|
||||
|
||||
return Response(ret)
|
||||
|
||||
def create(self, request):
|
||||
def create(self, request, *args, **kwargs):
|
||||
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
# FIXME: block leaving if we are the last admins - should be deleted / assigned in this case depending if there
|
||||
@ -483,7 +483,7 @@ class CollectionMemberViewSet(BaseViewSet):
|
||||
instance.revoke()
|
||||
|
||||
@action_decorator(detail=False, methods=['POST'], permission_classes=our_base_permission_classes)
|
||||
def leave(self, request, collection_uid=None):
|
||||
def leave(self, request, collection_uid=None, *args, **kwargs):
|
||||
collection_uid = self.kwargs['collection_uid']
|
||||
col = get_object_or_404(self.get_collection_queryset(Collection.objects), main_item__uid=collection_uid)
|
||||
|
||||
@ -499,7 +499,7 @@ class InvitationBaseViewSet(BaseViewSet):
|
||||
lookup_field = 'uid'
|
||||
lookup_url_kwarg = 'invitation_uid'
|
||||
|
||||
def list(self, request, collection_uid=None):
|
||||
def list(self, request, collection_uid=None, *args, **kwargs):
|
||||
limit = int(request.GET.get('limit', 50))
|
||||
iterator = request.GET.get('iterator', None)
|
||||
|
||||
@ -556,7 +556,7 @@ class InvitationOutgoingViewSet(InvitationBaseViewSet):
|
||||
return Response({}, status=status.HTTP_201_CREATED)
|
||||
|
||||
@action_decorator(detail=False, allowed_methods=['GET'], methods=['GET'])
|
||||
def fetch_user_profile(self, request):
|
||||
def fetch_user_profile(self, request, *args, **kwargs):
|
||||
username = request.GET.get('username')
|
||||
kwargs = {'owner__' + User.USERNAME_FIELD: username}
|
||||
user_info = get_object_or_404(UserInfo.objects.all(), **kwargs)
|
||||
@ -574,7 +574,7 @@ class InvitationIncomingViewSet(InvitationBaseViewSet):
|
||||
return queryset.filter(user=self.request.user)
|
||||
|
||||
@action_decorator(detail=True, allowed_methods=['POST'], methods=['POST'])
|
||||
def accept(self, request, invitation_uid=None):
|
||||
def accept(self, request, invitation_uid=None, *args, **kwargs):
|
||||
invitation = get_object_or_404(self.get_queryset(), uid=invitation_uid)
|
||||
context = self.get_serializer_context()
|
||||
context.update({'invitation': invitation})
|
||||
@ -605,11 +605,11 @@ class AuthenticationViewSet(viewsets.ViewSet):
|
||||
'user': UserSerializer(user).data,
|
||||
}
|
||||
|
||||
def list(self, request):
|
||||
def list(self, request, *args, **kwargs):
|
||||
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
@action_decorator(detail=False, methods=['POST'])
|
||||
def signup(self, request):
|
||||
def signup(self, request, *args, **kwargs):
|
||||
serializer = AuthenticationSignupSerializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
user = serializer.save()
|
||||
@ -660,7 +660,7 @@ class AuthenticationViewSet(viewsets.ViewSet):
|
||||
return None
|
||||
|
||||
@action_decorator(detail=False, methods=['POST'])
|
||||
def login_challenge(self, request):
|
||||
def login_challenge(self, request, *args, **kwargs):
|
||||
from datetime import datetime
|
||||
|
||||
serializer = AuthenticationLoginChallengeSerializer(data=request.data)
|
||||
@ -686,7 +686,7 @@ class AuthenticationViewSet(viewsets.ViewSet):
|
||||
return Response(ret, status=status.HTTP_200_OK)
|
||||
|
||||
@action_decorator(detail=False, methods=['POST'])
|
||||
def login(self, request):
|
||||
def login(self, request, *args, **kwargs):
|
||||
outer_serializer = AuthenticationLoginSerializer(data=request.data)
|
||||
outer_serializer.is_valid(raise_exception=True)
|
||||
|
||||
@ -713,13 +713,13 @@ class AuthenticationViewSet(viewsets.ViewSet):
|
||||
return Response(data, status=status.HTTP_200_OK)
|
||||
|
||||
@action_decorator(detail=False, methods=['POST'], permission_classes=BaseViewSet.permission_classes)
|
||||
def logout(self, request):
|
||||
def logout(self, request, *args, **kwargs):
|
||||
request.auth.delete()
|
||||
user_logged_out.send(sender=request.user.__class__, request=request, user=request.user)
|
||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||
|
||||
@action_decorator(detail=False, methods=['POST'], permission_classes=BaseViewSet.permission_classes)
|
||||
def change_password(self, request):
|
||||
def change_password(self, request, *args, **kwargs):
|
||||
outer_serializer = AuthenticationLoginSerializer(data=request.data)
|
||||
outer_serializer.is_valid(raise_exception=True)
|
||||
|
||||
@ -746,7 +746,7 @@ class TestAuthenticationViewSet(viewsets.ViewSet):
|
||||
renderer_classes = BaseViewSet.renderer_classes
|
||||
parser_classes = BaseViewSet.parser_classes
|
||||
|
||||
def list(self, request):
|
||||
def list(self, request, *args, **kwargs):
|
||||
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
@action_decorator(detail=False, methods=['POST'])
|
||||
|
Loading…
Reference in New Issue
Block a user