Sunil Mohan Adapa c700e0866e
*: Additional import path related changes
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-08-28 07:35:37 -04:00

45 lines
1.5 KiB
Python

# SPDX-License-Identifier: AGPL-3.0-or-later
"""Views for the JSXC module."""
import copy
from django.http import Http404
from django.views.generic import TemplateView
import freedombox.app as app_module
from freedombox.middleware import CONTENT_SECURITY_POLICY
from freedombox.modules.names.components import DomainName
class JsxcView(TemplateView):
"""A simple page to embed Javascript XMPP Client library."""
template_name = 'jsxc_launch.html'
headers: dict[str, str] = {}
def __init__(self, **kwargs):
"""Initialize the view and set CSP."""
super().__init__(**kwargs)
csp = copy.copy(CONTENT_SECURITY_POLICY)
csp['style-src'] = "'self' 'unsafe-inline'"
self.headers['Content-Security-Policy'] = csp.get_header_value()
def dispatch(self, request, *args, **kwargs):
"""Don't serve the view when app is disabled."""
app = app_module.App.get('jsxc')
if not app.is_enabled():
raise Http404
return super().dispatch(request, *args, **kwargs)
def get_context_data(self, *args, **kwargs) -> dict[str, object]:
"""Add domain information to view context."""
context = super().get_context_data(*args, **kwargs)
context['domain_name'] = DomainName.list_names()[0]
return context
def get(self, request, *args, **kwargs):
"""Handle GET request and return a response object."""
context = self.get_context_data(**kwargs)
return self.render_to_response(context, headers=self.headers)