Fix creation of collection membership when creating collections.
This commit is contained in:
parent
7a38e26872
commit
771d2d013d
@ -56,6 +56,22 @@ class CollectionSerializer(serializers.ModelSerializer):
|
|||||||
def get_ctag(self, obj):
|
def get_ctag(self, obj):
|
||||||
return 'FIXME'
|
return 'FIXME'
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
"""Function that's called when this serializer creates an item"""
|
||||||
|
encryption_key = validated_data.pop('encryptionKey')
|
||||||
|
instance = self.__class__.Meta.model(**validated_data)
|
||||||
|
|
||||||
|
print(validated_data)
|
||||||
|
with transaction.atomic():
|
||||||
|
instance.save()
|
||||||
|
models.CollectionMember(collection=instance,
|
||||||
|
user=validated_data.get('owner'),
|
||||||
|
accessLevel=models.CollectionMember.AccessLevels.ADMIN,
|
||||||
|
encryptionKey=encryption_key,
|
||||||
|
).save()
|
||||||
|
|
||||||
|
return instance
|
||||||
|
|
||||||
|
|
||||||
class CollectionItemChunkSerializer(serializers.ModelSerializer):
|
class CollectionItemChunkSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.db import IntegrityError, transaction
|
from django.db import IntegrityError
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ from rest_framework.decorators import action as action_decorator
|
|||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
||||||
from . import app_settings, paginators
|
from . import app_settings, paginators
|
||||||
from .models import Collection, CollectionItem, CollectionMember
|
from .models import Collection, CollectionItem
|
||||||
from .serializers import (
|
from .serializers import (
|
||||||
CollectionSerializer,
|
CollectionSerializer,
|
||||||
CollectionItemSerializer,
|
CollectionItemSerializer,
|
||||||
@ -72,13 +72,7 @@ class CollectionViewSet(BaseViewSet):
|
|||||||
serializer = self.serializer_class(data=request.data)
|
serializer = self.serializer_class(data=request.data)
|
||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
try:
|
try:
|
||||||
with transaction.atomic():
|
serializer.save(owner=self.request.user)
|
||||||
col = serializer.save(owner=self.request.user)
|
|
||||||
CollectionMember(collection=col,
|
|
||||||
user=self.request.user,
|
|
||||||
accessLevel=CollectionMember.AccessLevels.ADMIN,
|
|
||||||
encryptionKey=serializer.validated_data['encryptionKey']
|
|
||||||
).save()
|
|
||||||
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)
|
||||||
|
Loading…
Reference in New Issue
Block a user