core.directives
Attributes
Classes
Register Form view. |
|
Register a cronjob. |
|
Registers a static files directory. |
|
Registers a set of global template variables for chameleon templates. |
|
Register application setting in a section. |
|
A setting action that takes precedence over a replaced section. |
Functions
|
Given the form_class defined with the form action, together with |
|
Queries the app configuration for the form class associated with |
Wraps a view handler with generic form handling. |
Module Contents
- class core.directives.HtmlHandleFormAction(model: type | str, form: type[wtforms.Form] | collections.abc.Callable[[Any, _RequestT], type[wtforms.Form]], render: collections.abc.Callable[[Any, _RequestT], webob.Response] | str | None = None, template: _typeshed.StrOrBytesPath | None = None, load: collections.abc.Callable[[_RequestT], Any] | str | None = None, permission: object | str | None = None, internal: bool = False, pass_model: bool = False, **predicates: Any)[source]
Bases:
morepath.directive.HtmlActionRegister Form view.
Basically wraps the Morepath’s
htmldirective, registering both POST and GET (if no specific request method is given) and wrapping the view handler withwrap_with_generic_form_handler().The form is either a class or a function. If it’s a function, it is expected to return a form class when given an instance of the model.
The form may also be None, which is useful under special circumstances. Generally you don’t want that though.
Example:
@App.form(model=Root, template='form.pt', permission=Public, form=LoginForm) def handle_form(self, request, form): if form.submitted(): # do something if the form was submitted with valid data else: # do something if the form was not submitted or not # submitted correctly return {} # template variables
- perform(obj: collections.abc.Callable[[Any, _RequestT, Any], Any], *args: Any, **kwargs: Any) None[source]
Do whatever configuration is needed for
obj.Needs to be implemented by the
Actionsubclass.Raise a
DirectiveErrorto indicate that the action cannot be performed due to incorrect configuration.- Parameters:
obj – the object that the action should be performed for. Typically a function or a class object.
**kw – a dictionary of configuration objects as specified by the
configclass attribute.
- core.directives.fetch_form_class(form_class: type[_FormT] | collections.abc.Callable[[Any, _RequestT], type[_FormT]], model: object, request: _RequestT) type[_FormT][source]
Given the form_class defined with the form action, together with model and request, this function returns the actual class to be used.
- core.directives.query_form_class(request: _RequestT, model: object, name: str | None = None) type[wtforms.Form] | None[source]
Queries the app configuration for the form class associated with the given model and name. Take this configuration for example:
@App.form(model=Model, form_class=Form, name='foobar') ...
The form class defined here can be retrieved as follows:
query_form_class(request, model=Model, name=’foobar’)
- core.directives.wrap_with_generic_form_handler(obj: collections.abc.Callable[[_T, _RequestT, _FormT], Any], form_class: type[_FormT] | collections.abc.Callable[[_T, _RequestT], type[_FormT]], pass_model: bool) collections.abc.Callable[[_T, _RequestT], Any][source]
Wraps a view handler with generic form handling.
This includes instantiating the form with translations/csrf protection and setting the correct action.
- class core.directives.CronjobAction(hour: int | str, minute: int | str, timezone: str, once: bool = False)[source]
Bases:
dectate.ActionRegister a cronjob.
- config[source]
Describe configuration.
A dict mapping configuration names to factory functions. The resulting configuration objects are passed into
Action.identifier(),Action.discriminators(),Action.perform(), andAction.before()andAction.after().After commit completes, the configured objects are found as attributes on
App.config.
- identifier(**kw: Any) int[source]
Returns an immutable that uniquely identifies this config.
Needs to be implemented by the
Actionsubclass.Used for overrides and conflict detection.
If two actions in the same group have the same identifier in the same configurable, those two actions are in conflict and a
ConflictErroris raised duringcommit().If an action in an extending configurable has the same identifier as the configurable being extended, that action overrides the original one in the extending configurable.
- Parameters:
**kw – a dictionary of configuration objects as specified by the
configclass attribute.- Returns:
an immutable value uniquely identifying this action.
- perform(func: collections.abc.Callable[[core.request.CoreRequest], Any], cronjob_registry: onegov.core.utils.Bunch) None[source]
Do whatever configuration is needed for
obj.Needs to be implemented by the
Actionsubclass.Raise a
DirectiveErrorto indicate that the action cannot be performed due to incorrect configuration.- Parameters:
obj – the object that the action should be performed for. Typically a function or a class object.
**kw – a dictionary of configuration objects as specified by the
configclass attribute.
- class core.directives.StaticDirectoryAction[source]
Bases:
dectate.ActionRegisters a static files directory.
- config[source]
Describe configuration.
A dict mapping configuration names to factory functions. The resulting configuration objects are passed into
Action.identifier(),Action.discriminators(),Action.perform(), andAction.before()andAction.after().After commit completes, the configured objects are found as attributes on
App.config.
- identifier(staticdirectory_registry: onegov.core.utils.Bunch) int[source]
Returns an immutable that uniquely identifies this config.
Needs to be implemented by the
Actionsubclass.Used for overrides and conflict detection.
If two actions in the same group have the same identifier in the same configurable, those two actions are in conflict and a
ConflictErroris raised duringcommit().If an action in an extending configurable has the same identifier as the configurable being extended, that action overrides the original one in the extending configurable.
- Parameters:
**kw – a dictionary of configuration objects as specified by the
configclass attribute.- Returns:
an immutable value uniquely identifying this action.
- perform(func: collections.abc.Callable[Ellipsis, Any], staticdirectory_registry: onegov.core.utils.Bunch) None[source]
Do whatever configuration is needed for
obj.Needs to be implemented by the
Actionsubclass.Raise a
DirectiveErrorto indicate that the action cannot be performed due to incorrect configuration.- Parameters:
obj – the object that the action should be performed for. Typically a function or a class object.
**kw – a dictionary of configuration objects as specified by the
configclass attribute.
- class core.directives.TemplateVariablesRegistry[source]
-
- callbacks: list[collections.abc.Callable[[core.request.CoreRequest], dict[str, Any]]] = [][source]
- get_variables(request: core.request.CoreRequest, base: dict[str, Any] | None = None) dict[str, Any][source]
- class core.directives.TemplateVariablesAction[source]
Bases:
dectate.ActionRegisters a set of global template variables for chameleon templates.
Only exists once per application. Template variables with conflicting keys defined in child applications override the keys with the same name in the parent application. Non-conflicting keys are kept individually.
Example:
@App.template_variables() def get_template_variables(request): return { 'foo': 'bar' }
- config[source]
Describe configuration.
A dict mapping configuration names to factory functions. The resulting configuration objects are passed into
Action.identifier(),Action.discriminators(),Action.perform(), andAction.before()andAction.after().After commit completes, the configured objects are found as attributes on
App.config.
- identifier(templatevariables_registry: TemplateVariablesRegistry) int[source]
Returns an immutable that uniquely identifies this config.
Needs to be implemented by the
Actionsubclass.Used for overrides and conflict detection.
If two actions in the same group have the same identifier in the same configurable, those two actions are in conflict and a
ConflictErroris raised duringcommit().If an action in an extending configurable has the same identifier as the configurable being extended, that action overrides the original one in the extending configurable.
- Parameters:
**kw – a dictionary of configuration objects as specified by the
configclass attribute.- Returns:
an immutable value uniquely identifying this action.
- perform(func: collections.abc.Callable[[core.request.CoreRequest], dict[str, Any]], templatevariables_registry: TemplateVariablesRegistry) None[source]
Do whatever configuration is needed for
obj.Needs to be implemented by the
Actionsubclass.Raise a
DirectiveErrorto indicate that the action cannot be performed due to incorrect configuration.- Parameters:
obj – the object that the action should be performed for. Typically a function or a class object.
**kw – a dictionary of configuration objects as specified by the
configclass attribute.
- class core.directives.ReplaceSettingSectionAction(section: str)[source]
Bases:
dectate.ActionRegister application setting in a section.
In contrast to the regular SettingSectionAction this completely replaces the existing section.
- config[source]
Describe configuration.
A dict mapping configuration names to factory functions. The resulting configuration objects are passed into
Action.identifier(),Action.discriminators(),Action.perform(), andAction.before()andAction.after().After commit completes, the configured objects are found as attributes on
App.config.
- depends[source]
List of other action classes to be executed before this one.
The
dependsclass attribute contains a list of other action classes that need to be executed before this one is. Actions which depend on another will be executed after those actions are executed.Omit if you don’t care about the order.
- identifier(**kw: Any) str[source]
Returns an immutable that uniquely identifies this config.
Needs to be implemented by the
Actionsubclass.Used for overrides and conflict detection.
If two actions in the same group have the same identifier in the same configurable, those two actions are in conflict and a
ConflictErroris raised duringcommit().If an action in an extending configurable has the same identifier as the configurable being extended, that action overrides the original one in the extending configurable.
- Parameters:
**kw – a dictionary of configuration objects as specified by the
configclass attribute.- Returns:
an immutable value uniquely identifying this action.
- perform(obj: collections.abc.Callable[[], collections.abc.Mapping[str, Any]], setting_registry: morepath.settings.SettingRegistry) None[source]
Do whatever configuration is needed for
obj.Needs to be implemented by the
Actionsubclass.Raise a
DirectiveErrorto indicate that the action cannot be performed due to incorrect configuration.- Parameters:
obj – the object that the action should be performed for. Typically a function or a class object.
**kw – a dictionary of configuration objects as specified by the
configclass attribute.
- class core.directives.ReplaceSettingAction(section, name)[source]
Bases:
morepath.directive.SettingActionA setting action that takes precedence over a replaced section.
So we can override single settings without overriding the whole section.
- depends[source]
List of other action classes to be executed before this one.
The
dependsclass attribute contains a list of other action classes that need to be executed before this one is. Actions which depend on another will be executed after those actions are executed.Omit if you don’t care about the order.