from __future__ import annotations
from typing import TYPE_CHECKING
from onegov.core.elements import Link
from onegov.org.forms import ParliamentarianRoleForm
from onegov.org.security import Private, Public
from onegov.parliament.collections import ParliamentarianRoleCollection
from onegov.parliament.models import RISParliamentarianRole
from onegov.town6 import _
from onegov.town6.app import TownApp
from onegov.town6.layout import RISParliamentarianRoleLayout
if TYPE_CHECKING:
from webob.response import Response
from onegov.core.types import RenderData
from onegov.parliament.models import ParliamentarianRole
from onegov.pas.layouts import PASParliamentarianRoleLayout
from onegov.town6.request import TownRequest
[docs]
def view_parliamentarian_role(
self: ParliamentarianRole,
request: TownRequest,
layout: PASParliamentarianRoleLayout | RISParliamentarianRoleLayout
) -> RenderData | Response:
return {
'layout': layout,
'parliamentarian_role': self,
'title': layout.title,
}
[docs]
def edit_parliamentarian_role(
self: ParliamentarianRole,
request: TownRequest,
form: ParliamentarianRoleForm,
layout: PASParliamentarianRoleLayout | RISParliamentarianRoleLayout
) -> RenderData | Response:
if form.submitted(request):
form.populate_obj(self)
request.success(_('Your changes were saved'))
return request.redirect(request.link(self.parliamentarian))
form.process(obj=self)
layout.breadcrumbs.append(Link(_('Edit'), '#'))
layout.editbar_links = []
return {
'layout': layout,
'title': layout.title,
'form': form,
'form_width': 'large'
}
[docs]
def delete_parliamentarian_role(
self: ParliamentarianRole,
request: TownRequest,
) -> None:
request.assert_valid_csrf_token()
collection = ParliamentarianRoleCollection(request.session)
collection.delete(self)
@TownApp.html(
model=RISParliamentarianRole,
template='parliamentarian_role.pt',
permission=Public
)
[docs]
def ris_view_parliamentarian_role(
self: RISParliamentarianRole,
request: TownRequest
) -> RenderData | Response:
layout = RISParliamentarianRoleLayout(self, request)
return view_parliamentarian_role(self, request, layout)
@TownApp.form(
model=RISParliamentarianRole,
name='edit',
template='form.pt',
permission=Private,
form=ParliamentarianRoleForm
)
[docs]
def ris_edit_parliamentarian_role(
self: RISParliamentarianRole,
request: TownRequest,
form: ParliamentarianRoleForm
) -> RenderData | Response:
layout = RISParliamentarianRoleLayout(self, request)
return edit_parliamentarian_role(self, request, form, layout)
@TownApp.view(
model=RISParliamentarianRole,
request_method='DELETE',
permission=Private
)
[docs]
def ris_delete_parliamentarian_role(
self: RISParliamentarianRole,
request: TownRequest
) -> None:
return delete_parliamentarian_role(self, request)