Source code for pas.views.presidential_allowance

from __future__ import annotations

from onegov.core.security import Private
from onegov.pas import _
from onegov.pas import PasApp
from onegov.pas.collections.presidential_allowance import (
    PresidentialAllowanceCollection,
)
from onegov.pas.forms.presidential_allowance import (
    QUARTERLY_AMOUNTS,
    PresidentialAllowanceForm,
)
from onegov.pas.layouts.presidential_allowance import (
    PresidentialAllowanceCollectionLayout,
    PresidentialAllowanceFormLayout,
)
from onegov.pas.models.presidential_allowance import (
    PRESIDENT_QUARTERLY,
    PRESIDENT_YEARLY_ALLOWANCE,
    VICE_PRESIDENT_QUARTERLY,
    VICE_PRESIDENT_YEARLY_ALLOWANCE,
    PresidentialAllowance,
)

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from onegov.core.types import RenderData
    from onegov.pas.request import PasRequest
    from webob import Response


@PasApp.html(
    model=PresidentialAllowanceCollection,
    template='presidential_allowances.pt',
    permission=Private,
)
[docs] def view_presidential_allowances( self: PresidentialAllowanceCollection, request: PasRequest, ) -> RenderData: layout = PresidentialAllowanceCollectionLayout(self, request) return { 'layout': layout, 'title': layout.title, 'allowances': self.query().all(), 'add_link': request.link(self, name='new'), 'president_yearly': PRESIDENT_YEARLY_ALLOWANCE, 'president_quarterly': PRESIDENT_QUARTERLY, 'vice_president_yearly': (VICE_PRESIDENT_YEARLY_ALLOWANCE), 'vice_president_quarterly': (VICE_PRESIDENT_QUARTERLY), 'collection_link': request.link(self), }
@PasApp.form( model=PresidentialAllowanceCollection, name='new', template='form.pt', permission=Private, form=PresidentialAllowanceForm, )
[docs] def add_presidential_allowance( self: PresidentialAllowanceCollection, request: PasRequest, form: PresidentialAllowanceForm, ) -> RenderData | Response: if form.submitted(request): year = form.year.data quarter = form.quarter.data settlement_run = form.current_settlement_run run_id = settlement_run.id if settlement_run else None parl_id, role = form.parsed_recipient amount = QUARTERLY_AMOUNTS[role] self.add( year=year, quarter=quarter, role=role, amount=amount, parliamentarian_id=parl_id, settlement_run_id=run_id, ) request.success(_('Quarterly allowance added')) return request.redirect(request.link(self)) layout = PresidentialAllowanceFormLayout(self, request) return { 'layout': layout, 'title': layout.title, 'form': form, 'form_width': 'small', }
@PasApp.view( model=PresidentialAllowance, request_method='DELETE', permission=Private, )
[docs] def delete_presidential_allowance( self: PresidentialAllowance, request: PasRequest ) -> None: request.assert_valid_csrf_token() request.session.delete(self)