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