See #228: now use our new action logic for library track import

This commit is contained in:
Eliot Berriot 2018-05-23 21:50:23 +02:00
parent f1a1b93ee5
commit ba4b6f6ba6
No known key found for this signature in database
GPG key ID: DD6965E2476E5C27
9 changed files with 109 additions and 73 deletions

View file

@ -10,8 +10,11 @@ from rest_framework import serializers
from dynamic_preferences.registries import global_preferences_registry
from funkwhale_api.common import utils as funkwhale_utils
from funkwhale_api.common import serializers as common_serializers
from funkwhale_api.music import models as music_models
from funkwhale_api.music import tasks as music_tasks
from . import activity
from . import filters
from . import models
from . import utils
@ -806,3 +809,29 @@ class CollectionSerializer(serializers.Serializer):
if self.context.get('include_ap_context', True):
d['@context'] = AP_CONTEXT
return d
class LibraryTrackActionSerializer(common_serializers.ActionSerializer):
actions = ['import']
filterset_class = filters.LibraryTrackFilter
@transaction.atomic
def handle_import(self, objects):
batch = music_models.ImportBatch.objects.create(
source='federation',
submitted_by=self.context['submitted_by']
)
for lt in objects:
job = music_models.ImportJob.objects.create(
batch=batch,
library_track=lt,
mbid=lt.mbid,
source=lt.url,
)
funkwhale_utils.on_commit(
music_tasks.import_job_run.delay,
import_job_id=job.pk,
use_acoustid=False,
)
return {'batch': {'id': batch.pk}}