Source code for town6.views.commission

from __future__ import annotations

from webob.exc import HTTPNotFound

from onegov.core.elements import Link
from onegov.core.security import Private, Public
from onegov.org.forms.commission import CommissionForm
from onegov.org import _
from onegov.parliament.collections.commission import RISCommissionCollection
from onegov.parliament.collections.commission import CommissionCollection
from onegov.parliament.models import RISCommission, Commission
from onegov.town6 import TownApp
from onegov.town6.layout import RISCommissionCollectionLayout
from onegov.town6.layout import RISCommissionLayout

from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from webob import Response

    from onegov.core.types import RenderData
    from onegov.pas.layouts import PASCommissionCollectionLayout
    from onegov.pas.layouts import PASCommissionLayout
    from onegov.town6.request import TownRequest


[docs] def view_commissions( self: CommissionCollection, request: TownRequest, layout: RISCommissionCollectionLayout | PASCommissionCollectionLayout ) -> RenderData | Response: filters = {} filters['active'] = [ Link( text=request.translate(title), active=self.active == value, url=request.link(self.for_filter(active=value)) ) for title, value in ( (_('Active'), True), (_('Inactive'), False) ) ] return { 'add_link': request.link(self, name='new'), 'filters': filters, 'layout': layout, 'commissions': self.query().all(), 'title': layout.title, }
[docs] def add_commission( self: CommissionCollection, request: TownRequest, form: CommissionForm, layout: RISCommissionCollectionLayout | PASCommissionCollectionLayout ) -> RenderData | Response: if form.submitted(request): commission = self.add(**form.get_useful_data()) request.success(_('Added a new commission')) return request.redirect(request.link(commission)) layout.breadcrumbs.append(Link(_('New'), '#')) layout.include_editor() return { 'layout': layout, 'title': _('New commission'), 'form': form, 'form_width': 'large' }
[docs] def view_commission( self: Commission, request: TownRequest, layout: RISCommissionLayout | PASCommissionLayout ) -> RenderData | Response: return { 'layout': layout, 'commission': self, 'title': layout.title, }
[docs] def edit_commission( self: Commission, request: TownRequest, form: CommissionForm, layout: RISCommissionLayout | PASCommissionLayout ) -> RenderData | Response: if form.submitted(request): form.populate_obj(self) request.success(_('Your changes were saved')) return request.redirect(request.link(self)) form.process(obj=self) layout.breadcrumbs.append(Link(_('Edit'), '#')) layout.editbar_links = [] layout.include_editor() return { 'layout': layout, 'title': layout.title, 'form': form, 'form_width': 'large' }
[docs] def delete_commission( self: Commission, request: TownRequest ) -> None: request.assert_valid_csrf_token() collection = CommissionCollection(request.session) collection.delete(self)
@TownApp.html( model=RISCommissionCollection, template='commissions.pt', permission=Public )
[docs] def ris_view_commissions( self: RISCommissionCollection, request: TownRequest ) -> RenderData | Response: if not request.app.org.ris_enabled: raise HTTPNotFound() return view_commissions( self, request, RISCommissionCollectionLayout(self, request))
@TownApp.form( model=RISCommissionCollection, name='new', template='form.pt', permission=Private, form=CommissionForm )
[docs] def ris_add_commission( self: RISCommissionCollection, request: TownRequest, form: CommissionForm ) -> RenderData | Response: if not request.app.org.ris_enabled: raise HTTPNotFound() return add_commission( self, request, form, RISCommissionCollectionLayout(self, request) )
@TownApp.html( model=RISCommission, template='commission.pt', permission=Public )
[docs] def ris_view_commission( self: RISCommission, request: TownRequest ) -> RenderData | Response: if not request.app.org.ris_enabled: raise HTTPNotFound() return view_commission(self, request, RISCommissionLayout(self, request))
@TownApp.form( model=RISCommission, name='edit', template='form.pt', permission=Private, form=CommissionForm )
[docs] def ris_edit_commission( self: RISCommission, request: TownRequest, form: CommissionForm ) -> RenderData | Response: if not request.app.org.ris_enabled: raise HTTPNotFound() return edit_commission( self, request, form, RISCommissionLayout(self, request))
@TownApp.view( model=RISCommission, request_method='DELETE', permission=Private )
[docs] def ris_delete_commission( self: RISCommission, request: TownRequest ) -> None: return delete_commission(self, request)