diff --git a/videodinges/admin.py b/videodinges/admin.py index ae6c088..bd352ae 100644 --- a/videodinges/admin.py +++ b/videodinges/admin.py @@ -25,7 +25,7 @@ class TranscodingsInline(admin.StackedInline): class VideoAdmin(admin.ModelAdmin): model = models.Video - fields = ['title', 'description', 'slug', 'poster', 'og_image', 'created_at'] + fields = ['title', 'description', 'slug', 'poster', 'og_image', 'created_at', 'default_quality'] inlines = [TranscodingsInline] list_display = ('title', 'slug', 'created_at', 'updated_at') ordering = ('-created_at', ) diff --git a/videodinges/models.py b/videodinges/models.py index 994c484..d77123e 100644 --- a/videodinges/models.py +++ b/videodinges/models.py @@ -48,6 +48,8 @@ class Video(models.Model): description = models.TextField() poster = models.OneToOneField(Upload, on_delete=models.PROTECT, blank=True, null=True, related_name='video_poster') og_image = models.OneToOneField(Upload, on_delete=models.PROTECT, blank=True, null=True, related_name='video_og_image') + default_quality = models.CharField(choices=((quality.name, quality.name) for quality in qualities), + max_length=128, blank=True, null=True) created_at = models.DateTimeField(default=datetime.now) updated_at = models.DateTimeField(default=datetime.now) diff --git a/videodinges/views.py b/videodinges/views.py index a5e17ef..43cffb2 100644 --- a/videodinges/views.py +++ b/videodinges/views.py @@ -21,9 +21,15 @@ def video(request: HttpRequest, slug: str) -> HttpResponse: qualities = _get_qualities(video) try: + # find quality specified by URL param quality = qualities[request.GET['quality']] except: - quality = next(iter(qualities.values())) + # find quality specified by default quality specified for video + try: + quality = qualities[video.default_quality] + except: + # take default first quality + quality = next(iter(qualities.values())) template_data.update( width=quality[0].quality_obj.width,