"""Home view callables."""
from __future__ import annotations
from pyramid.request import Request
from pyramid.httpexceptions import HTTPFound
from ..lib.i18n import _
from ..lib.form import button
from ..lib.panel import Panel
# =============================================================================
[docs]
def home_view(request: Request, title: str | None = None) -> dict:
"""Home view.
:type request: pyramid.request.Request
:param request:
Current request.
:param str title: (optional)
Alternative title of the home page.
"""
# Previous route
route_id = request.params.get('route')
if route_id:
return HTTPFound(request.route_path(route_id, **request.params))
# Custom home
if 'home' in request.session and request.session['home'] != 'home' \
and request.session['home'] in request.registry['homes']:
return HTTPFound(
request.route_path(request.session['home'], **request.params))
# Panel
Panel.manage_panels(request)
# Breadcrumbs & documentation
request.breadcrumbs(title or _('Home'), 1)
request.documentation = '/home'
return {'button': button}