from __future__ import annotations
from functools import cached_property
from onegov.core.elements import Confirm
from onegov.core.elements import Intercooler
from onegov.core.elements import Link
from onegov.core.elements import LinkGroup
from onegov.pas import _
from onegov.pas.collections import SettlementRunCollection
from onegov.pas.layouts.default import DefaultLayout
[docs]
class SettlementRunCollectionLayout(DefaultLayout):
    @cached_property
[docs]
    def title(self) -> str:
        return _('Settlement runs') 
    @cached_property
[docs]
    def og_description(self) -> str:
        return self.request.translate(self.title) 
    @cached_property
[docs]
    def breadcrumbs(self) -> list[Link]:
        return [
            Link(_('Homepage'), self.homepage_url),
            Link(_('PAS settings'), self.pas_settings_url),
            Link(self.title, self.request.link(self.model))
        ] 
    @cached_property
[docs]
    def editbar_links(self) -> list[LinkGroup] | None:
        if self.request.is_manager:
            return [
                LinkGroup(
                    title=_('Add'),
                    links=[
                        Link(
                            text=_('Settlement run'),
                            url=self.request.link(self.model, 'new'),
                            attrs={'class': 'new-settlement-run'}
                        ),
                    ]
                ),
            ]
        return None 
 
[docs]
class SettlementRunLayout(DefaultLayout):
    @cached_property
[docs]
    def collection(self) -> SettlementRunCollection:
        return SettlementRunCollection(self.request.session) 
    @cached_property
[docs]
    def title(self) -> str:
        return self.model.name 
    @cached_property
[docs]
    def og_description(self) -> str:
        return self.request.translate(self.title) 
    @cached_property
[docs]
    def breadcrumbs(self) -> list[Link]:
        return [
            Link(_('Homepage'), self.homepage_url),
            Link(_('PAS settings'), self.pas_settings_url),
            Link(
                _('Settlement runs'),
                self.request.link(self.collection)
            ),
            Link(self.title, self.request.link(self.model))
        ] 
    @cached_property
[docs]
    def editbar_links(self) -> list[Link] | None:
        if self.request.is_manager:
            return [
                Link(
                    text=_('Edit'),
                    url=self.request.link(self.model, 'edit'),
                    attrs={'class': 'edit-link'}
                ),
                Link(
                    text=_('Delete'),
                    url=self.csrf_protected_url(
                        self.request.link(self.model)
                    ),
                    attrs={'class': 'delete-link'},
                    traits=(
                        Confirm(
                            _(
                                'Do you really want to delete this '
                                'settlement run?'
                            ),
                            _('This cannot be undone.'),
                            _('Delete settlement run'),
                            _('Cancel')
                        ),
                        Intercooler(
                            request_method='DELETE',
                            redirect_after=self.request.link(
                                self.collection
                            )
                        )
                    )
                )
            ]
        return None