From 14be7ef6b48e74be66f5608d7d0c21b1499aff2d Mon Sep 17 00:00:00 2001 From: Bastiaan Welmers Date: Thu, 7 Apr 2022 21:03:59 +0200 Subject: [PATCH] Refactor to slighly better readable code --- videodinges/views.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/videodinges/views.py b/videodinges/views.py index df673f9..61f2cc3 100644 --- a/videodinges/views.py +++ b/videodinges/views.py @@ -45,18 +45,11 @@ def video(request: HttpRequest, slug: str) -> HttpResponse: for transcoding in quality ] - max_prio = max(tt.priority for tt in models.transcoding_types) + 1 - video_codecs_prio_cookie = request.COOKIES.get('video_codecs_prio', '') - client_codecs_prio = video_codecs_prio_cookie.split(' ') - client_codecs_prio.reverse() - client_codecs_prio_dct = { - v: max_prio + i - for i, v in enumerate(client_codecs_prio) - } - + client_codec_prios = _get_codec_prios_from_client(request.COOKIES.get('video_codecs_prio', '')) # sort by client desired order, or transcoding type priority sources.sort( - key=lambda i: client_codecs_prio_dct.get(models.get_transcoding_type_by_name(i['type']).short_name) or models.get_transcoding_type_by_name(i['type']).priority, + key=lambda i: client_codec_prios.get(models.get_transcoding_type_by_name(i['type']).short_name) or \ + models.get_transcoding_type_by_name(i['type']).priority, reverse=True ) template_data['sources'] = sources @@ -102,3 +95,17 @@ def _url_for(transcoding: models.Transcoding) -> str: return transcoding.url elif transcoding.upload: return transcoding.upload.file.url + +def _get_codec_prios_from_client(prio_string: str) -> Dict[str, int]: + """ + Get prios from prio string. + For they are more important than build-in prios, they have + values higher than the max value of the build-in prios. + """ + max_prio = max(tt.priority for tt in models.transcoding_types) + 1 + client_codecs_prio = prio_string.split(' ') + client_codecs_prio.reverse() + return { + v: max_prio + i + for i, v in enumerate(client_codecs_prio) + }