feat(api): add additional parameters to fs-import endpoint
This commit is contained in:
parent
40935ec5ce
commit
b50b5cb661
|
@ -202,7 +202,7 @@ class Command(BaseCommand):
|
||||||
dest="prune",
|
dest="prune",
|
||||||
default=False,
|
default=False,
|
||||||
help=(
|
help=(
|
||||||
"Once the import is completed, prune tracks, ablums and artists that aren't linked to any upload."
|
"Once the import is completed, prune tracks, albums and artists that aren't linked to any upload."
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -833,6 +833,11 @@ class FSImportSerializer(serializers.Serializer):
|
||||||
path = serializers.CharField(allow_blank=True)
|
path = serializers.CharField(allow_blank=True)
|
||||||
library = serializers.UUIDField()
|
library = serializers.UUIDField()
|
||||||
import_reference = serializers.CharField()
|
import_reference = serializers.CharField()
|
||||||
|
prune = serializers.BooleanField(required=False, default=True)
|
||||||
|
outbox = serializers.BooleanField(required=False, default=False)
|
||||||
|
broadcast = 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):
|
def validate_path(self, value):
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -983,7 +983,16 @@ def update_track_metadata(audio_metadata, track):
|
||||||
|
|
||||||
@celery.app.task(name="music.fs_import")
|
@celery.app.task(name="music.fs_import")
|
||||||
@celery.require_instance(models.Library.objects.all(), "library")
|
@celery.require_instance(models.Library.objects.all(), "library")
|
||||||
def fs_import(library, path, import_reference):
|
def fs_import(
|
||||||
|
library,
|
||||||
|
path,
|
||||||
|
import_reference,
|
||||||
|
prune=True,
|
||||||
|
outbox=False,
|
||||||
|
broadcast=False,
|
||||||
|
batch_size=1000,
|
||||||
|
verbosity=1,
|
||||||
|
):
|
||||||
if cache.get("fs-import:status") != "pending":
|
if cache.get("fs-import:status") != "pending":
|
||||||
raise ValueError("Invalid import status")
|
raise ValueError("Invalid import status")
|
||||||
|
|
||||||
|
@ -998,13 +1007,13 @@ def fs_import(library, path, import_reference):
|
||||||
"reference": import_reference,
|
"reference": import_reference,
|
||||||
"watch": False,
|
"watch": False,
|
||||||
"interactive": False,
|
"interactive": False,
|
||||||
"batch_size": 1000,
|
"batch_size": batch_size,
|
||||||
"async_": False,
|
"async_": False,
|
||||||
"prune": True,
|
"prune": prune,
|
||||||
"replace": False,
|
"replace": False,
|
||||||
"verbosity": 1,
|
"verbosity": verbosity,
|
||||||
"exit_on_failure": False,
|
"exit_on_failure": False,
|
||||||
"outbox": False,
|
"outbox": outbox,
|
||||||
"broadcast": False,
|
"broadcast": broadcast,
|
||||||
}
|
}
|
||||||
command.handle(**options)
|
command.handle(**options)
|
||||||
|
|
|
@ -377,6 +377,11 @@ class LibraryViewSet(
|
||||||
library_id=serializer.validated_data["library"].pk,
|
library_id=serializer.validated_data["library"].pk,
|
||||||
path=serializer.validated_data["path"],
|
path=serializer.validated_data["path"],
|
||||||
import_reference=serializer.validated_data["import_reference"],
|
import_reference=serializer.validated_data["import_reference"],
|
||||||
|
prune=serializer.validated_data["prune"],
|
||||||
|
outbox=serializer.validated_data["outbox"],
|
||||||
|
broadcast=serializer.validated_data["broadcast"],
|
||||||
|
batch_size=serializer.validated_data["batch_size"],
|
||||||
|
verbosity=serializer.validated_data["verbosity"],
|
||||||
)
|
)
|
||||||
return Response(status=201)
|
return Response(status=201)
|
||||||
if request.method == "DELETE":
|
if request.method == "DELETE":
|
||||||
|
|
|
@ -1564,7 +1564,14 @@ def test_fs_import_post(
|
||||||
|
|
||||||
assert response.status_code == 201
|
assert response.status_code == 201
|
||||||
fs_import.assert_called_once_with(
|
fs_import.assert_called_once_with(
|
||||||
path="test", library_id=library.pk, import_reference="test"
|
path="test",
|
||||||
|
library_id=library.pk,
|
||||||
|
import_reference="test",
|
||||||
|
prune=True,
|
||||||
|
outbox=False,
|
||||||
|
broadcast=False,
|
||||||
|
batch_size=1000,
|
||||||
|
verbosity=1,
|
||||||
)
|
)
|
||||||
assert cache.get("fs-import:status") == "pending"
|
assert cache.get("fs-import:status") == "pending"
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Allow specifying more parameters on fs-import API endpoint
|
Loading…
Reference in New Issue