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( + '
  • {title}: {transcodings}
  • '.format( + title=video.title, + transcodings=', '.join(tr.quality_obj.name for tr in video.transcodings.all()), + ) + ) + + + return HttpResponse('

    Index!

    \n'.format(videos='\n'.join(videos_html))) \ No newline at end of file diff --git a/videodinges/urls.py b/videodinges/urls.py index ef8c102..54630d6 100644 --- a/videodinges/urls.py +++ b/videodinges/urls.py @@ -16,6 +16,11 @@ Including another URLconf from django.conf.urls import url from django.contrib import admin +from . import testviews + urlpatterns = [ url(r'^admin/', admin.site.urls), ] + +for i in testviews.__all__: + urlpatterns.append(url(r'^test/{}$'.format(i), testviews.__dict__[i]))