2023¶
This is the 2023 change log for Lino. Learn how to read and maintain this document in Documenting changes.
2023-05-22¶
Remove collectstatic
command (extended).
Add buildcache
command.
What collectstatic
had done so far is now saperated into
the following three commands:
2023-05-02¶
Some optimizations in lino_xl.lib.calview
.
See https://luc.lino-framework.org/blog/2023/0502.html
2023-04-17¶
Removed columns cal.Event.access_class and cal.Event.sequence.
Removed choicelist cal.AccessClass
In lino_xl.lib.cal
, renamed plugin configuration parameter
demo_absences
to with_demo_absences
.
2023-04-10¶
More changes for #4935 (bug with picture format in [upload] memo
command). Added 6 demo photos by Luc Saffre. More documentation. New memo
command [gallery]
. The cms1 demo project now includes a page with usage
examples of the [upload]
and [gallery]
commands.
2023-04-08¶
Fixed a bug: The [upload]
memo command did not parse format specifiers
correctly.
2023-04-07¶
Added feature "multiple web front ends". The Site.default_ui
attribute
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")]
2023-04-05¶
Refactor: moved RecurrenceSet, Recurrencies, DurationUnit, DurationUnits & Weekdays from
lino_xl.lib.cal
to lino.modlib.system
.
Refactor: moved Procedure, Procedures, Job, JobRule, Tasks & SetupTasks from
lino.modlib.system
to lino.modlib.linod
Added the following classes to linod plugin:
lino.modlib.linod.RunJob
lino.modlib.linod.LogLevels
lino.modlib.linod.JobsByRule
A linod.Job
is not editable and is only a historical record of a system task.
Refactor: moved Job.cancelled
to JobRule
Added JobRule.log_level
.
2023-04-02¶
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
dialog.
2023-03-31¶
Added the following classes to system plugin:
lino.modlib.linod.Procedure
lino.modlib.linod.Procedures
lino.modlib.linod.JobRule
lino.modlib.linod.JobRules
lino.modlib.linod.Job
lino.modlib.linod.Jobs
lino.modlib.linod.tasks.Tasks
lino.modlib.linod.SetupTasks
and removed dependencies to schedule python package.
Add ChoiceListField.strict
attribute.
2023-03-29¶
Ticket #4742 (Make the CMS demo more convincing). Visible result is the
cms1 demo project. This caused a series of changes:
In lino_xl.lib.pages
we renamed Page
to Node
.
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 UploadVCardFile
model exists now only when contacts.use_vcard_export
is True. The
ShowAsHtml
action was defined four times.
2023-03-19¶
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.
2023-03-13¶
The synodal
package now knows our public demo servers. We added some
usage examples in the README.rst
, and this file is no longer being
generated by inv bd
. And it is now being tested by inv test
.
2023-02-19¶
Fixed #4864 (AttributeError: 'Site' object has no attribute
'obj2memo'), which caused a little avalanche of internal optimizations. For
example, lino.utils.DelayedValue()
is now a function that directly
returns a dict
rather than instantiating an object that has no other
purpose than being converted to a dict by lino.utils.py2js()
. Also
Layout.get_layout_handle
no
longer takes an argument to specify the front end (because it was always the
same).
As a side effect, in lino_welfare.modlib.cv
the three
system.SiteConfig
fields propgroup_skills
,
propgroup_softskills
and propgroup_obstacles
have been replaced
by a field PropGroup.property_area
, which points to a choice in new
choicelist PropertyAreas
. Until now lino_xl.lib.properties
was
considered deprecated (and as a consequence the lino_welcht.modlib.cv
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_skills
, propgroup_softskills
and
propgroup_obstacles
, (2) set the PropGroup.property_area
field
for the three property groups "Skills", "Softskills" and "Obstacles".
2023-02-17¶
Fixed #4864, which caused disturbing regressions on two production sites.
Release to pypi: Lino, XL, Noi
2023-02-08¶
The demo date in your settings.py
file (the_demo_date
) can now be specified as a str
or
int, i.e. without having to import datetime
. In that case Lino will
convert it during startup to a datetime.date
using
rstgen.utils.i2d()
.
2023-02-04¶
Renamed obj2str()
to lino.core.requests.BaseRequest.obj2htmls()
. The
s stands for "safe". It seems that we will move away from using etree and use
Django's mark_safe
system instead.
2023-02-04¶
settings.SITE.build_site_cache
now accepts a new keyword argument later
. This simply touches the
settings.py
. Used in after_ui.save()
of
lino_xl.lib.excerpts.ExcerptType
.
2023-01-25¶
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
comments_mention.py
. The lino.modlib.memo.Mention
objects will be
created by pm checkdata -f
.
2023-01-18¶
The 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
Session.computed_duration
invoicing.Item
now has a meaningful allow_cascaded_delete
.
2023-01-07¶
New option --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
methods deactivate()
and is_active()
. When a plugin is inactive, its
database models exist but otherwise almost everything, including its actors,
becomes non-existent. The tinymce
and extensible
plugins now deactivate
themselves in their on_init()
method when the default_ui
is not extjs.