feat: refactor copy_video

This commit is contained in:
Markos Gogoulos 2025-05-15 18:49:10 +03:00
parent d940cad56b
commit 22db570836

View File

@ -424,38 +424,41 @@ def copy_video(original_media, copy_encodings=True, title_suffix="(Trimmed)"):
New Media object New Media object
""" """
with disable_signal(post_save, models.media_save, models.Media): with open(original_media.media_file.path, "rb") as f:
with open(original_media.media_file.path, "rb") as f: myfile = File(f)
myfile = File(f) new_media = models.Media(
new_media = models.Media.objects.create( media_file=myfile,
media_file=myfile, title=f"{original_media.title} {title_suffix}",
title=f"{original_media.title} {title_suffix}", description=original_media.description,
description=original_media.description, user=original_media.user,
user=original_media.user, media_type="video",
media_type="video", enable_comments=original_media.enable_comments,
enable_comments=original_media.enable_comments, allow_download=original_media.allow_download,
allow_download=original_media.allow_download, state=original_media.state,
state=original_media.state, is_reviewed=original_media.is_reviewed,
is_reviewed=original_media.is_reviewed, add_date=timezone.now()
add_date=timezone.now() )
) models.Media.objects.bulk_create([new_media])
# avoids calling signals
if copy_encodings: if copy_encodings:
for encoding in original_media.encodings.filter(status="success", chunk=False): for encoding in original_media.encodings.filter(status="success", chunk=False):
if encoding.media_file: if encoding.media_file:
with disable_signal(post_save, models.encoding_file_save, models.Encoding): with open(encoding.media_file.path, "rb") as f:
with open(encoding.media_file.path, "rb") as f: myfile = File(f)
myfile = File(f) new_encoding = models.Encoding(
new_encoding = models.Encoding.objects.create( media_file=myfile,
media_file=myfile, media=new_media,
media=new_media, profile=encoding.profile,
profile=encoding.profile, status="success",
status="success", progress=100,
progress=100, chunk=False,
chunk=False, logs=f"Copied from encoding {encoding.id}"
logs=f"Copied from encoding {encoding.id}" )
) models.Encoding.objects.bulk_create([new_encoding])
new_encoding.save() # avoids calling signals
# TODO: check size
# Copy categories and tags # Copy categories and tags
for category in original_media.category.all(): for category in original_media.category.all():