diff --git a/signbank/video/models.py b/signbank/video/models.py index f15ef149..5bac79b7 100755 --- a/signbank/video/models.py +++ b/signbank/video/models.py @@ -1046,6 +1046,20 @@ def reversion(self, revert=False): self.delete() +def move_videos_for_dataset(dataset: Dataset, move_files_on_disk: bool=False) -> None: + """ + Changes GlossVideo.videofile values for a Dataset + and moves files on disk if move_file_on_disk is True (default is False) + """ + for glossvideo in GlossVideo.objects.filter(gloss__lemma__dataset=dataset, glossvideonme=None, + glossvideoperspective=None): + glossvideo.move_video(move_files_on_disk=move_files_on_disk) + for glossvideo_nme in GlossVideoNME.objects.filter(gloss__lemma__dataset=dataset): + glossvideo_nme.move_video(move_files_on_disk=move_files_on_disk) + for glossvideos_perspective in GlossVideoPerspective.objects.filter(gloss__lemma__dataset=dataset): + glossvideos_perspective.move_video(move_files_on_disk=move_files_on_disk) + + @receiver(models.signals.post_save, sender=Dataset) def process_dataset_changes(sender, instance, **kwargs): """ @@ -1059,10 +1073,7 @@ def process_dataset_changes(sender, instance, **kwargs): # and rename directories. dataset = instance if dataset._initial['acronym'] and dataset.acronym != dataset._initial['acronym']: - # Move all media - glossvideos = GlossVideo.objects.filter(gloss__lemma__dataset=dataset) - for glossvideo in glossvideos: - glossvideo.move_video(move_files_on_disk=False) + move_videos_for_dataset(dataset, move_files_on_disk=False) # Rename dirs glossvideo_path_original = os.path.join(WRITABLE_FOLDER, GLOSS_VIDEO_DIRECTORY, dataset._initial['acronym']) @@ -1080,14 +1091,11 @@ def process_dataset_changes(sender, instance, **kwargs): # If the default language has been changed, change all GlossVideos # and move all video/poster files accordingly. - if dataset._initial['default_language'] and dataset.default_language != dataset._initial['default_language']: - # Move all media - glossvideos = GlossVideo.objects.filter(gloss__lemma__dataset=dataset) - for glossvideo in glossvideos: - glossvideo.move_video(move_files_on_disk=True) + if dataset._initial['default_language'] and dataset.default_language_id != dataset._initial['default_language']: + move_videos_for_dataset(dataset, move_files_on_disk=True) # Make sure that _initial reflect the database for the dataset object - dataset._initial['default_language'] = dataset.default_language + dataset._initial['default_language'] = dataset.default_language_id @receiver(models.signals.post_save, sender=LemmaIdglossTranslation)