from django.db import models from django.db.models.signals import pre_delete from django.dispatch import receiver from .tasks import create_hls_tasks # Create your models here. VIDEO_GENDER = ( (1, "male"), (2, "female"), (3, "anything goes"), ) class Video(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) video_file = models.FileField(upload_to='videos/', null=True, verbose_name="") gender = models.PositiveSmallIntegerField( choices=VIDEO_GENDER ) def __str__(self): return str(self.video_file) def save(self, *args, **kwargs): is_new = self.pk is None if self.pk: try: old = type(self).objects.get(pk=self.pk) video_changed = old.video_file != self.video_file except type(self).DoesNotExist: video_changed = True else: video_changed = bool(self.video_file) super(Video, self).save(*args, **kwargs) if self.video_file and (is_new or video_changed): filename = self.video_file.name create_hls_tasks.delay(filename) class ExerciseVideo(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) video_file = models.FileField(upload_to='videos/', null=True, verbose_name="") def save(self, *args, **kwargs): is_new = self.pk is None if self.pk: try: old = type(self).objects.get(pk=self.pk) video_changed = old.video_file != self.video_file except type(self).DoesNotExist: video_changed = True else: video_changed = bool(self.video_file) super(ExerciseVideo, self).save(*args, **kwargs) if self.video_file and (is_new or video_changed): filename = self.video_file.name create_hls_tasks.delay(filename) @receiver(pre_delete, sender=ExerciseVideo) def delete_exercise_video(sender, instance, using, **kwargs): video_file = instance.video_file video_file.delete(save=False)