Add some testviews
This commit is contained in:
@@ -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
|
||||
|
||||
36
videodinges/testviews.py
Normal file
36
videodinges/testviews.py
Normal 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)))
|
||||
@@ -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]))
|
||||
|
||||
Reference in New Issue
Block a user