view libervia/web/pages/calendar/page_meta.py @ 1522:a44f77559279

installation: moved from `setup.py` to `pyproject.toml`: - following backend change, installation is now using `pyproject.toml`, and legacy `setup.py` as well as other legacy files have been deleted/updated. - [hatch](https://hatch.pypa.io) is now used as main building tool. However, thanks to the use of standards, other tools can be used too. - `VERSION` file has been deleted, in favor or using directly `__version__`, in `libervia/web/__init__.py`. Version can be updated directly from Hatch - update .hgignore - several dependencies version bump, with code update to adapt to changes.
author Goffi <goffi@goffi.org>
date Wed, 07 Jun 2023 15:28:10 +0200
parents eb00d593801d
children 08342aca8c1e
line wrap: on
line source

#!/usr/bin/env python3


from libervia.backend.core.i18n import _
from libervia.backend.core.log import getLogger
from libervia.backend.tools.common import data_format
from twisted.internet import defer
import datetime
import time
from dateutil import tz

from libervia.web.server.constants import Const as C

log = getLogger(__name__)


name = "calendar"
access = C.PAGES_ACCESS_PROFILE
template = "calendar/daily.html"


async def prepare_render(self, request):
    profile = self.get_profile(request)
    template_data = request.template_data
    # template_data["url_event_new"] = self.get_sub_page_url(request, "event_new")
    if profile is not None:
        try:
            events = data_format.deserialise(
                await self.host.bridge_call("events_get", "", "", [], "", profile),
                type_check=list
            )
        except Exception as e:
            log.warning(_("Can't get events list for {profile}: {reason}").format(
                profile=profile, reason=e))
        else:
            template_data["events"] = events

    tz_name = template_data["tz_name"] = time.tzname[0]
    local_tz = tz.tzlocal()
    today_local = datetime.datetime.now(local_tz).date()
    calendar_start = template_data["calendar_start"] = datetime.datetime.combine(
        today_local, datetime.time.min, tzinfo=local_tz
    ).timestamp()
    calendar_end = template_data["calendar_end"] = datetime.datetime.combine(
        today_local, datetime.time.max, tzinfo=local_tz
    ).timestamp()
    self.expose_to_scripts(
        request,
        calendar_start=calendar_start,
        calendar_end=calendar_end,
        tz_name=tz_name,
    )