Add a viewset to control collection membership.

This commit is contained in:
Tom Hacohen
2020-05-20 13:48:46 +03:00
parent 4ca74bc69b
commit edd88427b0
3 changed files with 61 additions and 8 deletions

View File

@@ -211,7 +211,7 @@ class CollectionSerializer(serializers.ModelSerializer):
models.CollectionMember(collection=instance,
user=validated_data.get('owner'),
accessLevel=models.CollectionMember.AccessLevels.ADMIN,
accessLevel=models.AccessLevels.ADMIN,
encryptionKey=encryption_key,
).save()
@@ -238,6 +238,30 @@ class CollectionSerializer(serializers.ModelSerializer):
return instance
class CollectionMemberSerializer(serializers.ModelSerializer):
username = serializers.SlugRelatedField(
source='user',
slug_field=User.USERNAME_FIELD,
queryset=User.objects
)
encryptionKey = BinaryBase64Field()
class Meta:
model = models.CollectionMember
fields = ('username', 'encryptionKey', 'accessLevel')
def create(self, validated_data):
raise NotImplementedError()
def update(self, instance, validated_data):
with transaction.atomic():
# We only allow updating accessLevel
instance.accessLevel = validated_data.pop('accessLevel')
instance.save()
return instance
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User