See #212: user detail profile

This commit is contained in:
Eliot Berriot 2018-06-19 20:11:40 +02:00
parent 8e6b6f454a
commit 8636b456a8
No known key found for this signature in database
GPG key ID: DD6965E2476E5C27
6 changed files with 231 additions and 4 deletions

View file

@ -70,8 +70,16 @@ class ManageTrackFileActionSerializer(common_serializers.ActionSerializer):
return objects.delete()
class PermissionsSerializer(serializers.Serializer):
def to_representation(self, o):
return o.get_permissions(defaults=self.context.get("default_permissions"))
def to_internal_value(self, o):
return {"permissions": o}
class ManageUserSerializer(serializers.ModelSerializer):
permissions = serializers.SerializerMethodField()
permissions = PermissionsSerializer(source="*")
class Meta:
model = users_models.User
@ -97,5 +105,13 @@ class ManageUserSerializer(serializers.ModelSerializer):
"last_activity",
]
def get_permissions(self, o):
return o.get_permissions(defaults=self.context.get("default_permissions"))
def update(self, instance, validated_data):
instance = super().update(instance, validated_data)
permissions = validated_data.pop("permissions", {})
if permissions:
for p, value in permissions.items():
setattr(instance, "permission_{}".format(p), value)
instance.save(
update_fields=["permission_{}".format(p) for p in permissions.keys()]
)
return instance