Disallow creating new collections without a collection type set.

This commit is contained in:
Tom Hacohen 2020-11-01 11:17:44 +02:00
parent f55ebeae7c
commit 422b62d5b2
2 changed files with 4 additions and 10 deletions

View File

@ -273,8 +273,7 @@ class CollectionListMultiSerializer(BetterErrorsMixin, serializers.Serializer):
class CollectionSerializer(BetterErrorsMixin, serializers.ModelSerializer): class CollectionSerializer(BetterErrorsMixin, serializers.ModelSerializer):
collectionKey = CollectionEncryptionKeyField() collectionKey = CollectionEncryptionKeyField()
# FIXME: make required once "collection-type-migration" is done collectionType = CollectionTypeField()
collectionType = CollectionTypeField(required=False)
accessLevel = serializers.SerializerMethodField('get_access_level_from_context') accessLevel = serializers.SerializerMethodField('get_access_level_from_context')
stoken = serializers.CharField(read_only=True) stoken = serializers.CharField(read_only=True)
@ -293,8 +292,7 @@ class CollectionSerializer(BetterErrorsMixin, serializers.ModelSerializer):
def create(self, validated_data): def create(self, validated_data):
"""Function that's called when this serializer creates an item""" """Function that's called when this serializer creates an item"""
collection_key = validated_data.pop('collectionKey') collection_key = validated_data.pop('collectionKey')
# FIXME: remove the None fallback once "collection-type-migration" is done collection_type = validated_data.pop('collectionType')
collection_type = validated_data.pop('collectionType', None)
user = validated_data.get('owner') user = validated_data.get('owner')
main_item_data = validated_data.pop('main_item') main_item_data = validated_data.pop('main_item')
@ -318,11 +316,7 @@ class CollectionSerializer(BetterErrorsMixin, serializers.ModelSerializer):
process_revisions_for_item(main_item, revision_data) process_revisions_for_item(main_item, revision_data)
# FIXME: remove the if statement (and else branch) once "collection-type-migration" is done
if collection_type is not None:
collection_type_obj, _ = models.CollectionType.objects.get_or_create(uid=collection_type, owner=user) collection_type_obj, _ = models.CollectionType.objects.get_or_create(uid=collection_type, owner=user)
else:
collection_type_obj = None
models.CollectionMember(collection=instance, models.CollectionMember(collection=instance,
stoken=models.Stoken.objects.create(), stoken=models.Stoken.objects.create(),

View File

@ -221,7 +221,7 @@ class CollectionViewSet(BaseViewSet):
collection_types = serializer.validated_data['collectionTypes'] collection_types = serializer.validated_data['collectionTypes']
queryset = self.get_queryset() queryset = self.get_queryset()
# FIXME: Remove the isnull part once "collection-type-migration" is done # FIXME: Remove the isnull part once we attach collection types to all objects ("collection-type-migration")
queryset = queryset.filter( queryset = queryset.filter(
Q(members__collectionType__uid__in=collection_types) | Q(members__collectionType__isnull=True)) Q(members__collectionType__uid__in=collection_types) | Q(members__collectionType__isnull=True))