@ -67,24 +67,6 @@ from .serializers import (
User = get_user_model ( )
User = get_user_model ( )
def get_fresh_stoken ( obj ) :
try :
del obj . main_item
except AttributeError :
pass
return obj . stoken
def get_fresh_item_stoken ( obj ) :
try :
del obj . content
except AttributeError :
pass
return obj . stoken
class BaseViewSet ( viewsets . ModelViewSet ) :
class BaseViewSet ( viewsets . ModelViewSet ) :
authentication_classes = tuple ( app_settings . API_AUTHENTICATORS )
authentication_classes = tuple ( app_settings . API_AUTHENTICATORS )
permission_classes = tuple ( app_settings . API_PERMISSIONS )
permission_classes = tuple ( app_settings . API_PERMISSIONS )
@ -173,18 +155,18 @@ class CollectionViewSet(BaseViewSet):
serializer . is_valid ( raise_exception = True )
serializer . is_valid ( raise_exception = True )
self . perform_update ( serializer )
self . perform_update ( serializer )
return Response ( { ' stoken ' : get_fresh_stoken ( instance ) } )
return Response ( { } )
def create ( self , request , * args , * * kwargs ) :
def create ( self , request , * args , * * kwargs ) :
serializer = self . serializer_class ( data = request . data , context = self . get_serializer_context ( ) )
serializer = self . serializer_class ( data = request . data , context = self . get_serializer_context ( ) )
if serializer . is_valid ( ) :
if serializer . is_valid ( ) :
try :
try :
instance = serializer. save ( owner = self . request . user )
serializer. save ( owner = self . request . user )
except IntegrityError :
except IntegrityError :
content = { ' code ' : ' integrity_error ' }
content = { ' code ' : ' integrity_error ' }
return Response ( content , status = status . HTTP_400_BAD_REQUEST )
return Response ( content , status = status . HTTP_400_BAD_REQUEST )
return Response ( { ' stoken ' : get_fresh_stoken ( instance ) } , status = status . HTTP_201_CREATED )
return Response ( { } , status = status . HTTP_201_CREATED )
return Response ( serializer . errors , status = status . HTTP_400_BAD_REQUEST )
return Response ( serializer . errors , status = status . HTTP_400_BAD_REQUEST )
@ -298,7 +280,7 @@ class CollectionItemViewSet(BaseViewSet):
queryset , cstoken_rev = self . filter_by_cstoken ( request , queryset )
queryset , cstoken_rev = self . filter_by_cstoken ( request , queryset )
uids , stokens = zip ( * [ ( item [ ' uid ' ] , item . get ( ' stoken ' ) ) for item in serializer . validated_data ] )
uids , stokens = zip ( * [ ( item [ ' uid ' ] , item . get ( ' stoken ' ) ) for item in serializer . validated_data ] )
revs = CollectionItemRevision . objects . filter ( stoken__ uid__in= stokens , current = True )
revs = CollectionItemRevision . objects . filter ( uid__in= stokens , current = True )
queryset = queryset . filter ( uid__in = uids ) . exclude ( revisions__in = revs )
queryset = queryset . filter ( uid__in = uids ) . exclude ( revisions__in = revs )
queryset , new_cstoken = self . get_queryset_cstoken ( queryset )
queryset , new_cstoken = self . get_queryset_cstoken ( queryset )
@ -338,7 +320,6 @@ class CollectionItemViewSet(BaseViewSet):
return Response ( content , status = status . HTTP_400_BAD_REQUEST )
return Response ( content , status = status . HTTP_400_BAD_REQUEST )
ret = {
ret = {
" data " : [ get_fresh_item_stoken ( item ) for item in items ] ,
}
}
return Response ( ret , status = status . HTTP_200_OK )
return Response ( ret , status = status . HTTP_200_OK )
@ -377,7 +358,6 @@ class CollectionItemViewSet(BaseViewSet):
return Response ( content , status = status . HTTP_400_BAD_REQUEST )
return Response ( content , status = status . HTTP_400_BAD_REQUEST )
ret = {
ret = {
" data " : [ get_fresh_item_stoken ( item ) for item in items ] ,
}
}
return Response ( ret , status = status . HTTP_200_OK )
return Response ( ret , status = status . HTTP_200_OK )