Convert remaining space indentings to tabs

This commit is contained in:
2020-05-21 16:55:33 +02:00
parent 04c96bcb53
commit 88de77b261
4 changed files with 126 additions and 117 deletions

View File

@@ -3,20 +3,20 @@ import os
import sys import sys
if __name__ == "__main__": if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "videodinges.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "videodinges.settings")
try: try:
from django.core.management import execute_from_command_line from django.core.management import execute_from_command_line
except ImportError: except ImportError:
# The above import may fail for some other reason. Ensure that the # The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other # issue is really that Django is missing to avoid masking other
# exceptions on Python 2. # exceptions on Python 2.
try: try:
import django import django
except ImportError: except ImportError:
raise ImportError( raise ImportError(
"Couldn't import Django. Are you sure it's installed and " "Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you " "available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?" "forget to activate a virtual environment?"
) )
raise raise
execute_from_command_line(sys.argv) execute_from_command_line(sys.argv)

View File

@@ -20,10 +20,10 @@ class TranscodingType(NamedTuple):
return self.name return self.name
qualities = ( qualities = (
Quality(name='360p', width=640, height=360, priority=1), Quality(name='360p', width=640, height=360, priority=1),
Quality(name='480p', width=853, height=480, priority=2), Quality(name='480p', width=853, height=480, priority=2),
Quality(name='720p', width=1280, height=720, priority=2), Quality(name='720p', width=1280, height=720, priority=2),
Quality(name='1080p', width=1920, height=1080, priority=1), Quality(name='1080p', width=1920, height=1080, priority=1),
) )
transcoding_types = ( transcoding_types = (
@@ -45,51 +45,60 @@ class Upload(models.Model):
db_table = 'uploads' db_table = 'uploads'
class Video(models.Model): class Video(models.Model):
id = models.AutoField(primary_key=True) id = models.AutoField(primary_key=True)
title = models.CharField(max_length=256) title = models.CharField(max_length=256)
slug = models.CharField(max_length=256, unique=True) slug = models.CharField(max_length=256, unique=True)
description = models.TextField() description = models.TextField()
poster = models.OneToOneField(Upload, on_delete=models.PROTECT, blank=True, null=True, related_name='video_poster') poster = models.OneToOneField(Upload, on_delete=models.PROTECT, blank=True, null=True, related_name='video_poster')
og_image = models.OneToOneField(Upload, on_delete=models.PROTECT, blank=True, null=True, related_name='video_og_image') og_image = models.OneToOneField(Upload, on_delete=models.PROTECT, blank=True, null=True, related_name='video_og_image')
default_quality = models.CharField(choices=((quality.name, quality.name) for quality in qualities), default_quality = models.CharField(
max_length=128, blank=True, null=True) choices=((quality.name, quality.name) for quality in qualities),
created_at = models.DateTimeField(default=datetime.now) max_length=128,
updated_at = models.DateTimeField(default=datetime.now) blank=True,
null=True
)
created_at = models.DateTimeField(default=datetime.now)
updated_at = models.DateTimeField(default=datetime.now)
def save(self, force_insert=False, force_update=False, using=None, update_fields=None): def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
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): def __str__(self):
return self.title return self.title
class Meta: class Meta:
indexes = [models.Index(fields=['slug']), models.Index(fields=['created_at'])] indexes = [models.Index(fields=['slug']), models.Index(fields=['created_at'])]
db_table = 'videos' db_table = 'videos'
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, related_name='transcodings') 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)
type = models.CharField(choices=((str(type_), str(type_)) for type_ in transcoding_types), max_length=128) type = models.CharField(choices=((str(type_), str(type_)) for type_ in transcoding_types), max_length=128)
upload = models.OneToOneField(Upload, on_delete=models.PROTECT, blank=True, null=True) upload = models.OneToOneField(Upload, on_delete=models.PROTECT, blank=True, null=True)
url = models.CharField(max_length=256, null=True, blank=True, unique=True) url = models.CharField(max_length=256, null=True, blank=True, unique=True)
def __str__(self): def __str__(self):
return self.quality return self.quality
@property @property
def quality_obj(self): def quality_obj(self):
return get_quality_by_name(self.quality) return get_quality_by_name(self.quality)
class Meta: class Meta:
unique_together = ('video', 'quality', 'type') unique_together = ('video', 'quality', 'type')
constraints = [constraints.CheckConstraint(check=Q(upload__isnull=False) | Q(url__isnull=False), constraints = [
name='upload_or_url_is_filled'), constraints.CheckConstraint(
constraints.CheckConstraint(check=~(Q(upload__isnull=False) & Q(url__isnull=False)), check=Q(upload__isnull=False) | Q(url__isnull=False),
name='upload_and_url_cannot_both_be_filled'), name='upload_or_url_is_filled'
] ),
db_table = 'transcodings' constraints.CheckConstraint(
check=~(Q(upload__isnull=False) & Q(url__isnull=False)),
name='upload_and_url_cannot_both_be_filled'
),
]
db_table = 'transcodings'
def get_quality_by_name(name: str) -> Optional[Quality]: def get_quality_by_name(name: str) -> Optional[Quality]:
for quality in qualities: for quality in qualities:

