Add some testviews

This commit is contained in:
2020-05-04 19:35:51 +02:00
parent cdca198228
commit ee8d8e0ea8
3 changed files with 59 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
from datetime import datetime from datetime import datetime
from typing import NamedTuple from typing import NamedTuple, Optional
from django.db import models from django.db import models
@@ -29,9 +29,25 @@ class Video(models.Model):
self.updated_at = datetime.now() self.updated_at = datetime.now()
super().save(force_insert, force_update, using, update_fields) super().save(force_insert, force_update, using, update_fields)
def __str__(self):
return self.title
class Transcoding(models.Model): class Transcoding(models.Model):
id = models.AutoField(primary_key=True) 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) quality = models.CharField(choices=((quality.name, quality.name) for quality in qualities), max_length=128)
file = models.FileField() 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

36
videodinges/testviews.py Normal file
View File

@@ -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(
'<li>{title}: {transcodings}</li>'.format(
title=video.title,
transcodings=', '.join(tr.quality_obj.name for tr in video.transcodings.all()),
)
)
return HttpResponse('<h1>Index!</h1>\n<ul>{videos}</ul>'.format(videos='\n'.join(videos_html)))

View File

@@ -16,6 +16,11 @@ Including another URLconf
from django.conf.urls import url from django.conf.urls import url
from django.contrib import admin from django.contrib import admin
from . import testviews
urlpatterns = [ urlpatterns = [
url(r'^admin/', admin.site.urls), url(r'^admin/', admin.site.urls),
] ]
for i in testviews.__all__:
urlpatterns.append(url(r'^test/{}$'.format(i), testviews.__dict__[i]))