Welcome | Get started | Dive | Contribute | Topics | Reference | Changes | More
2020¶
This is the 2020 change log for Developer Guide. General information about how to read and maintain this document in Documenting changes.
2020-12-31¶
Fixed #3898, an old bug in lino_xl.lib.trading
that caused Lino to
not accept another invoice after having inserted a first invoice.
2020-12-29¶
Lino sites now have a default favicon
. The icon itself needs some
optimization, though, it’s just a very small copy of the Lino logo.
Fixed two tickets #3893 (Exception while resolving variable ‘name’ in template ‘unknown’) and #3890 (GET /static/react/service-worker.js causes 404 under runserver).
2020-12-28¶
Fix React front end encoding problem in choicelists data.
Release to PyPI: React front end
2020-12-26¶
Release to PyPI: The lino package, Lino Extensions Library, Lino Così, Lino Voga, Lino Amici.
2020-12-24¶
Lino Amici : Optimize detail views of households, persons and companies
2020-12-23¶
Lino Voga : Remove custom activity layouts from default settings.
2020-12-19¶
lino_xl.lib.countries.Places
had no insert_layout
and hence no
button. Now it has.
2020-12-17¶
Fixed a bug in lino_xl.lib.finan.BankStatement
caused by
misinterpreting Debit and Credit after #3817 (see 2020-10-15).
2020-10-22¶
Better support for empty declaration_plugin
: Adapted the payments
fixture of lino_xl.lib.accounting
to also work when this setting is empty.
The get_installed_plugins()
of the
lino_voga.lib.voga.settings.Site
no longer yields the
lino_xl.lib.bevats
plugin (because this is done automatically when
declaration_plugin
is set).
2020-10-19¶
Lino no longer prints a message “num2words not installed, use python manage.py
install to install” at each startup of an application that does not install
lino_xl.lib.cal
but imports a mixin from this plugin, This message was
meant to be useful, but it was suboptimal: the recommended thing to do when a
requireed Python package seems to be missing is to run install
(which
will also upgrade dependencies). And then it was disturbing because it caused
the doctests in mentori to fail.
Released xl 20.10.1 to PyPI.
2020-10-15¶
Accounting movements are no longer stored in two separate fields (one for the amount and another for the booking direction, debit or credit) but simply as the amount, and a negative amount indicates a debit. Existing production sites must edit their restore.py:
from lino_xl.lib.accounting.choicelists import DC
def create_ledger_journal(...):
if dc:
kw.update(dc=DC.credit)
else:
kw.update(dc=DC.debit)
# same change also in create_sheets_item()
def create_ledger_movement():
if dc: amount = -amount
kw.update(amount=amount)
#kw.update(dc=dc) # uncomment this line
# same change also in create_finan_bankstatementitem, create_finan_journalentryitem, create_finan_paymentorderitem
It might make sense to run reregister
after database migration.
When migrating from Lino before 20201008, keep in mind that that a checked dc field (True) means credit and not checked (False) means debit, and that Lino now stores the amount of a crediting movement (dc was True) as a negative number.
PyPI releases: react, lino, xl, cosi, voga, tera.
2020-10-05¶
The lino_xl.lib.courses
plugin no longer requires the
lino_l.lib.cal
plugin.
2020-10-01¶
In lino_xl.lib.sheets
, the reports now have columns “Balance before” and
“Balance after” instead of “Debit before”, “Credit before”, “Debit after” and
“Credit after”.
Fixed some bugs that caused the report to not show all totals.
Database migration might require manual change in file /sheets_item.py
where you should change “6100” to “6010” and “6200” to “6020”:
loader.save(create_sheets_item(20,'6010',['Operating expenses', '', 'Operating expenses', 'Operating expenses'],False,'R','6010',None))
loader.save(create_sheets_item(21,'6020',['Other expenses', '', 'Other expenses', 'Other expenses'],False,'R','6020',None))
New admin command showsettings
.
2020-09-25¶
When lino.utils.IncompleteDate.parse()
could not parse a date, it no
longer raises an error but returns None.
2020-09-07¶
lino.utils.diag.Analyzer.get_complexity_factors()
no longer yields the
number of user_roles. Because I realized that this number is meaningless for
discussing the commercial complexity of an application.
2020-09-04¶
lino.core.site.Site.setup_quicklinks()
no longer searches and executes a
global function setup_quicklinks()
in each plugin, but calls the new
plugin method lino.core.plugin.Plugin.get_quicklinks()
. The
Model.get_simple_parameters
method may now return an
iterator (or a list or a tuple) of fields names.
2020-09-01¶
Learning foreign keys now also work in React front end.
The lino_xl.lib.cal.Guest.partner
field is now a learning foreign key.
Moved the functions choices_response()
and choices_for_field()
from lino_react.react.views
to lino.core.views
and to
lino.core.fields
because this was duplicated code.
2020-08-28¶
Fixed two issues in lino_xl.lib.calview
for #3769: “Week
navigation causes calendar to mess up weeks” and “slave title says ‘None in Week
50 / 2019 (09 December)’”
Released to PyPI : lino
20.8.2 and Lino Extensions Library 20.8.2.
2020-08-25¶
Fixed #3766 (‘NoneType’ object has no attribute ‘get_layout_handle’
when trying to edit any combobox field in the
lino.modlib.users.MySettings
form.
2020-08-15¶
Released to PyPI : lino
20.8.1.
2020-08-14¶
The duplicate action is again visible for every user, not only for experts (users having lino.core.roles.Expert
)
Adapted lino.sphinxcontrib.help_texts_extractor
to a change in Sphinx
that caused the help_text.py
files to not get updated any more: the
sphinx.addnodes.desc_signature
node now stores the name of the
described object now in the “ids” attribute instead of “names”. I didn’t
understand every detail but it seems to work again.
2020-08-12¶
Fix some issues using the recently released version 3.1 of Django (e.g. ImportError: cannot import name ‘FieldDoesNotExist’)
2020-08-11¶
Fix #3745 (Lino says “partner: cannot be null” when trying to create a person).
Released to PyPI : lino_xl
20.8.1,
2020-08-10¶
Released to PyPI : lino_welfare
20.8.0 and lino_weleup
20.8.0.
2020-08-07¶
Released to PyPI : lino_presto
20.8.0.
2020-08-05¶
Released to PyPI : lino
20.8.0, lino_xl
20.8.0, lino_avanti
20.8.0
Released to PyPI : lino_openui5
20.8.0
2020-08-04¶
Auto-fill ref field using custom rule : The ref
field of a client in
Lino Avanti (“Legacy file number”) can now automatically find the next
available reference number. The current solution is hard-coded and just enough
to satisfy the customer’s requirement. Not yet sure whether it makes sense to
generalize this feature.
2020-07-21¶
Fixed two exceptions caused by a calendar entry with an auto_type
but no
owner
(which is a checkdata problem because this case doesn’t occur
theoretically). The checkdata message “Has auto_type but no owner.” is now
fixable, it fixes the problem by setting the auto_type to None in that case.
Released Lino Extensions Library to PyPI.
2020-07-20¶
Release to PyPI : lino 20.7.3 (just removed three dependencies, no functional changes)
Release to PyPI : lino 20.7.4, atelier, getlino, xl, avanti, tera, presto (several subtle changes, see blog)
2020-07-17¶
Released to PyPI : welfare, weleup and welcht
Fixed two bugs: #3715 (“IndexError: list index out of range” after deleting from detail window) and #3714 (After saying No to Apply beid changes to client? Lino seems to apply them nevertheless.)
Released to PyPI : Lino and XL
Released to PyPI : avanti (should fix a failure in getlino test suite: Exception: Problem installing fixture ‘/home/lino/lino/lino_local/avanti1/env/repositories/xl/lino_xl/lib/uploads/fixtures/demo2.py’: ‘nathalie’ : no such user)
2020-07-16¶
Several bug fixes.
Released the following packages to PyPI: The lino package 20.7.1, Lino Extensions Library 20.7.2, Lino Tera 20.7.0, OpenUI5 front end 20.7.0.
2020-07-04¶
Optimization for #3695: Upload.needed
is now also included in
the insert window.
Released XL 20.7.1 to PyPi.
2020-07-02¶
Reactivated the weasyprint/top-right.jpg
feature
2020-07-02¶
Released to PyPI (all with version 20.7.0) : Lino, XL, Avanti.
2020-07-01¶
Added a new method lino.core.requests.BaseRequest.clear_cached_status()
.
Fixed a bug in AnswersByResponse
that caused remarks to always be
stored next to the first question of a poll. Fixed a bug that made it impossible
to edit the “My remark” field in AnswersByResponseEditor
.
2020-06-30¶
When LINO_CACHE_ROOT
is set (e.g. on Travis CI), Lino forgot to
add the site configuration directory to its list of config dirs. Another
problem was that these “non-local site config dirs” (for example
lino_book.projects.cosi1
when run on travis) must come before the plugin
config dirs.
2020-06-29¶
Last changes in lino_xl.lib.uploads
: MyExpiringUploads
is now a
dashboard item. Two new settings Plugin.expiring_start
and
Plugin.expiring_end
.
2020-06-27¶
Lino has a new admin command passwd
.
Six releases to PyPI (all with version 20.6.0) : Lino, XL, Lino Presto, Lino Amici, Lino Avanti and React front end.
2020-06-22¶
Fixed #3698 : When using
lino.core.inject.inject_field()
on a model, Lino did not reset the field cache of the MTI children of that model. This turned out to be necessary in some situations.lino.api.doctest.show_choicelists()
now also shows the number of items in each choicelist.
2020-06-06¶
Added a new database field lino_xl.lib.beid.BeIdHolder.nationality_text
.
(#3681)
2020-05-21¶
The item_vat option (whether we want to include VAT in the price of the items
of an invoice) no longer depends on the VAT regime but is configurable
as a new plugin attribute lino_xl.lib.vat.Plugin.item_vat
Released lino, xl and cosi to PyPI.
2020-05-20¶
Changes in the lino_xl.lib.products.PriceRule
model) require a database
migration: Field event_type
has been renamed to lino_xl.lib.products.PriceRule.selector
.
Field fee
has been renamed to lino_xl.lib.products.PriceRule.product
.
2020-05-13¶
Fixed #3637 (can only concatenate str (not “__proxy__”) to str).
WebIndexTestCase now
(1) runs on the populated demo data (and no longer on an empty database created by the django test runner)
(2) checks several variants of test_urls
(3) tests them for each user (unless lino.core.site.Site.user_model
is None)
2020-05-04¶
Released Lino 20.5.1 and XL 20.4.2. With several internal optimizations that caused the test suites of book, presto, amici and welfare to fail.
2020-04-21¶
Lino no longer allows several transitions for a same target state. Every state
of a workflow can have at most one “transition” action for entering this state.
This change imposes more discipline for application developers when designing a
workflow definition. It has the advantage that you can now access the transition
of a given state in order to change its configuration. For example
Lino Presto uses this to change the
lino_xl.lib.cal.MarkEventTookPlace
transition. Added a new attribute
lino.core.workflows.State.transition
and a new exception “Tried to add
another transition to <state name>”. The lino_book.projects.workflows
demo project is an example of an application that had to be adapted to this new
limitation.
2020-04-18¶
Added a new observable date range lino.mixins.periods.Weekly
.
Released Lino 20.4.1 and XL 20.4.2.
2020-03-15¶
Released to PyPI : lino lino-xl
Fix ImportError: cannot import name ‘ZERO_DURATION’ from ‘lino.utils.quantities’
2020-03-10¶
The has_open_movements
choice to the
observed_events
parameter field of the lino_xl.lib.contacts.Partners
table didn’t work
and was not tested. Fixed it and added test coverage in accounting: General accounting.
2020-03-07¶
New method lino.core.tablerequest.TableRequest.gen_insert_button()
is a
generalized and no longer hackerish implementation of the hackerish solution
used in the calview monthly view until now.
When the label of a table is None, the ExtJS front-end now
suppresses the header of the grid panel (including the “open in own window”
button). This is used by the slave tables in the detail layouts of the
calendar views. But note that you cannot simply set label = None
on the
actor because that default value is overridden by the model’s
verbose_name_plural
. So to get an actor without label you be more
explicit and say:
@classmethod
def get_actor_label(cls):
return None
2020-02-04¶
Released to PyPI : react
2020-01-28¶
New feature: every voucher model can now define its own workflow rules. This
change required the state field of vouchers to move from the Voucher model to
the implementing MTI child models. This requires manual changes in the
restore.py
file when migrating existing data. One possibility is to
simply remove the state from create_ledger_voucher and set all vouchers to
“registered” by patching the reregister
command:
# qs = cl.objects.filter(journal=jnl, state=VoucherStates.registered)
qs = cl.objects.filter(journal=jnl)
2020-01-27¶
Released to PyPI : lino 20.1.1 and xl 20.1.4 (because amici, presto etc are failing on travis).
2020-01-24¶
show_complexity_factors()
no longer counts actions with
no_params_window
.
2020-01-22¶
Fixed a bug that caused lino.core.choicelists.ChoiceList.preferred_width
to be 4 for all choicelists. Wrote a new doctest utility
lino.api.doctest.show_choicelists()
so that application maintainers can
easily cover these in their specs. Usage example is cosi1 : A Lino Così for Belgium (DE).
2020-01-18¶
Released to PyPI : lino 20.1.0 and xl 20.1.3
Don’t use get_head_lines for notify (Lino 26c8a9c11)
Fixed #3470 (Lino sets wrong booking direction in suggested bank statement item) and #3471 (Deleting a voucher item does not refresh the grid).
ItemsByVoucher now uses default display_mode for financial vouchers.
Fixed #3473 (eevat declaration doesn’t generate movements). Added an exception “SumDeclarationField may not be payable” to avoid the pitfall.
2020-01-17¶
Released lino-book 20.1.1 to make it installable via pip.
Changed the designation “Uploads” to “Upload files”.
2020-01-15¶
New plugin lino.modlib.publisher
.
Changes in lino.modlib.notify
.
2020-01-10¶
Changes in lino_xl.lib.accounting
and lino_xl.lib.vat
. Fix booking
direction of returnable VAT.
Done #3459 (Move calendar view from “cal” to a separate plugin
lino_xl.lib.calview
). One consequence for data migration: DailyPlannerRow
has moved from cal to calview
2020-01-09¶
The ShowInsert action now has a more specific help text.
lino_xl.lib.accounting.JournalsOverview
has now display_mode “summary”.
Released Lino Extensions Library 20.1.2.
More bugfixes in lino_xl.lib.eevat
and lino_xl.lib.vat
.
2020-01-03¶
Released Lino Care 20.1.0 and Developer Guide 20.1.0 just to get the Travis CI builds green. Released Lino Extensions Library 20.1.1 for Lino Così.
More bugfixes in lino_xl.lib.eevat
: Sales invoices to
lino_xl.lib.eevat.VatRegimes.outside
weren’t handled correctly.
2020-01-02¶
New field lino_xl.lib.accounting.Journal.preliminary
, and
lino_xl.lib.vat
now ignores preliminary transactions.
2020-01-01¶
Released to PyPI : lino-react 20.1.0, lino-amici 20.1.0, XL 20.1.0