UI: Training templates fluid video layouts #104435

Merged
Márton Lente merged 13 commits from ui/training-layout-fluid into main 2024-08-23 16:50:27 +02:00
7 changed files with 47 additions and 43 deletions
Showing only changes of commit fa65203506 - Show all commits

View File

@ -72,8 +72,8 @@
</a>
</li>
<li>
<a href="https://twitter.com/BlenderStudio_" title="Follow Blender Studio on Twitter" target="_blank" class="social-icons__twitter">
<i class="i-twitter"></i>Twitter
<a href="https://x.com/BlenderStudio_" title="Follow Blender Studio on X" target="_blank" class="social-icons__twitter">
<i class="i-twitter"></i>X
</a>
</li>
<li>

View File

@ -1,32 +1,31 @@
<nav>
<ul class="pagination">
{% if page_obj.has_previous %}
<li class="page-item page-next">
<a href="?page=1">
<i class="i-skip-forward d-block" style="transform: scaleX(-1)"></i>
</a>
</li>
{% endif %}
{% for page_num in page_range %}
{% if page_num == page_obj.number %}
<li class="active disabled page-item">
<a href="#">{{ page_obj.number }}</a>
</li>
{% else %}
<li class="page-item">
<a href="?page={{ page_num }}">{{page_num}}</a>
{% if not page_obj.previous_page_number == 1 %}
<li class="page-item page-first">
<a href="?page=1">First</a>
</li>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<li class="page-item page-prev">
<a href="?page={{ page_obj.paginator.num_pages }}">
<i class="i-skip-forward"></i>
</a>
<a href="?page={{ page_obj.previous_page_number }}"><i class="i-chevron-left"></i> Previous</a>
</li>
{% endif %}
<li class="page-item page-current">
<a href="#">Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}</a>
</li>
{% if page_obj.has_next %}
<li class="page-item page-next">
<a href="?page={{ page_obj.next_page_number }}">Next <i class="i-chevron-right"></i></a>
</li>
{% if not page_obj.next_page_number == page_obj.paginator.num_pages %}
<li class="page-item page-last">
<a href="?page={{ page_obj.paginator.num_pages }}">Last</a>
</li>
{% endif %}
{% endif %}
</ul>
</nav>
</nav>

@ -1 +1 @@
Subproject commit 23fdb84a86ac1ada1eb06152a76f655307a9e82f
Subproject commit 666ff483b500b3b417c617596ddeebe58afb718d

View File

@ -81,7 +81,6 @@ pypdf==4.2.0
pypng==0.20220715.0
python-bidi==0.4.2
python-dateutil==2.8.2
python-dotenv==0.21.0
python-monkey-business==1.0.0
python-stdnum==1.18
pytz==2022.7.1

View File

@ -34,6 +34,7 @@ pycodestyle==2.7.0
pydocstyle==6.1.1
pyflakes==2.3.1
Pygments==2.13.0
python-dotenv==0.21.0
responses==0.25.3
snowballstemmer==2.2.0
tblib==3.0.0

View File

@ -9,7 +9,6 @@ import os
import pathlib
import sys
from dotenv import load_dotenv
import braintree
import dj_database_url
import meilisearch
@ -17,10 +16,14 @@ import meilisearch
import common.upload_paths
# Load variables from .env, if available
path = os.path.dirname(os.path.abspath(__file__)) + '/../.env'
if os.path.isfile(path):
load_dotenv(path)
try:
from dotenv import load_dotenv
# Load variables from .env, if available
path = os.path.dirname(os.path.abspath(__file__)) + '/../.env'
if os.path.isfile(path):
load_dotenv(path)
except ImportError: # This is expected: there should be no python-dotenv in production
pass
def _get(name: str, default=None, coerse_to=None):
@ -319,6 +322,11 @@ LOGGING = {
'formatter': 'default', # Set to 'verbose' in production
'stream': 'ext://sys.stderr',
},
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'include_html': True,
},
},
'loggers': {
'asyncio': {'level': 'WARNING'},
@ -328,7 +336,7 @@ LOGGING = {
'static_assets': {'level': 'DEBUG'},
'looper': {'level': 'DEBUG'},
},
'root': {'level': 'WARNING', 'handlers': ['console']},
'root': {'level': 'WARNING', 'handlers': ['console', 'mail_admins']},
}
SITE_ID = 1
@ -512,8 +520,14 @@ GATEWAYS = {
},
}
# Optional Sentry configuration
if os.environ.get('ADMINS') is not None:
# Expects the following format:
# ADMINS='J Doe: jane@example.com, John Dee: john@example.com'
ADMINS = [[_.strip() for _ in adm.split(':')] for adm in os.environ.get('ADMINS').split(',')]
EMAIL_SUBJECT_PREFIX = f'[{ALLOWED_HOSTS[0]}]'
SERVER_EMAIL = f'django@{ALLOWED_HOSTS[0]}'
# Optional Sentry configuration
SENTRY_DSN = _get('SENTRY_DSN')
if SENTRY_DSN:
import sentry_sdk

View File

@ -1,5 +1,5 @@
"""
WSGI config for training project.
WSGI config for Blender Studio project.
It exposes the WSGI callable as a module-level variable named ``application``.
@ -8,18 +8,9 @@ https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/
"""
import os
import os.path
import pathlib
from django.core.wsgi import get_wsgi_application
from dotenv import load_dotenv
BASE_DIR = pathlib.Path(__file__).absolute().parent.parent
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'studio.settings')
# Load variables from .env, if available
path = BASE_DIR / '.env'
if os.path.isfile(path):
load_dotenv(path)
application = get_wsgi_application()