소스 검색

Spin TSV imports off to tasks

Colin Powell 2 년 전
부모
커밋
e345631e27
3개의 변경된 파일12개의 추가작업 그리고 8개의 파일을 삭제
  1. 0 6
      vrobbler/apps/scrobbles/models.py
  2. 10 1
      vrobbler/apps/scrobbles/tasks.py
  3. 2 1
      vrobbler/apps/scrobbles/views.py

+ 0 - 6
vrobbler/apps/scrobbles/models.py

@@ -37,12 +37,6 @@ class AudioScrobblerTSVImport(TimeStampedModel):
             return f"Audioscrobbler TSV upload: {self.tsv_file.path}"
         return f"Audioscrobbler TSV upload {self.id}"
 
-    def save(self, **kwargs):
-        """On save, attempt to import the TSV file"""
-        super().save(**kwargs)
-        self.process()
-        return
-
     def process(self, force=False):
         from scrobbles.tsv import process_audioscrobbler_tsv_file
 

+ 10 - 1
vrobbler/apps/scrobbles/tasks.py

@@ -1,7 +1,7 @@
 import logging
 from celery import shared_task
 
-from scrobbles.models import LastFmImport
+from scrobbles.models import AudioScrobblerTSVImport, LastFmImport
 
 logger = logging.getLogger(__name__)
 
@@ -13,3 +13,12 @@ def process_lastfm_import(import_id):
         logger.warn(f"LastFmImport not found with id {import_id}")
 
     lastfm_import.process()
+
+
+@shared_task
+def process_tsv_import(import_id):
+    tsv_import = AudioScrobblerTSVImport.objects.filter(id=import_id).first()
+    if not tsv_import:
+        logger.warn(f"AudioScrobblerTSVImport not found with id {import_id}")
+
+    tsv_import.process()

+ 2 - 1
vrobbler/apps/scrobbles/views.py

@@ -48,7 +48,7 @@ from scrobbles.serializers import (
     AudioScrobblerTSVImportSerializer,
     ScrobbleSerializer,
 )
-from scrobbles.tasks import process_lastfm_import
+from scrobbles.tasks import process_lastfm_import, process_tsv_import
 from scrobbles.thesportsdb import lookup_event_from_thesportsdb
 
 logger = logging.getLogger(__name__)
@@ -173,6 +173,7 @@ class AudioScrobblerImportCreateView(
         self.object = form.save(commit=False)
         self.object.user = self.request.user
         self.object.save()
+        process_tsv_import.delay(self.object.id)
         return HttpResponseRedirect(self.get_success_url())