Generate webclient-realm.js while collecting staticfiles (fixes #3422)
This commit is contained in:
parent
de9c54513d
commit
46364a84e1
@ -85,7 +85,7 @@ Core:
|
||||
- Added custom translations in config [#3383].
|
||||
- Added dynamic webpage title [#3404].
|
||||
- Added 'go to top'-link [#3404].
|
||||
- Added caching for the index views [#3419].
|
||||
- Added caching for the index views [#3419, #3424].
|
||||
- Added projector prioritization [#3425].
|
||||
|
||||
Mediafiles:
|
||||
|
43
openslides/core/management/commands/collectstatic.py
Normal file
43
openslides/core/management/commands/collectstatic.py
Normal file
@ -0,0 +1,43 @@
|
||||
import os
|
||||
from typing import Any, Dict
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.staticfiles.management.commands.collectstatic import \
|
||||
Command as CollectStatic
|
||||
from django.core.management.base import CommandError
|
||||
from django.db.utils import OperationalError
|
||||
|
||||
from ...views import WebclientJavaScriptView
|
||||
|
||||
|
||||
class Command(CollectStatic):
|
||||
"""
|
||||
Custom collectstatic command.
|
||||
"""
|
||||
realms = ['site', 'projector']
|
||||
js_filename = 'webclient-{}.js'
|
||||
|
||||
def handle(self, **options: Any) -> str:
|
||||
try:
|
||||
self.view = WebclientJavaScriptView()
|
||||
except OperationalError:
|
||||
raise CommandError('You have to run OpenSlides first to create a ' +
|
||||
'database before collecting staticfiles.')
|
||||
return super().handle(**options)
|
||||
|
||||
def collect(self) -> Dict[str, Any]:
|
||||
destination_dir = os.path.join(settings.OS_STATICFILES_DIR, 'js')
|
||||
if not os.path.exists(destination_dir):
|
||||
os.makedirs(destination_dir)
|
||||
|
||||
for realm in self.realms:
|
||||
filename = self.js_filename.format(realm)
|
||||
content = self.view.get(realm=realm).content
|
||||
path = os.path.join(destination_dir, filename)
|
||||
with open(path, 'wb+') as f:
|
||||
f.write(content)
|
||||
self.stdout.write("Written WebclientJavaScriptView for realm {} to '{}'".format(
|
||||
realm,
|
||||
path))
|
||||
|
||||
return super().collect()
|
@ -178,7 +178,7 @@ class WebclientJavaScriptView(utils_views.View):
|
||||
""".format(realm=realm, angular_modules=angular_modules, angular_constants=angular_constants, js_files=js_files) +
|
||||
"""
|
||||
}());
|
||||
""")
|
||||
""").replace('\n', '')
|
||||
self.cache[realm] = content
|
||||
|
||||
def get(self, *args: Any, **kwargs: Any) -> HttpResponse:
|
||||
|
@ -81,8 +81,10 @@ LOCALE_PATHS = [
|
||||
|
||||
STATIC_URL = '/static/'
|
||||
|
||||
OS_STATICFILES_DIR = os.path.join(MODULE_DIR, 'static')
|
||||
|
||||
STATICFILES_DIRS = [
|
||||
os.path.join(MODULE_DIR, 'static'),
|
||||
OS_STATICFILES_DIR,
|
||||
]
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user