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.
Fix React front end encoding problem in choicelists data.
Release to PyPI: React front end
Better support for empty
declaration_plugin : Adapted the
lino_xl.lib.ledger to also work when this setting is empty.
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).
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
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.
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.ledger.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.
lino_xl.lib.sheets, the reports now have columns "Balance before" and
"Balance after" instead of "Debit before", "Credit before", "Debit after" and
Fixed some bugs that caused the report to not show all totals.
Database migration might require manual change in file
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
lino.utils.IncompleteDate.parse() could not parse a date, it no
longer raises an error but returns None.
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.
lino.core.site.Site.setup_quicklinks() no longer searches and executes a
setup_quicklinks() in each plugin, but calls the new
Model.get_simple_parameters method may now return an
iterator (or a list or a tuple) of fields names.
Fixed #3766 ('NoneType' object has no attribute 'get_layout_handle'
when trying to edit any combobox field in the
The duplicate action is again visible for every user, not only for experts (users having
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.
Fix some issues using the recently released version 3.1 of Django (e.g. ImportError: cannot import name 'FieldDoesNotExist')
Fix #3745 (Lino says "partner: cannot be null" when trying to create a person).
Released to PyPI :
Released to PyPI :
lino_welfare 20.8.0 and
Released to PyPI :
Released to PyPI :
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.
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.
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)
Released to PyPI : welfare, weleup and welcht
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)
Several bug fixes.
Released XL 20.7.1 to PyPi.
Released to PyPI (all with version 20.7.0) : Lino, XL, Avanti.
Added a new method
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
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.apc when run on travis) must come before the plugin
Last changes in
MyExpiringUploads is now a
dashboard item. Two new settings
Lino has a new admin command
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
Released lino, xl and cosi to PyPI.
Changes in the
lino_xl.lib.products.PriceRule model) require a database
event_type has been renamed to
fee has been renamed to
Fixed #3637 (can only concatenate str (not "__proxy__") to str).
(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)
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.
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
demo project is an example of an application that had to be adapted to this new
Added a new observable date range
Released Lino 20.4.1 and XL 20.4.2.
Released to PyPI : lino lino-xl
Fix ImportError: cannot import name 'ZERO_DURATION' from 'lino.utils.quantities'
has_open_movements choice to the
parameter field of the
lino_xl.lib.contacts.Partners table didn't work
and was not tested. Fixed it and added test coverage in ledger: General accounting.
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
Released to PyPI : react
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
# qs = cl.objects.filter(journal=jnl, state=VoucherStates.registered) qs = cl.objects.filter(journal=jnl)
Released to PyPI : lino 20.1.1 and xl 20.1.4 (because amici, presto etc are failing on travis).
show_complexity_factors() no longer counts actions with
Fixed a bug that caused
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 The apc demo project.
Released to PyPI : lino 20.1.0 and xl 20.1.3
Don't use get_head_lines for notify (Lino 26c8a9c11)
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.
Released lino-book 20.1.1 to make it installable via pip.
Changed the designation "Uploads" to "Upload files".
The ShowInsert action now has a more specific help text.
lino_xl.lib.ledger.JournalsOverview has now display_mode "summary".
Released Lino Extensions Library 20.1.2.
More bugfixes in
lino_xl.lib.eevat : Sales invoices to
lino_xl.lib.eevat.VatRegimes.outside weren't handled correctly.
Released to PyPI : lino-react 20.1.0, lino-amici 20.1.0, XL 20.1.0