UI views
Base layouts
Debusine associates a base view in debusine.web.views.base*
to each base
template in debusine/web/templates/web/_base*
, so that the context
expectations of the template can be fulfilled by functions in the view.
Context elements are defined in get_NAME
methods, sometimes cached in
corresponding NAME
cached properties.
base
Defined in debusine.web.views.base.BaseUIView
.
Since it is used as a base view for more specialised base templates, it has
also a get_base_template
methods that returns the name of the base template
to load.
base_rightbar
Defined in debusine.web.views.base_rightbar.RightbarUIView
.
This view defines a sidebar with UI shortcuts and contextual information.
UI widgets
UI widgets are small classes that encapsulate an item of data to be presented to the user and its associated snippet of view code.
The base interface is a class with a render(context: BaseContext) -> str
method that returns the HTML rendering of the information it contains.
Widgets can be passed to templates as part of the view context, and can be
rendered after {% load debusine %}
using the {% widget varname %}
tag.
Using widgets guarantees a consistent visual language across different pages.
Using widgets also allows to write more semantic view tests, where the test can check the data in unrendered widgets in the request context instead of pattern matching HTML.
UI shortcuts
UI shortcuts are widgets representing active button-like elements that can be added to Bootstrap button groups to perform actions about a related UI element.
View support is currently implemented in the
debusine.web.views.base_rightbar.RightbarUIView
base view.
They can currently be defined at a page-wide scope using the
get_main_ui_shortcuts
method, and at a model object scope using the
add_object_ui_shortcuts
method.
The debusine.web.views.ui_shortcuts
module defines various factory methods
to instantiate commonly used UI shortucts.