Welcome | Get started | Dive | Contribute | Topics | Reference | Changes | More
lino.core.actions¶
This defines the Action
class and the action()
decorator, and some of the standard actions. See Introduction to actions.
Functions
|
Return a decorator that turns an instance method on a model or a class method on an actor into an action of this class. |
|
|
|
|
|
|
|
|
|
cls is either an actor (a class object) or an action (an instance). |
|
|
|
Classes
|
Abstract base class for all actions. |
|
Called when user edited a cell of a phantom record in a grid. |
|
Delete the selected row(s). |
|
|
|
Base class for actions that update something on every selected row. |
|
Called when user edited a cell of a non-phantom record in a grid. |
|
|
|
The default action for |
|
|
|
|
|
An action that opens a window showing another table (to be specified when instantiating the action). |
|
|
|
Save changes in the detail form. |
|
|
|
|
|
|
|
On instantiation it takes a |
- lino.core.actions.install_layout(cls, k, layout_class, **options)¶
cls is the actor (a class object)
k is one of ‘grid_layout’, ‘detail_layout’, ‘insert_layout’, ‘params_layout’, ‘card_layout’
layout_class
- lino.core.actions.register_params(cls)¶
cls is either an actor (a class object) or an action (an instance).
- class lino.core.actions.Action(label=None, **kwargs)¶
Bases:
Parametrizable
,Permittable
Abstract base class for all actions.
The first argument is the optional label, other arguments should be specified as keywords and can be any of the existing class attributes.
- button_color = None¶
The color to be used on icon-less buttons for this action (i.e. which have no
icon_name
). See alsolino.core.site.Site.use_silk_icons
.Not yet implemented. This is currently being ignored.
- disable_primary_key = True¶
Whether primary key fields should be disabled when using this action. This is True for all actions except
ShowInsert
.
- keep_user_values = False¶
Whether the parameter window should keep its values between different calls. If this is True, Lino does not fill any default values and leaves those from a previous call.
Deprecated because it (1) is not used on any production site, (2) has a least two side effect: the fields never get a default value, even not on first execution, and you cannot explicitly specify programmatic field values. And (3) we actually wouldn’t want to specify this per action but per field.
- icon_name = None¶
The class name of an icon to be used for this action when rendered as toolbar button. Allowed icon names are defined in
lino.core.constants.ICON_NAMES
.
- combo_group = None¶
The name of another action to which to “attach” this action. Both actions will then be rendered as a single combobutton.
- parameters = None¶
See
lino.core.utils.Parametrizable.parameters
.
- use_param_panel = False¶
Used internally. This is True for window actions whose window use the parameter panel: grid and emptytable (but not showdetail)
- no_params_window = False¶
Set this to True if your action has
parameters
but you do not want it to open a window where the user can edit these parameters before calling the action.Setting this attribute to True means that the calling code must explicitly set all parameter values. Usage example are the
lino_xl.lib.polls.models.AnswersByResponse.answer_buttons
andlino_xl.lib-tickets.Ticket.quick_assign_to
virtual fields.
- sort_index = 90¶
Determines the sort order in which the actions will be presented to the user.
List actions are negative and come first.
Predefined sort_index values are:
value
action
-1
10
11
duplicate
20
30
31
50
Print
51
Clear Cache
52
lino.modlib.users.UserPlan.start_plan
53
60
90
default for all custom row actions
100
200
default for all workflow actions (
ChangeStateAction
)
- auto_save = True¶
What to do when this action is being called while the user is on a dirty record.
False means: forget any changes in current record and run the action.
True means: save any changes in current record before running the action. None means: ask the user.
- extjs_main_panel = None¶
Used by
lino_xl.lib.extensible
andlino.modlib.awesome_uploader
.Example:
class CalendarAction(dd.Action): extjs_main_panel = "Lino.CalendarApp().get_main_panel()" ...
- js_handler = None¶
This is usually None. Otherwise it is the name of a Javascript callable to be called without arguments. That callable must have been defined in a
lino.core.plugin.Plugin.site_js_snippets
of the plugin.Also can be defined as a class method, that takes the actor as the only argument and should return a JavaScript executable. An example use case is defined in
lino.modlib.help.OpenHelpWindow
where the return string follows the format:return "let _ = window.open('URL')"
Callable Example:
def js_handler(self, actor): ... return JS_EXECUTABLE
- action_name = None¶
Internally used to store the name of this action within the defining Actor’s namespace.
- defining_actor = None¶
The
lino.core.actors.Actor
who uses this action for the first time. This is set duringattach_to_actor()
. This is used internally e.g. bylino.modlib.extjs
when generating JavaScript code for certain actions.
- hotkey = None¶
An instance of
lino.core.keyboard.Hotkey
. Used as a keyboard shortcut to trigger actions.
- default_format = 'html'¶
Used internally.
- editable = True¶
Whether the parameter fields should be editable. Setting this to False seems nonsense.
- hide_top_toolbar = False¶
This is set to True for
ShowInsert
.As an applicationdeveloper you don’t need this action attribute, but see
lino.core.actors.Actor.hide_top_toolbar
.
Hide navigator actions on window opened by this action.
- never_collapse = False¶
When True the action will always be visible, regardless of whether the toolbar collapsed or not.
- show_in_plain = False¶
Whether this action should be displayed as a button in the toolbar of a plain html view.
- show_in_toolbar = True¶
Whether this action should be displayed in the toolbar.
In ExtJS this will also cause it to be in the context menu of a grid.
For example the
CheckinVisitor
,ReceiveVisitor
andCheckoutVisitor
actions have this attribute explicitly set to False because otherwise they would be visible in the toolbar.
- show_in_workflow = False¶
Whether this action should be displayed in the
workflow_buttons
column. If this is True, then Lino will automatically setcustom_handler
to True.
- select_rows = True¶
True if this action needs an object to act on.
Set this to False if this action is a list action, not a row action.
- http_method = 'GET'¶
HTTP method to use when this action is called using an AJAX call.
- preprocessor = 'null'¶
Name of a Javascript function to be invoked on the web client when this action is called.
- window_type = None¶
On actions that opens_a_window this must be a unique one-letter string expressing the window type.
See constants.WINDOW_TYPES.
Allowed values are:
None : opens_a_window is False
‘t’ : ShowTable
‘d’ : ShowDetail
‘i’ : ShowInsert
This can be used e.g. by a summary view to decide how to present the summary data (usage example
lino.modlib.uploads.AreaUploads.get_table_summary()
).
- callable_from = 'td'¶
A string that specifies from which
window_type
this action is callable. None means that it is only callable from code.Default value is ‘td’ which means from both table and detail (including ShowEmptyTable which is subclass of ShowDetail). But not callable from ShowInsert.
- custom_handler = False¶
Whether this action is implemented as Javascript function call. This is necessary if you want your action to be callable using an “action link” (html button).
- get_django_form()¶
returns a django form object based on the params of this action
- classmethod decorate(*args, **kw)¶
Return a decorator that turns an instance method on a model or a class method on an actor into an action of this class.
The decorated method will be installed as the actions’s
run_from_ui
method.All arguments are forwarded to
Action.__init__()
.
- is_callable_from(caller)¶
Return True if this action makes sense as a button from within the specified caller (an action instance which must have a
window_type
). Do not override this method on your subclass ; rather specifycallable_from
.
- is_window_action()¶
Return True if this is a “window action” (i.e. which opens a GUI window on the client before executing).
- get_label()¶
Return the label of this action, or the action_name if the action has no explicit label.
- attach_to_actor(owner, name)¶
Called once per actor and per action on startup before a
BoundAction
instance is created. If this returns False, then the action won’t be attached to the given actor.The owner is the actor which “defines” the action, i.e. uses that instance for the first time. Subclasses of the owner may re-use the same instance without becoming the owner.
- get_action_permission(ar, obj, state)¶
Return (True or False) whether the given
ActionRequest
ar should get permission to run on the given Model instance obj (which is in the given state).Derived Action classes may override this to add vetos. E.g. the MoveUp action of a Sequenced is not available on the first row of given ar.
This should be used only for light-weight tests. If this requires a database lookup, consider disabling the action in
disabled_fields
where you can disable multiple actions and fields at once.
- get_view_permission(user_type)¶
Return True if this action is visible for users of given user_type.
- run_from_ui(ar, **kwargs)¶
Execute the action. ar is a
BaseRequest
object.
- run_from_code(ar=None, *args, **kwargs)¶
Probably to be deprecated. Execute the action. The default calls
run_from_ui()
. You may override this to define special behaviour
- action_param_defaults(ar, obj, **kw)¶
Same as
lino.core.actors.Actor.param_defaults()
, except that on an action it is a instance method.Note that this method is not called for actions which are rendered in a toolbar (#1336).
Usage examples:
lino.modlib.users.actions.SendWelcomeMail
- get_layout_aliases()¶
Yield a series of (ALIAS, repl) tuples that cause a name ALIAS in a layout based on this action to be replaced by its replacement repl.
- class lino.core.actions.ShowEmptyTable(dl, label=None, **kwargs)¶
Bases:
ShowDetail
The default action for
lino.utils.report.EmptyTable
.
- class lino.core.actions.SaveGridCell(label=None, **kwargs)¶
Bases:
Action
Called when user edited a cell of a non-phantom record in a grid. Installed as update_action on every
Actor
.
- class lino.core.actions.SubmitDetail(label=None, **kwargs)¶
Bases:
SaveGridCell
Save changes in the detail form.
This is rendered as the “Save” button of a detail window.
Installed as submit_detail on every actor.
- class lino.core.actions.CreateRow(label=None, **kwargs)¶
Bases:
Action
Called when user edited a cell of a phantom record in a grid.
- save_new_instances(ar, elems)¶
Currently only used for file uploads.
- class lino.core.actions.ShowSlaveTable(slave_table, help_text=None, **kw)¶
Bases:
Action
An action that opens a window showing another table (to be specified when instantiating the action).
- class lino.core.actions.WrappedAction(bound_action, **kwargs)¶
Bases:
Action
On instantiation it takes a
BoundAction
as a positional argument and returns an action instance that behaves as a wrapper around the given BoundAction.action useful when binding to anotherActor
.
- class lino.core.actions.MultipleRowAction(label=None, **kwargs)¶
Bases:
Action
Base class for actions that update something on every selected row.
- run_on_row(obj, ar)¶
This is being called on every selected row.
- class lino.core.actions.DeleteSelected(label=None, **kwargs)¶
Bases:
MultipleRowAction
Delete the selected row(s).
This action is automatically installed on every editable actor.
- lino.core.actions.action(*args, **kw)¶
Return a decorator that turns an instance method on a model or a class method on an actor into an action of this class.
The decorated method will be installed as the actions’s
run_from_ui
method.All arguments are forwarded to
Action.__init__()
.