mirror of
https://github.com/meeb/tubesync.git
synced 2025-06-17 18:46:35 +00:00
Merge b5e6b41449
into f5a71592fc
This commit is contained in:
commit
775ab255f9
@ -1,6 +1,6 @@
|
|||||||
from django.core.management.base import BaseCommand, CommandError # noqa
|
from django.core.management.base import BaseCommand, CommandError # noqa
|
||||||
from django.db.transaction import atomic
|
from django.db.transaction import atomic
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _ # noqa
|
||||||
from background_task.models import Task
|
from background_task.models import Task
|
||||||
from common.logger import log
|
from common.logger import log
|
||||||
from sync.models import Source
|
from sync.models import Source
|
||||||
@ -18,11 +18,7 @@ class Command(BaseCommand):
|
|||||||
Task.objects.all().delete()
|
Task.objects.all().delete()
|
||||||
# Iter all sources, creating new tasks
|
# Iter all sources, creating new tasks
|
||||||
for source in Source.objects.all():
|
for source in Source.objects.all():
|
||||||
verbose_name = _('Check download directory exists for source "{}"')
|
check_source_directory_exists(str(source.pk))
|
||||||
check_source_directory_exists(
|
|
||||||
str(source.pk),
|
|
||||||
verbose_name=verbose_name.format(source.name),
|
|
||||||
)
|
|
||||||
# Recreate the initial indexing task
|
# Recreate the initial indexing task
|
||||||
log.info(f'Resetting tasks for source: {source}')
|
log.info(f'Resetting tasks for source: {source}')
|
||||||
verbose_name = _('Index media from source "{}"')
|
verbose_name = _('Index media from source "{}"')
|
||||||
|
@ -34,7 +34,7 @@ def source_pre_save(sender, instance, **kwargs):
|
|||||||
return
|
return
|
||||||
|
|
||||||
args = ( str(instance.pk), )
|
args = ( str(instance.pk), )
|
||||||
check_source_directory_exists.now(*args)
|
check_source_directory_exists.call_local(*args)
|
||||||
existing_dirpath = existing_source.directory_path.resolve(strict=True)
|
existing_dirpath = existing_source.directory_path.resolve(strict=True)
|
||||||
new_dirpath = instance.directory_path.resolve(strict=False)
|
new_dirpath = instance.directory_path.resolve(strict=False)
|
||||||
if existing_dirpath != new_dirpath:
|
if existing_dirpath != new_dirpath:
|
||||||
@ -105,11 +105,7 @@ def source_pre_save(sender, instance, **kwargs):
|
|||||||
def source_post_save(sender, instance, created, **kwargs):
|
def source_post_save(sender, instance, created, **kwargs):
|
||||||
# Check directory exists and create an indexing task for newly created sources
|
# Check directory exists and create an indexing task for newly created sources
|
||||||
if created:
|
if created:
|
||||||
verbose_name = _('Check download directory exists for source "{}"')
|
check_source_directory_exists(str(instance.pk))
|
||||||
check_source_directory_exists(
|
|
||||||
str(instance.pk),
|
|
||||||
verbose_name=verbose_name.format(instance.name),
|
|
||||||
)
|
|
||||||
if instance.source_type != Val(YouTube_SourceType.PLAYLIST) and instance.copy_channel_images:
|
if instance.source_type != Val(YouTube_SourceType.PLAYLIST) and instance.copy_channel_images:
|
||||||
download_source_images(str(instance.pk))
|
download_source_images(str(instance.pk))
|
||||||
if instance.index_schedule > 0:
|
if instance.index_schedule > 0:
|
||||||
@ -139,7 +135,6 @@ def source_pre_delete(sender, instance, **kwargs):
|
|||||||
instance.deactivate()
|
instance.deactivate()
|
||||||
log.info(f'Deleting tasks for source: {instance.name}')
|
log.info(f'Deleting tasks for source: {instance.name}')
|
||||||
delete_task_by_source('sync.tasks.index_source_task', instance.pk)
|
delete_task_by_source('sync.tasks.index_source_task', instance.pk)
|
||||||
delete_task_by_source('sync.tasks.check_source_directory_exists', instance.pk)
|
|
||||||
delete_task_by_source('sync.tasks.rename_all_media_for_source', instance.pk)
|
delete_task_by_source('sync.tasks.rename_all_media_for_source', instance.pk)
|
||||||
delete_task_by_source('sync.tasks.save_all_media_for_source', instance.pk)
|
delete_task_by_source('sync.tasks.save_all_media_for_source', instance.pk)
|
||||||
|
|
||||||
@ -166,7 +161,6 @@ def source_post_delete(sender, instance, **kwargs):
|
|||||||
source = instance
|
source = instance
|
||||||
log.info(f'Deleting tasks for removed source: {source.name}')
|
log.info(f'Deleting tasks for removed source: {source.name}')
|
||||||
delete_task_by_source('sync.tasks.index_source_task', instance.pk)
|
delete_task_by_source('sync.tasks.index_source_task', instance.pk)
|
||||||
delete_task_by_source('sync.tasks.check_source_directory_exists', instance.pk)
|
|
||||||
delete_task_by_source('sync.tasks.rename_all_media_for_source', instance.pk)
|
delete_task_by_source('sync.tasks.rename_all_media_for_source', instance.pk)
|
||||||
delete_task_by_source('sync.tasks.save_all_media_for_source', instance.pk)
|
delete_task_by_source('sync.tasks.save_all_media_for_source', instance.pk)
|
||||||
|
|
||||||
|
@ -61,7 +61,6 @@ def map_task_to_instance(task):
|
|||||||
TASK_MAP = {
|
TASK_MAP = {
|
||||||
'sync.tasks.migrate_to_metadata': Media,
|
'sync.tasks.migrate_to_metadata': Media,
|
||||||
'sync.tasks.index_source_task': Source,
|
'sync.tasks.index_source_task': Source,
|
||||||
'sync.tasks.check_source_directory_exists': Source,
|
|
||||||
'sync.tasks.download_media_thumbnail': Media,
|
'sync.tasks.download_media_thumbnail': Media,
|
||||||
'sync.tasks.download_media': Media,
|
'sync.tasks.download_media': Media,
|
||||||
'sync.tasks.download_media_metadata': Media,
|
'sync.tasks.download_media_metadata': Media,
|
||||||
@ -536,7 +535,7 @@ def index_source_task(source_id):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@background(schedule=dict(priority=0, run_at=0), queue=Val(TaskQueue.FS))
|
@dynamic_retry(db_task, priority=100, retries=15, queue=Val(TaskQueue.FS))
|
||||||
def check_source_directory_exists(source_id):
|
def check_source_directory_exists(source_id):
|
||||||
'''
|
'''
|
||||||
Checks the output directory for a source exists and is writable, if it does
|
Checks the output directory for a source exists and is writable, if it does
|
||||||
@ -547,7 +546,7 @@ def check_source_directory_exists(source_id):
|
|||||||
source = Source.objects.get(pk=source_id)
|
source = Source.objects.get(pk=source_id)
|
||||||
except Source.DoesNotExist as e:
|
except Source.DoesNotExist as e:
|
||||||
# Task triggered but the Source has been deleted, delete the task
|
# Task triggered but the Source has been deleted, delete the task
|
||||||
raise InvalidTaskError(_('no such source')) from e
|
raise CancelExecution(_('no such source'), retry=False) from e
|
||||||
# Check the source output directory exists
|
# Check the source output directory exists
|
||||||
if not source.directory_exists():
|
if not source.directory_exists():
|
||||||
# Try to create it
|
# Try to create it
|
||||||
|
@ -212,7 +212,7 @@ class FrontEndTestCase(TestCase):
|
|||||||
args=(source_uuid,))[0]
|
args=(source_uuid,))[0]
|
||||||
self.assertEqual(task.queue, Val(TaskQueue.NET))
|
self.assertEqual(task.queue, Val(TaskQueue.NET))
|
||||||
# Run the check_source_directory_exists task
|
# Run the check_source_directory_exists task
|
||||||
check_source_directory_exists.now(source_uuid)
|
check_source_directory_exists.call_local(source_uuid)
|
||||||
# Check the source is now on the source overview page
|
# Check the source is now on the source overview page
|
||||||
response = c.get('/sources')
|
response = c.get('/sources')
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
@ -994,11 +994,7 @@ class ResetTasks(FormView):
|
|||||||
Task.objects.all().delete()
|
Task.objects.all().delete()
|
||||||
# Iter all tasks
|
# Iter all tasks
|
||||||
for source in Source.objects.all():
|
for source in Source.objects.all():
|
||||||
verbose_name = _('Check download directory exists for source "{}"')
|
check_source_directory_exists(str(source.pk))
|
||||||
check_source_directory_exists(
|
|
||||||
str(source.pk),
|
|
||||||
verbose_name=verbose_name.format(source.name),
|
|
||||||
)
|
|
||||||
# Recreate the initial indexing task
|
# Recreate the initial indexing task
|
||||||
verbose_name = _('Index media from source "{}"')
|
verbose_name = _('Index media from source "{}"')
|
||||||
index_source_task(
|
index_source_task(
|
||||||
|
@ -57,12 +57,16 @@ DJANGO_HUEY = {
|
|||||||
'limited': sqlite_tasks('limited', prefix='net'),
|
'limited': sqlite_tasks('limited', prefix='net'),
|
||||||
'network': sqlite_tasks('network'),
|
'network': sqlite_tasks('network'),
|
||||||
},
|
},
|
||||||
|
'verbose': None if 'true' == getenv('TUBESYNC_DEBUG', False).strip().lower() else False,
|
||||||
}
|
}
|
||||||
for django_huey_queue in DJANGO_HUEY['queues'].values():
|
for django_huey_queue in DJANGO_HUEY['queues'].values():
|
||||||
connection = django_huey_queue.get('connection')
|
connection = django_huey_queue.get('connection')
|
||||||
if connection:
|
if connection:
|
||||||
filepath = Path('/.' + connection.get('filename') or '').resolve(strict=False)
|
filepath = Path('/.' + connection.get('filename') or '').resolve(strict=False)
|
||||||
filepath.parent.mkdir(exist_ok=True, parents=True)
|
filepath.parent.mkdir(exist_ok=True, parents=True)
|
||||||
|
consumer = django_huey_queue.get('consumer')
|
||||||
|
if consumer:
|
||||||
|
consumer['verbose'] = DJANGO_HUEY.get('verbose', False)
|
||||||
|
|
||||||
|
|
||||||
TEMPLATES = [
|
TEMPLATES = [
|
||||||
|
Loading…
Reference in New Issue
Block a user