Welcome | Get started | Dive | Contribute | Topics | Reference | Changes | More
2023¶
This is the 2023 change log for Lino. Learn how to read and maintain this document in Documenting changes.
2023-12-31¶
Changes in database schema for Lino Noi:
new field Ticket.team will be filled by
pm checkdata -ffields
Site.companyandSite.contact_personhave been removed.
2023-12-18¶
We removed the dash of the --keep-media and --remove-media options of
pm prep --keepmedia and pm initdb --removemedia
2023-12-04¶
New feature #5288 (table of contents of a content page). Added a new
memo command [toc], whicih is allowed only in the body of a
content page. Internal API change:
lino.modlib.memo.parser.MemoParser.parse() has a new optional argument
‘context’. Until now there was no way to let a memo command handler know
the database row it is running on. The
lino.modlib.memo.Previewable mixin uses this and defines a keyword
self into the context. As a side effect, lino.modlib.uploads.Upload
now implements lino.modlib.publisher.Publishable.
Fixed #4084 (Comment.owner is empty when replying to a comment). Also added a data checker that fixes existing data.
2023-12-03¶
Fixed #5278 (send_pending_emails_often caused a SynchronousOnlyOperation exception)
2023-11-15¶
Replace lino_runworker by linod in your
/etc/supervisor/conf.d/*.conf files.
2023-10-23¶
Removed the option --nobuildcache from pm initdb (and pm prep)
because initdb no longer calls pm buildcache at all. You might
have to change the following line in your restore.py file:
call_command('initdb', interactive=args.interactive, buildcache=False)
into:
call_command('initdb', interactive=args.interactive)
2023-10-23¶
The short preview of a comment, page or blog entry now contains at most one image, and this image has a fixed size.
New plugin setting memo.short_preview_image_height.
2023-10-22¶
#5191 : The restore.py script no longer calls pm buildcache.
New option --nobuildcache for pm initdb.
2023-10-20¶
#5172 : A series of changes in lino.modlib.linod : a single
model linod.BackgroundTask instead of JobRule and
Job. In your restore.py uncomment the following lines:
# execfile("linod_jobrule.py", *args)
# execfile("linod_job.py", *args)
Update your supervisor config files: The django-admin command
lino_runworker has been renamed to linod.
#4962 : Lino can now do weekly summaries. See
lino.modlib.summaries.
2023-09-01¶
pm initdb can now remove the media directory when option
--remove-media is specified. This is used by pm prep.
2023-08-20¶
In lino_xl.lib.cal, add setting calendar_fieldnames,
renamed Event.get_calendar to Event._get_calendar().
2023-07-29¶
Fixed a bug in calview.DailyPlannerRow.get_plannable_entries() that caused
the AM planner row to also show the PM calendar entries when both
start_time and end_time were non-empty. The commit
is evident.
2023-07-13¶
The lino.utils.soup.truncate_comment() function has been reimplemented
and doctests are now in a separate document: Truncating HTML texts.
2023-07-10¶
api.doctst.get_json_soup() now supports URIs that return a
delayed_value in React.
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 [file] 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 [file] and [gallery] commands.
2023-04-08¶
Fixed a bug: The [file] 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, Recurrences, 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.modlib.publisher 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.modlib.publisher we renamed Page to Node.
lino.modlib.publisher.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 server administrator 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.