from __future__ import annotations
from onegov.core.security import Secret
from onegov.org.views.usermanagement import get_manage_user_form
from onegov.org.views.usermanagement import view_usermanagement
from onegov.town6.views.usermanagement import town_handle_manage_user
from onegov.org.views.usermanagement import handle_new_user
from onegov.pas import _
from onegov.pas.app import PasApp
from onegov.pas.forms.user import ManageUserFormCustom
from onegov.pas.forms.user import NewUserFormCustom
from onegov.pas.layouts.user import UserManagementLayout
from onegov.user import User
from onegov.user import UserCollection
from typing import TYPE_CHECKING, cast
if TYPE_CHECKING:
from onegov.core.types import RenderData
from onegov.org.forms.user import NewUserForm
from onegov.pas.request import PasRequest
from webob import Response
@PasApp.html(
model=UserCollection, template='usermanagement.pt', permission=Secret
)
[docs]
def view_usermanagement_custom(
self: UserCollection, request: PasRequest
) -> RenderData:
roles = {
'admin': _('Administrator'),
'parliamentarian': _('Parliamentarian'),
'commission_president': _('Commission President'),
}
return view_usermanagement(
self, request, UserManagementLayout(self, request), roles=roles
)
@PasApp.form(
model=User,
template='form.pt',
form=get_manage_user_form_custom,
permission=Secret,
name='edit',
)
[docs]
def handle_manage_user_custom(
self: User, request: PasRequest, form: ManageUserFormCustom
) -> RenderData | Response:
return town_handle_manage_user(self, request, form)
@PasApp.form(
model=UserCollection,
template='newuser.pt',
form=NewUserFormCustom,
name='new',
permission=Secret,
)
[docs]
def handle_new_user_custom(
self: UserCollection, request: PasRequest, form: NewUserFormCustom
) -> RenderData | Response:
return handle_new_user(
self,
request,
cast('NewUserForm', form),
UserManagementLayout(self, request),
)