fix(api): allow importing single files using fs-import API endpoint
This commit is contained in:
parent
b4b8a36516
commit
bf1f146b63
|
@ -1,3 +1,5 @@
|
||||||
|
import os
|
||||||
|
import pathlib
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
from django import urls
|
from django import urls
|
||||||
|
@ -884,13 +886,17 @@ class FSImportSerializer(serializers.Serializer):
|
||||||
prune = serializers.BooleanField(required=False, default=True)
|
prune = serializers.BooleanField(required=False, default=True)
|
||||||
outbox = serializers.BooleanField(required=False, default=False)
|
outbox = serializers.BooleanField(required=False, default=False)
|
||||||
broadcast = 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)
|
batch_size = serializers.IntegerField(required=False, default=1000)
|
||||||
verbosity = serializers.IntegerField(required=False, default=1)
|
verbosity = serializers.IntegerField(required=False, default=1)
|
||||||
|
|
||||||
def validate_path(self, value):
|
def validate_path(self, value):
|
||||||
try:
|
try:
|
||||||
utils.browse_dir(settings.MUSIC_DIRECTORY_PATH, value)
|
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")
|
raise serializers.ValidationError("Invalid path")
|
||||||
|
|
||||||
return value
|
return value
|
||||||
|
|
|
@ -1209,6 +1209,7 @@ def fs_import(
|
||||||
prune=True,
|
prune=True,
|
||||||
outbox=False,
|
outbox=False,
|
||||||
broadcast=False,
|
broadcast=False,
|
||||||
|
replace=False,
|
||||||
batch_size=1000,
|
batch_size=1000,
|
||||||
verbosity=1,
|
verbosity=1,
|
||||||
):
|
):
|
||||||
|
@ -1229,7 +1230,7 @@ def fs_import(
|
||||||
"batch_size": batch_size,
|
"batch_size": batch_size,
|
||||||
"async_": False,
|
"async_": False,
|
||||||
"prune": prune,
|
"prune": prune,
|
||||||
"replace": False,
|
"replace": replace,
|
||||||
"verbosity": verbosity,
|
"verbosity": verbosity,
|
||||||
"exit_on_failure": False,
|
"exit_on_failure": False,
|
||||||
"outbox": outbox,
|
"outbox": outbox,
|
||||||
|
|
|
@ -386,6 +386,7 @@ class LibraryViewSet(
|
||||||
prune=serializer.validated_data["prune"],
|
prune=serializer.validated_data["prune"],
|
||||||
outbox=serializer.validated_data["outbox"],
|
outbox=serializer.validated_data["outbox"],
|
||||||
broadcast=serializer.validated_data["broadcast"],
|
broadcast=serializer.validated_data["broadcast"],
|
||||||
|
replace=serializer.validated_data["replace"],
|
||||||
batch_size=serializer.validated_data["batch_size"],
|
batch_size=serializer.validated_data["batch_size"],
|
||||||
verbosity=serializer.validated_data["verbosity"],
|
verbosity=serializer.validated_data["verbosity"],
|
||||||
)
|
)
|
||||||
|
|
|
@ -1528,6 +1528,7 @@ def test_fs_import_post(
|
||||||
prune=True,
|
prune=True,
|
||||||
outbox=False,
|
outbox=False,
|
||||||
broadcast=False,
|
broadcast=False,
|
||||||
|
replace=False,
|
||||||
batch_size=1000,
|
batch_size=1000,
|
||||||
verbosity=1,
|
verbosity=1,
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Allow importing single files using fs-import API endpoint
|
Loading…
Reference in New Issue