This is the 2023 change log for Lino. Learn how to read and maintain this document in Documenting changes.
collectstatic command (extended).
collectstatic had done so far is now saperated into
the following three commands:
Some optimizations in
Removed columns cal.Event.access_class and cal.Event.sequence.
Removed choicelist cal.AccessClass
lino_xl.lib.cal, renamed plugin configuration parameter
More changes for #4935 (bug with picture format in [upload] memo
command). Added 6 demo photos by Luc Saffre. More documentation. New memo
[gallery]. The cms1 demo project now includes a page with usage
examples of the
Fixed a bug: The
[upload] memo command did not parse format specifiers
Added feature "multiple web front ends". The
is now deprecated but currently still yields the old behaviour. The work is not
finished, but already now in
cms1 we have publisher as "root" front end
and react as the "admin" front end:
web_front_ends = [ (None, "lino.modlib.publisher"), ('admin', "lino_react.react")]
Refactor: moved RecurrenceSet, Recurrencies, DurationUnit, DurationUnits & Weekdays from
Refactor: moved Procedure, Procedures, Job, JobRule, Tasks & SetupTasks from
Added the following classes to linod plugin:
linod.Job is not editable and is only a historical record of a system task.
A series of optimizations in
lino_xl.lib.pages for #4872
(Generated content in pages.Node): Nodes with "dynamic" or "generated" content,
e.g. the latest blog entries, now have two different ways of generating their
content: either as a single paragraph or as a story. Node now has an insert
Added the following classes to system plugin:
and removed dependencies to schedule python package.
Ticket #4742 (Make the CMS demo more convincing). Visible result is the
cms1 demo project. This caused a series of changes:
lino_xl.lib.pages we renamed
lino_xl.lib.pages.Node now uses Babel fields instead of separate
database rows for each language. Internal optimizations and bugfixes in
lino.modlib.publisher and the core (action requests). New plugin setting
memo.short_preview_length. The experimental
model exists now only when
contacts.use_vcard_export is True. The
ShowAsHtml action was defined four times.
The docs produced by makehelp made Sphinx warn about "Title overline too short" or "Malformed" table when awide unicode char was being used. Now rstgen uses docutils.utils.column_width() when generating headers and tables.
synodal package now knows our public demo servers. We added some
usage examples in the
README.rst, and this file is no longer being
inv bd. And it is now being tested by
Fixed #4864 (AttributeError: 'Site' object has no attribute
'obj2memo'), which caused a little avalanche of internal optimizations. For
lino.utils.DelayedValue() is now a function that directly
dict rather than instantiating an object that has no other
purpose than being converted to a dict by
longer takes an argument to specify the front end (because it was always the
As a side effect, in
lino_welfare.modlib.cv the three
propgroup_obstacles have been replaced
by a field
PropGroup.property_area, which points to a choice in new
PropertyAreas. Until now
considered deprecated (and as a consequence the
defines three hard-coded database models Skill, SoftSkill and Obstacle), but
this change might save the plugin from getting deprecated. To be observed. Data
migration: (1) edit the
restore.py file to remove
propgroup_obstacles, (2) set the
for the three property groups "Skills", "Softskills" and "Obstacles".
Fixed #4864, which caused disturbing regressions on two production sites.
Release to pypi: Lino, XL, Noi
The demo date in your
settings.py file (
the_demo_date) can now be specified as a
int, i.e. without having to import
datetime. In that case Lino will
convert it during startup to a
s stands for "safe". It seems that we will move away from using etree and use
now accepts a new keyword argument
later. This simply touches the
settings.py. Used in
Done #4801 (Insert images into arbitrary places using memo commands).
Details see Luc's blog.
Data migration: in your
restore.py uncomment the line that loads
lino.modlib.memo.Mention objects will be
pm checkdata -f.
lino_xl.lib.working plugin now supports sub-sessions: when a user
works on two tickets at the same time (has two sessions open), and when one of
them encompasses the other, then the encompassing session automatically
subtracts the duration of the sub-session. New database field
invoicing.Item now has a meaningful
--simulate for the
pm dump2py command.
Fixed #4780. A site maintainer can now switch the
front end without changing the database structure. Plugins can now
deactivate themselves. The
lino.core.plugin.Plugin class has two new
is_active(). When a plugin is inactive, its
database models exist but otherwise almost everything, including its actors,
becomes non-existent. The
extensible plugins now deactivate
themselves in their
on_init() method when the
default_ui is not extjs.