Elements must be declared in the YAML file under the
Every element is declared by its identifier, and its definition is:
either a list of parameters, e.g.:
elements: do_something: type: ACTION label: Do something
or just a string, in which case Rapido will assume it is the
elements: message: BASIC
is equivalent to:
elements: message: type: BASIC
There are different types of elements (defined by the
BASIC: a piece of HTML returned by its implementation function.
ACTION: a button that will execute the implementation function when clicked. Its label is provided by the
TEXT: a text input field.
NUMBER: a number input field.
DATETIME: a date/time input field.
Input elements (i.e.
DATETIME) can be indexed as
text. Indexing is indicated using the
By default, input elements are editable but they might also have a different
COMPUTED_ON_SAVE: the value is computed every time the record is saved,
COMPUTED_ON_CREATION: the value is computed when the record is created.
Action elements are rendered as submit buttons and allow to trigger a call to an associated Python function.
If the function returns a value, it must be a string, and it will be used as a redirection URL for the current request.
This is the way to redirect to another location once the action has been executed.
The following actions can be included in our block HTML layout, and do not require an associated Python function:
_save: creates a record based on the field elements’ submitted values, and then redirects to the record display in read mode;
_edit: opens the current record in edit mode;
_delete: deletes the current record.
Direct HTTP call to elements¶
We usually want to display blocks, but we can also call an element by its URL:
Both GET and POST requests are supported.
If the element is an action, its Python function will be executed;
the returned value is supposed to be a string and will be used as a redirection URL.
When building an application, it allows us to create links that will redirect
the user to the proper location depending on our business criteria
(e.g. if the user belongs to group A, go to
page1, else go to
If the element is not an action, its Python function will be executed, and the result is returned as a response.
We can change the response content type like this:
def my_element(context): context.request.reponse.setHeader('content-type', 'text/csv') return "one,two,three\n1,2,3"