diff --git a/videodinges/models.py b/videodinges/models.py index 1afd708..1dc5d5a 100644 --- a/videodinges/models.py +++ b/videodinges/models.py @@ -1,5 +1,5 @@ from datetime import datetime -from typing import NamedTuple +from typing import NamedTuple, Optional from django.db import models @@ -29,9 +29,25 @@ class Video(models.Model): self.updated_at = datetime.now() super().save(force_insert, force_update, using, update_fields) + def __str__(self): + return self.title + class Transcoding(models.Model): id = models.AutoField(primary_key=True) - video = models.ForeignKey(Video, on_delete=models.CASCADE) + video = models.ForeignKey(Video, on_delete=models.CASCADE, related_name='transcodings') quality = models.CharField(choices=((quality.name, quality.name) for quality in qualities), max_length=128) file = models.FileField() + + def __str__(self): + return self.quality + + @property + def quality_obj(self): + return get_quality_by_name(self.quality) + + +def get_quality_by_name(name: str) -> Optional[Quality]: + for quality in qualities: + if quality.name == name: + return quality diff --git a/videodinges/testviews.py b/videodinges/testviews.py new file mode 100644 index 0000000..b00002d --- /dev/null +++ b/videodinges/testviews.py @@ -0,0 +1,36 @@ +from typing import List + +from django.http import HttpResponse, HttpRequest + +from . import models + +__all__ = ['index'] + +def index(request: HttpRequest) -> HttpResponse: + videos = models.Video.objects.all() + if videos.count() == 0: + video = models.Video( + title='Test', + slug='test', + description='Test object', + ) + video.save() + else: + video = videos[0] + + if video.transcodings.count() == 0: + transcoding = models.Transcoding(video=video, quality='360p', file='somefile') + transcoding.save() + #transcodings: List[models.Transcoding] = video.transcodings.objects.all() + + videos_html = [] + for video in videos: + videos_html.append( + '