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",
|
||||
default=False,
|
||||
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)
|
||||
library = serializers.UUIDField()
|
||||
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):
|
||||
try:
|
||||
|
|
|
@ -983,7 +983,16 @@ def update_track_metadata(audio_metadata, track):
|
|||
|
||||
@celery.app.task(name="music.fs_import")
|
||||
@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":
|
||||
raise ValueError("Invalid import status")
|
||||
|
||||
|
@ -998,13 +1007,13 @@ def fs_import(library, path, import_reference):
|
|||
"reference": import_reference,
|
||||
"watch": False,
|
||||
"interactive": False,
|
||||
"batch_size": 1000,
|
||||
"batch_size": batch_size,
|
||||
"async_": False,
|
||||
"prune": True,
|
||||
"prune": prune,
|
||||
"replace": False,
|
||||
"verbosity": 1,
|
||||
"verbosity": verbosity,
|
||||
"exit_on_failure": False,
|
||||
"outbox": False,
|
||||
"broadcast": False,
|
||||
"outbox": outbox,
|
||||
"broadcast": broadcast,
|
||||
}
|
||||
command.handle(**options)
|
||||
|
|
|
@ -377,6 +377,11 @@ class LibraryViewSet(
|
|||
library_id=serializer.validated_data["library"].pk,
|
||||
path=serializer.validated_data["path"],
|
||||
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)
|
||||
if request.method == "DELETE":
|
||||
|
|
|
@ -1564,7 +1564,14 @@ def test_fs_import_post(
|
|||
|
||||
assert response.status_code == 201
|
||||
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"
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Allow specifying more parameters on fs-import API endpoint
|
Loading…
Reference in New Issue