diff --git a/api/funkwhale_api/common/schema.yml b/api/funkwhale_api/common/schema.yml index 9d0e53447..df4076f63 100644 --- a/api/funkwhale_api/common/schema.yml +++ b/api/funkwhale_api/common/schema.yml @@ -9291,16 +9291,25 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PatchedUploadForOwnerRequest' + type: array + items: + $ref: '#/components/schemas/UploadBulkUpdateRequest' application/x-www-form-urlencoded: schema: - $ref: '#/components/schemas/PatchedUploadForOwnerRequest' + type: array + items: + $ref: '#/components/schemas/UploadBulkUpdateRequest' multipart/form-data: schema: - $ref: '#/components/schemas/PatchedUploadForOwnerRequest' + type: array + items: + $ref: '#/components/schemas/UploadBulkUpdateRequest' application/activity+json: schema: - $ref: '#/components/schemas/PatchedUploadForOwnerRequest' + type: array + items: + $ref: '#/components/schemas/UploadBulkUpdateRequest' + required: true security: - oauth2: [] - ApplicationToken: [] @@ -18957,16 +18966,25 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PatchedUploadForOwnerRequest' + type: array + items: + $ref: '#/components/schemas/UploadBulkUpdateRequest' application/x-www-form-urlencoded: schema: - $ref: '#/components/schemas/PatchedUploadForOwnerRequest' + type: array + items: + $ref: '#/components/schemas/UploadBulkUpdateRequest' multipart/form-data: schema: - $ref: '#/components/schemas/PatchedUploadForOwnerRequest' + type: array + items: + $ref: '#/components/schemas/UploadBulkUpdateRequest' application/activity+json: schema: - $ref: '#/components/schemas/PatchedUploadForOwnerRequest' + type: array + items: + $ref: '#/components/schemas/UploadBulkUpdateRequest' + required: true security: - oauth2: [] - ApplicationToken: [] @@ -24609,6 +24627,8 @@ components: allOf: - $ref: '#/components/schemas/ImportStatusEnum' default: pending + privacy_level: + $ref: '#/components/schemas/LibraryPrivacyLevelEnum' import_metadata: {} import_reference: type: string @@ -25667,6 +25687,17 @@ components: - mimetype - size - uuid + UploadBulkUpdateRequest: + type: object + properties: + uuid: + type: string + format: uuid + privacy_level: + $ref: '#/components/schemas/LibraryPrivacyLevelEnum' + required: + - privacy_level + - uuid UploadForOwner: type: object properties: @@ -25713,6 +25744,8 @@ components: allOf: - $ref: '#/components/schemas/ImportStatusEnum' default: pending + privacy_level: + $ref: '#/components/schemas/LibraryPrivacyLevelEnum' import_details: readOnly: true import_metadata: {} @@ -25733,6 +25766,7 @@ components: - import_details - metadata - mimetype + - privacy_level - size - uuid UploadForOwnerRequest: @@ -25753,6 +25787,8 @@ components: allOf: - $ref: '#/components/schemas/ImportStatusEnum' default: pending + privacy_level: + $ref: '#/components/schemas/LibraryPrivacyLevelEnum' import_metadata: {} import_reference: type: string @@ -25768,6 +25804,7 @@ components: writeOnly: true required: - audio_file + - privacy_level Usage: type: object properties: diff --git a/api/funkwhale_api/music/serializers.py b/api/funkwhale_api/music/serializers.py index c01585759..ab37f1831 100644 --- a/api/funkwhale_api/music/serializers.py +++ b/api/funkwhale_api/music/serializers.py @@ -372,6 +372,9 @@ class UploadSerializer(serializers.ModelSerializer): required=False, filters=lambda context: {"actor": context["user"].actor}, ) + privacy_level = serializers.ChoiceField( + choices=models.LIBRARY_PRIVACY_LEVEL_CHOICES + ) channel = common_serializers.RelatedField( "uuid", ChannelSerializer(), @@ -395,6 +398,7 @@ class UploadSerializer(serializers.ModelSerializer): "size", "import_date", "import_status", + "privacy_level", ] read_only_fields = [ @@ -495,6 +499,7 @@ class UploadForOwnerSerializer(UploadSerializer): r = super().to_representation(obj) if "audio_file" in r: del r["audio_file"] + r["privacy_level"] = obj.library.privacy_level return r def validate(self, validated_data): diff --git a/api/funkwhale_api/music/views.py b/api/funkwhale_api/music/views.py index 0e9420f9c..25a483b12 100644 --- a/api/funkwhale_api/music/views.py +++ b/api/funkwhale_api/music/views.py @@ -798,6 +798,9 @@ class UploadViewSet( cover_data["content"] = base64.b64encode(cover_data["content"]) return Response(payload, status=200) + @extend_schema( + request=serializers.UploadBulkUpdateSerializer(many=True), + ) @action(detail=False, methods=["patch"]) def bulk_update(self, request, *args, **kwargs): """