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 AttendenceCollection
from onegov.pas.layouts.default import DefaultLayout
[docs]
class AttendenceCollectionLayout(DefaultLayout):
@cached_property
[docs]
def title(self) -> str:
return _('Attendences')
@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(self.title, self.request.link(self.model))
]
@cached_property
[docs]
def editbar_links(self) -> list[LinkGroup] | None:
links = [
Link(
text=_('New Attendence'),
url=self.request.link(self.model, 'new'),
attrs={'class': 'new-attendence'},
),
]
if self.request.is_admin:
links.extend([
Link(
text=_('Plenary session (bulk)'),
url=self.request.link(self.model, 'new-bulk'),
attrs={'class': 'new-attendence'},
),
Link(
text=_('Commission session (bulk)'),
url=self.request.link(
self.model, 'new-commission-bulk'
),
attrs={'class': 'new-attendence'},
),
])
return [
LinkGroup(
title=_('Add'),
links=links,
),
]
[docs]
class AttendenceLayout(DefaultLayout):
@cached_property
[docs]
def collection(self) -> AttendenceCollection:
return AttendenceCollection(self.request.session)
@cached_property
[docs]
def title(self) -> str:
return self.model.type_label
@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(
_('Attendences'),
self.request.link(self.collection)
),
Link(self.title, self.request.link(self.model))
]
@cached_property
[docs]
def editbar_links(self) -> list[Link] | None:
if not self.request.is_admin:
return None
if self.model.bulk_edit_id:
name = (
'edit-plenary-bulk-attendences'
if self.model.type == 'plenary'
else 'edit-commission-bulk-attendences'
)
return [
Link(
text=_('Edit bulk'),
url=self.request.link(self.model, name),
attrs={'class': 'edit-link'},
)
]
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 meeting?'),
_('This cannot be undone.'),
_('Delete meeting'),
_('Cancel'),
),
Intercooler(
request_method='DELETE',
redirect_after=self.request.link(self.collection),
),
),
),
]