Add a viewset to control collection membership.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user