fix(api): allow importing single files using fs-import API endpoint

This commit is contained in:
JuniorJPDJ 2024-07-09 00:50:21 +02:00
parent b4b8a36516
commit bf1f146b63
5 changed files with 12 additions and 2 deletions

View File

@ -1,3 +1,5 @@
import os
import pathlib
import urllib.parse
from django import urls
@ -884,13 +886,17 @@ class FSImportSerializer(serializers.Serializer):
prune = serializers.BooleanField(required=False, default=True)
outbox = serializers.BooleanField(required=False, default=False)
broadcast = serializers.BooleanField(required=False, default=False)
replace = serializers.BooleanField(required=False, default=False)
batch_size = serializers.IntegerField(required=False, default=1000)
verbosity = serializers.IntegerField(required=False, default=1)
def validate_path(self, value):
try:
utils.browse_dir(settings.MUSIC_DIRECTORY_PATH, value)
except (NotADirectoryError, FileNotFoundError, ValueError):
except NotADirectoryError:
if not os.path.isfile(pathlib.Path(settings.MUSIC_DIRECTORY_PATH) / value):
raise serializers.ValidationError("Invalid path")
except (FileNotFoundError, ValueError):
raise serializers.ValidationError("Invalid path")
return value

View File

@ -1209,6 +1209,7 @@ def fs_import(
prune=True,
outbox=False,
broadcast=False,
replace=False,
batch_size=1000,
verbosity=1,
):
@ -1229,7 +1230,7 @@ def fs_import(
"batch_size": batch_size,
"async_": False,
"prune": prune,
"replace": False,
"replace": replace,
"verbosity": verbosity,
"exit_on_failure": False,
"outbox": outbox,

View File

@ -386,6 +386,7 @@ class LibraryViewSet(
prune=serializer.validated_data["prune"],
outbox=serializer.validated_data["outbox"],
broadcast=serializer.validated_data["broadcast"],
replace=serializer.validated_data["replace"],
batch_size=serializer.validated_data["batch_size"],
verbosity=serializer.validated_data["verbosity"],
)

View File

@ -1528,6 +1528,7 @@ def test_fs_import_post(
prune=True,
outbox=False,
broadcast=False,
replace=False,
batch_size=1000,
verbosity=1,
)

View File

@ -0,0 +1 @@
Allow importing single files using fs-import API endpoint