View File

@@ -31,47 +31,47 @@ ALLOWED_HOSTS = []
# Application definition # Application definition
INSTALLED_APPS = [ INSTALLED_APPS = [
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.contenttypes',
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'videodinges', 'videodinges',
] ]
MIDDLEWARE = [ MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware', 'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
] ]
ROOT_URLCONF = 'videodinges.urls' ROOT_URLCONF = 'videodinges.urls'
TEMPLATES = [ TEMPLATES = [
{ {
'BACKEND': 'django.template.backends.django.DjangoTemplates', 'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [], 'DIRS': [],
'APP_DIRS': True, 'APP_DIRS': True,
'OPTIONS': { 'OPTIONS': {
'context_processors': [ 'context_processors': [
'django.template.context_processors.debug', 'django.template.context_processors.debug',
'django.template.context_processors.request', 'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth', 'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages',
], ],
}, },
}, },
{ {
'BACKEND': 'django.template.backends.jinja2.Jinja2', 'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [os.path.join(BASE_DIR, 'videodinges', 'templates')], 'DIRS': [os.path.join(BASE_DIR, 'videodinges', 'templates')],
'APP_DIRS': False, 'APP_DIRS': False,
'OPTIONS': {}, 'OPTIONS': {},
}, },
] ]
WSGI_APPLICATION = 'videodinges.wsgi.application' WSGI_APPLICATION = 'videodinges.wsgi.application'
@@ -81,10 +81,10 @@ WSGI_APPLICATION = 'videodinges.wsgi.application'
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases # https://docs.djangoproject.com/en/1.11/ref/settings/#databases
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.sqlite3', 'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
} }
} }
@@ -92,18 +92,18 @@ DATABASES = {
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators # https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [ AUTH_PASSWORD_VALIDATORS = [
{ {
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
}, },
{ {
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
}, },
{ {
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
}, },
{ {
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
}, },
] ]

View File

@@ -1,17 +1,17 @@
"""videodinges URL Configuration """videodinges URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see: The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.11/topics/http/urls/ https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples: Examples:
Function views Function views
1. Add an import: from my_app import views 1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views Class-based views
1. Add an import: from other_app.views import Home 1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf Including another URLconf
1. Import the include() function: from django.conf.urls import url, include 1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
""" """
from django.conf import settings from django.conf import settings
from django.conf.urls.static import static from django.conf.urls.static import static
@@ -22,9 +22,9 @@ from django.urls import include
from . import views from . import views
_urlpatterns = [ _urlpatterns = [
url(r'^admin/', admin.site.urls), url(r'^admin/', admin.site.urls),
url(r'^$', views.index), url(r'^$', views.index),
url(r'^(?P<slug>[\w-]+).html', views.video) url(r'^(?P<slug>[\w-]+).html', views.video)
] ]
_urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) _urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)