Source code for town6.custom

from __future__ import annotations

from onegov.chat.collections import ChatCollection
from onegov.core.elements import Link, LinkGroup
from onegov.org.custom import get_api_endpoints as get_api_endpoints_base
from onegov.org.custom import get_global_tools as get_global_tools_base
from onegov.org.custom import get_modules as get_modules_base
from onegov.town6 import _
from onegov.town6.api import (
    CommissionApiEndpoint, MeetingApiEndpoint, ParliamentarianApiEndpoint,
    ParliamentaryGroupApiEndpoint, PoliticalBusinessApiEndpoint)


from typing import Any, TYPE_CHECKING
if TYPE_CHECKING:
    from collections.abc import Iterator
    from onegov.api.models import ApiEndpoint
    from onegov.town6.request import TownRequest


[docs] def get_global_tools(request: TownRequest) -> Iterator[Link | LinkGroup]: for item in get_global_tools_base(request): classes = getattr(item, 'attrs', {}).get('class') if classes == {'login'} or classes == {'citizen-login'}: continue yield item if request.is_logged_in and request.app.org.meta.get( 'enable_chat', 'disabled') == 'people_chat': chat_staff = request.app.org.meta.get('chat_staff', []) assert request.current_user is not None if request.current_user.id.hex in chat_staff: yield LinkGroup(_('Chats'), classes=('chats', ), links=( Link( _('My Chats'), request.link( request.app.org, name='chats' ), attrs={'class': 'chats'} ), Link( _('Archived Chats'), request.class_link( ChatCollection, { 'state': 'archived', }, name='archive' ), attrs={ 'class': ('chats-archive'), } ) ))
[docs] def get_modules(request: TownRequest) -> LinkGroup: modules = get_modules_base(request) links = list(modules.links) if request.is_admin and request.app.org.ris_enabled: links.append( Link( _('RIS Settings'), request.link(request.app.org, 'ris-overview'), attrs={'class': 'ris-settings'} ), ) modules.links = links return modules
[docs] def get_api_endpoints(request: TownRequest) -> Iterator[ApiEndpoint[Any]]: yield from get_api_endpoints_base(request) if request.app.org.ris_enabled: yield CommissionApiEndpoint(request) yield MeetingApiEndpoint(request) yield PoliticalBusinessApiEndpoint(request) yield ParliamentarianApiEndpoint(request) yield ParliamentaryGroupApiEndpoint(request)