.. include:: /../docs/shared/include/defs.rst .. _book.changes.2021: ==== 2021 ==== This is the 2021 :term:`change log` for :ref:`book`. General information about how to read and maintain this document in :ref:`dev.changes`. 2021-03-08 ========== Release to PyPI : welfare, weleup and welcht 21.3.0. Followed by bugfix releases lino, welfare, weleup and welcht 21.3.1 2021-03-06 ========== :ticket:`4007`: :meth:`babelkw ` now includes :meth:`str2kw `. This avoids us to get locked by code that still uses :meth:`babelkw`. Translators can now add translations for new languages without having to edit the German, French and Estonian :xfile:`.po` files. Usage: in any existing source code for which you want to provide new translations, replace ``babelkw("name", en="foo", de=...)`` by ``babelkw("name", _("foo"), de=...)``. 2021-03-03 ========== Added `zh-hant` (traditional Chinese) to the list of supported translations for :mod:`lino`, :mod:`lino_xl` and :mod:`lino_cosi`. Added a demo project :mod:`lino_book.projects.cosi4`, which uses `zh-hant`. Increased the `max_length` of :class:`lino.utils.mldbc.fields.LanguageField` from 5 to 7 in order to support languages like `zh-hant`. Reviewed the :ref:`dev.translate` page. Released to PyPI: atelier 1.1.28, lino 21.3.0, lino_xl 21.3.0 and lino_cosi 21.3.0. https://www.lino-framework.org/dev/translate/index.html 2021-02-26 ========== Fixed :ticket:`3993` (session has no ticket). Added a first series of primeicon icons as Sphinx `substitution definitions `__. No we can insert the buttons |filter|, |plus|, |refresh|, |trash| and |user| into doc pages. The doctree must use the :mod:`lino.sphinxcontrib.logo` extension, and the page must include a file similar to our :file:`/shared/include/defs.rst` file. 2021-02-25 ========== Miscellaneous bugfixes and changes regarding users of type :attr:`contributor ` in :ref:`noi`. Release to PyPI : lino 21.2.5, XL 21.2.3, Noi 21.2.0. 2021-02-24 ========== Fixed :ticket:`3986`. New methods :meth:`get_request_detail_action ` and :meth:`lino.core.layouts.Layout.add_datasource` to fix a subtle problem in :ref:`avanti`. Also :attr:`Layout._other_datasources` is no longer a :class:`set` but a :class:`list`. The case is covered in :ref:`avanti.specs.get_request_detail_action`. Release to PyPI: Lino 21.2.4 and XL 21.2.2 Fixed :ticket:`3987` (checkdata says 'SiteConfig' object has no attribute 'pupil_guestrole'). The error occurred only when the :attr:`guest_role ` of an :term:`activity line` was empty, that's why it slipped through the test suite. 2021-02-23 ========== Released Lino 21.2.3 and XL 21.2.1 to PyPI (to fix issues like `this one `__). 2021-02-22 ========== .. currentmodule:: lino.modlib.uploads Optimizations in :mod:`lino.modlib.uploads`: Added new plugin options :attr:`remove_orphaned_files ` and :attr:`max_file_size `, and two data checkers :class:`UploadChecker` and :class:`UploadsFolderChecker`. 2021-02-17 ========== API change: Rename :class:`lino.mixins.Uploadable` to :class:`lino.modlib.uploads.mixins.UploadBase`. Fixed a typo bug in :class:`renderer_mixin.JsCacheRenderer` which caused Lino to create an empty media directory "upload" (instead of "uploads") at startup. This bug might be the cause for missing group write permission of files that were uploaded to a production site. If you encounter this problem, check whether your :xfile:`uploads` directory has the sticky group bit set. 2021-02-15 ========== Optimizations for developers: New :term:`django-admin command` :manage:`demotest` increases test coverage. Removed :class:`WebIndexTestCase`, which is functionally included in :manage:`demotest`. Miscellaneous cleanup and optimizations in the test suite. Removed Django 4 deprecation warnings. Regression danger: :meth:`lino_react.react.views.ApiElement.post` no longer passes `http.QueryDict(request.body)` but `request.POST` as data to :func:`action_request `. Release to Pypi: lino-21.2.2 2021-02-14 ========== Fixed :ticket:`3968` (extjs combobox doesn't submit empty value). It is possible that this bugfix reopens :ticket:`3653` (Learning choosers don't work in React front end). 2021-02-13 ========== Release to PyPI: Lino, XL and Avanti. Minor bugfixes : SignIn failed when :attr:`lino.core.site.Site.use_ip_dict` was not `True`. When :class:`lino.modli.memo.PreviewableChecker` was called with --fix, it fixed the problems but didn't report how many problems were fixed. Fixed a regression: Insert button was missing in :class:`lino.modlib.comments.CommentsByRFC`. All comment table summaries are now wrapped into :meth:`html_text `, leading to better text styling under :mod:`lino.modlib.extjs`. New feature: you can now set a new plugin setting :attr:`lino.modlib.comments.Plugin.emotion_range` to either "business" (default) or "social" to select between two alternative sets of emoticons. :ref:`avanti` uses the new "social" range, :ref:`noi` the default "business" range. .. currentmodule:: lino.utils.test Extend :class:`WebIndexTestCase` to use :meth:`DemoTestCase.login` instead of Django's client :meth:`force_login`. So now the JavaScript files are being built for each user type, and a typo bug like :message:`AttrDict instance has no key 'ipdict'` (in Lino 21.2.0) would no longer go undetected. Release to PyPI: Lino and Avanti. 2021-02-12 ========== Fixed a bug in :mod:`lino.modlib.ipdict` that caused it to not report when an IP had been blacklisted. 2021-01-29 ========== Fixed :ticket:`3948`: Lino didn't behave correctly when (a) no weekday at all was selected (which for Lino means "any weekday"), and (b) caused an internal server error when no recursion rule was found. This was in the :meth:`get_next_suggested_date` of a :class:`lino_xl.lib.cal.RecurrenceSet`. Fixed :ticket:`3946`: When a partner is :class:`lino_xl.lib.lists.Member` of some list, this is no longer a reason to refuse deleting the partner. When you confirm to delete such a partner, the list memberships now get deleted as well (in cascade). The title of the :class:`lino_xl.lib.contacts.RolesByPerson` slave panel was "Contact for of (name)", not very helpful. Now it is "(name) is contact person for". Added a custom :attr:`details_of_master_template `. Note that the custom :attr:`label`, "Contact for" is also needed for situations where the master is not known. 2021-01-17 ========== The `ipdict.Connections` table has been reimplemented as :class:`lino.modlib.users.Sessions`. It now uses :mod:`sessions ` and therefore works also on sites with very many users. It also features a "Kill" action to manually delete individual actions. :mod:`ipdict ` is no longer used to show the list of active user sessions. The ipdict approach was not suitable for sites with very many users because it stores every connection in an in-memory `dict`. ipdict is used only for detecting brute force attacks. It now removes every entry after a successful authentication. Internal changes: :class:`lino.core.auth.middleware.DeviceTypeMiddleware` has been merged into :class:`lino.core.auth.middleware.WithUserMiddleware` because it was inefficient to parse the request twice. :class:`BoundAction` has now a :meth:`__str__` method, which is used by user warnings "No permission to run X". Until now these warnings were irritating because the action name wasn't shown in the browser. 2021-01-16 ========== New method :meth:`lino.modlib.ipdict.Plugin.pop_ip_record` removes an (ip address, username) pair from the registry, and Lino uses this when receiving the ``user_logged_out`` signal. 2021-01-15 ========== .. currentmodule:: lino.api.doctest Continued on :ticket:`1162` (A CMS using Lino). The :mod:`lino_book.projects.cms` project now has some improvement. But it is not finished. Internal changes: :func:`lino.core.dashboard.DashboardItem.render` now yields html chunks instead of etree elements. :func:`show_dashboard` and :func:`show_menu` are now defined in :mod:`lino.api.doctest`, no longer as methods of a request. The function :func:`lino.api.doctest.rst2menu` is now used in :ref:`dev.admin_main`. The menu of a multilingual site now shows the languages in the main menu, and users can dynamically switch to another language than the on defined in their preferences. 2021-01-08 ========== Fix #3921 (Journal entry mixes up debit and credit when creating the movements). Fix #3924 (auto_compute_amount does not always work as expected). Release to PyPI: XL 21.1.6. 2021-01-07 ========== Release to PyPI: Lino 21.1.1. Optimizations: #3919 (No suggestions on clearable general account) :meth:`FinancialVoucherItem.account_changed` didn't collect suggestions after entering a clearable account. #3920 (Lino registers the voucher even when exception happens). Release to PyPI: Lino 21.1.2 and XL 21.1.5. 2021-01-06 ========== Release to PyPI: :ref:`xl` 21.1.3. Fix some bugs in :mod:`lino_xl.lib.finan` : The choicelist for FinancialVoucherItem.match didn't respect the suggest_future_vouchers settings and therefore always showed all matches, including those that happen in the future and won't get satisfied. Visible result: you select one of these matches, but Lino then sets the field to blank. After selecting a partner, Lino didn't suggest anything (because amount was 0.00, not None). FillSuggestionsToVoucherItem caused an additional item to be created. Release to PyPI: :ref:`xl` 21.1.4 and Lino 21.1.0 Fix :ticket:`3917` (Lino forgets the journal after saving a bank statement). 2021-01-05 ========== Miscellaneous minor optimizations for entering bank statements. :class:`finan.DatedFinancialVoucherItem` now also fills the date field from last_item_date. Trying to fix surprizing behaviour after :class:`FillSuggestionsToVoucherItem`. Ledger movements in :class:`ledger.MovementsByVoucher` are now ordered by :attr:`seqno`, i.e. by their "natural" order of creation. Fix a typo bug in :mod:`lino_xl.lib.cal` that caused Lino to no show anything in cal.EntriesByGuest although the person was present in some calendar entry. 2021-01-03 ========== Add new item :attr:`vatless` to :class:`lino_xl.lib.vat.VatClasses`. Fix :ticket:`3909`. After editing the entry_date of the last voucher of the journal we don't want its number to increase. 2021-01-02 ========== Fix :ticket:`3906` (active_fields are disturbing for city and zip_code). In :class:`lino_xl.lib.countries.CountryCity` the fields city and zip_code are no longer :attr:`active_fields `. Fix :ticket:`3905` (Purchase invoice from private person suggests VAT). This was a bug in :mod:`lino_xl.lib.eevat` and :mod:`lino_xl.lib.bevat`. Fix :ticket:`3907` (Cannot enter into "Expense" column of bank statement) Release to PyPI: :ref:`xl` (2 versions) 2021-01-01 ========== Optimized column layout of :class:`lino_xl.lib.sales.InvoicesByJournal`. Release to PyPI: :ref:`xl`.