Detail library view with settings update
This commit is contained in:
parent
f4f75dcb4f
commit
472cc7e26a
7 changed files with 228 additions and 11 deletions
|
|
@ -112,6 +112,8 @@ class APIActorSerializer(serializers.ModelSerializer):
|
|||
'manually_approves_followers',
|
||||
|
||||
]
|
||||
|
||||
|
||||
class LibraryActorSerializer(ActorSerializer):
|
||||
url = serializers.ListField(
|
||||
child=serializers.JSONField())
|
||||
|
|
@ -137,33 +139,52 @@ class LibraryActorSerializer(ActorSerializer):
|
|||
return validated_data
|
||||
|
||||
|
||||
class APIFollowSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = models.Follow
|
||||
fields = [
|
||||
'uuid',
|
||||
'actor',
|
||||
'target',
|
||||
'approved',
|
||||
'creation_date',
|
||||
'modification_date',
|
||||
]
|
||||
|
||||
|
||||
class APILibrarySerializer(serializers.ModelSerializer):
|
||||
actor = APIActorSerializer
|
||||
actor = APIActorSerializer()
|
||||
follow = APIFollowSerializer()
|
||||
|
||||
class Meta:
|
||||
model = models.Library
|
||||
fields = [
|
||||
|
||||
read_only_fields = [
|
||||
'actor',
|
||||
'autoimport',
|
||||
'federation_enabled',
|
||||
'download_files',
|
||||
'tracks_count',
|
||||
'url',
|
||||
'uuid',
|
||||
'creation_date',
|
||||
'url',
|
||||
'tracks_count',
|
||||
'follow',
|
||||
'fetched_date',
|
||||
'modification_date',
|
||||
'creation_date',
|
||||
]
|
||||
fields = [
|
||||
'autoimport',
|
||||
'federation_enabled',
|
||||
'download_files',
|
||||
] + read_only_fields
|
||||
|
||||
|
||||
class APILibraryCreateSerializer(serializers.ModelSerializer):
|
||||
actor = serializers.URLField()
|
||||
federation_enabled = serializers.BooleanField()
|
||||
uuid = serializers.UUIDField(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = models.Library
|
||||
fields = [
|
||||
'uuid',
|
||||
'actor',
|
||||
'autoimport',
|
||||
'federation_enabled',
|
||||
|
|
|
|||
|
|
@ -166,6 +166,8 @@ class MusicFilesViewSet(FederationMixin, viewsets.GenericViewSet):
|
|||
|
||||
|
||||
class LibraryViewSet(
|
||||
mixins.RetrieveModelMixin,
|
||||
mixins.UpdateModelMixin,
|
||||
mixins.ListModelMixin,
|
||||
viewsets.GenericViewSet):
|
||||
permission_classes = [rest_permissions.DjangoModelPermissions]
|
||||
|
|
@ -173,6 +175,7 @@ class LibraryViewSet(
|
|||
'actor',
|
||||
'follow',
|
||||
)
|
||||
lookup_field = 'uuid'
|
||||
filter_class = filters.LibraryFilter
|
||||
serializer_class = serializers.APILibrarySerializer
|
||||
ordering_fields = (
|
||||
|
|
|
|||
|
|
@ -275,3 +275,34 @@ def test_can_list_libraries(factories, superuser_api_client):
|
|||
serializers.APILibrarySerializer(library1).data,
|
||||
serializers.APILibrarySerializer(library2).data,
|
||||
]
|
||||
|
||||
|
||||
def test_can_detail_library(factories, superuser_api_client):
|
||||
library = factories['federation.Library']()
|
||||
|
||||
url = reverse(
|
||||
'api:v1:federation:libraries-detail',
|
||||
kwargs={'uuid': str(library.uuid)})
|
||||
response = superuser_api_client.get(url)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.data == serializers.APILibrarySerializer(library).data
|
||||
|
||||
|
||||
def test_can_patch_library(factories, superuser_api_client):
|
||||
library = factories['federation.Library']()
|
||||
data = {
|
||||
'federation_enabled': not library.federation_enabled,
|
||||
'download_files': not library.download_files,
|
||||
'autoimport': not library.autoimport,
|
||||
}
|
||||
url = reverse(
|
||||
'api:v1:federation:libraries-detail',
|
||||
kwargs={'uuid': str(library.uuid)})
|
||||
response = superuser_api_client.patch(url, data)
|
||||
|
||||
assert response.status_code == 200
|
||||
library.refresh_from_db()
|
||||
|
||||
for k, v in data.items():
|
||||
assert getattr(library, k) == v
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue