mirror of
https://github.com/meeb/tubesync.git
synced 2025-06-26 15:06:36 +00:00
move saving all media items linked to a source when the source is saved to recalculate media skip status to background task, resolves #94
This commit is contained in:
parent
94dbe8bf48
commit
b6cec8ab11
@ -67,10 +67,13 @@ def source_post_save(sender, instance, created, **kwargs):
|
|||||||
verbose_name=verbose_name.format(instance.name),
|
verbose_name=verbose_name.format(instance.name),
|
||||||
remove_existing_tasks=True
|
remove_existing_tasks=True
|
||||||
)
|
)
|
||||||
# Trigger the post_save signal for each media item linked to this source as various
|
verbose_name = _('Checking all media for source "{}"')
|
||||||
# flags may need to be recalculated
|
save_all_media_for_source(
|
||||||
for media in Media.objects.filter(source=instance):
|
str(instance.pk),
|
||||||
media.save()
|
priority=0,
|
||||||
|
verbose_name=verbose_name.format(instance.name),
|
||||||
|
remove_existing_tasks=True
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@receiver(pre_delete, sender=Source)
|
@receiver(pre_delete, sender=Source)
|
||||||
@ -82,7 +85,6 @@ def source_pre_delete(sender, instance, **kwargs):
|
|||||||
media.delete()
|
media.delete()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=Source)
|
@receiver(post_delete, sender=Source)
|
||||||
def source_post_delete(sender, instance, **kwargs):
|
def source_post_delete(sender, instance, **kwargs):
|
||||||
# Triggered after a source is deleted
|
# Triggered after a source is deleted
|
||||||
@ -173,8 +175,6 @@ def media_post_save(sender, instance, created, **kwargs):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@receiver(pre_delete, sender=Media)
|
@receiver(pre_delete, sender=Media)
|
||||||
def media_pre_delete(sender, instance, **kwargs):
|
def media_pre_delete(sender, instance, **kwargs):
|
||||||
# Triggered before media is deleted, delete any scheduled tasks
|
# Triggered before media is deleted, delete any scheduled tasks
|
||||||
@ -195,7 +195,6 @@ def media_pre_delete(sender, instance, **kwargs):
|
|||||||
delete_file(file)
|
delete_file(file)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=Media)
|
@receiver(post_delete, sender=Media)
|
||||||
def media_post_delete(sender, instance, **kwargs):
|
def media_post_delete(sender, instance, **kwargs):
|
||||||
# Schedule a task to update media servers
|
# Schedule a task to update media servers
|
||||||
|
@ -49,6 +49,7 @@ def map_task_to_instance(task):
|
|||||||
'sync.tasks.check_source_directory_exists': 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.save_all_media_for_source': Source,
|
||||||
}
|
}
|
||||||
MODEL_URL_MAP = {
|
MODEL_URL_MAP = {
|
||||||
Source: 'sync:source',
|
Source: 'sync:source',
|
||||||
@ -464,3 +465,24 @@ def rescan_media_server(mediaserver_id):
|
|||||||
# Request an rescan / update
|
# Request an rescan / update
|
||||||
log.info(f'Updating media server: {mediaserver}')
|
log.info(f'Updating media server: {mediaserver}')
|
||||||
mediaserver.update()
|
mediaserver.update()
|
||||||
|
|
||||||
|
|
||||||
|
@background(schedule=0)
|
||||||
|
def save_all_media_for_source(source_id):
|
||||||
|
'''
|
||||||
|
Iterates all media items linked to a source and saves them to
|
||||||
|
trigger the post_save signal for every media item. Used when a
|
||||||
|
source has its parameters changed and all media needs to be
|
||||||
|
checked to see if its download status has changed.
|
||||||
|
'''
|
||||||
|
try:
|
||||||
|
source = Source.objects.get(pk=source_id)
|
||||||
|
except Source.DoesNotExist:
|
||||||
|
# Task triggered but the source no longer exists, do nothing
|
||||||
|
log.error(f'Task save_all_media_for_source(pk={source_id}) called but no '
|
||||||
|
f'source exists with ID: {source_id}')
|
||||||
|
return
|
||||||
|
# Trigger the post_save signal for each media item linked to this source as various
|
||||||
|
# flags may need to be recalculated
|
||||||
|
for media in Media.objects.filter(source=source):
|
||||||
|
media.save()
|
||||||
|
Loading…
Reference in New Issue
Block a user