feat(backend): [WIP] expose `privacy_level` in `Upload` object

This commit is contained in:
upsiflu 2025-03-26 13:19:05 +01:00
parent 70192906ba
commit 33a5b70435
3 changed files with 53 additions and 8 deletions

View File

@ -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:

View File

@ -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):

View File

@ -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):
"""