.. include:: /../docs/shared/include/defs.rst .. _lino.changes.2019: .. _xl.changes.2019: This is the 2019 :term:`change log` for :ref:`book`. General information about how to read and maintain this document in :ref:`dev.changes`. ==== 2019 ==== .. Note: Changes are grouped by date. Every new day gives a new heading. If a release deserves separate release notes, we create a separate document and this file will have a link to it. .. contents:: :local: 2019-12-30 ========== New plugin configuration parameter :attr:`lino_xl.lib.cal.Plugin.demo_absences`. 2019-12-27 ========== Release Lino 19.12.3 and XL 19.12.5 to PyPI. XL 19.12.5 fixed one bug but introduced another: :meth:`register_voucher` is now being called after state change, so the side effect of updating the fields of a VAT declaration was no longer saved. Fixed. Released XL 19.12.6 to PyPI. Discovered and fixed a bug in :mod:`lino_xl.lib.eevat`: a sales intracom invoice must not generate any movement with a VAT amount. 2019-12-26 ========== .. currentmodule:: lino_xl.lib.vat Fixed a bug in :mod:`lino_xl.lib.vat` that caused Lino to not compute correctly a :class:`DeclarationField` with a condition on :attr:`DeclarationField.vat_classes` which mentioned only vat classes to be *excluded* (i.e. prefixed with an "!"). Same for :attr:`DeclarationField.vat_columns` and :attr:`DeclarationField.vat_regimes`. 2019-12-25 ========== Fixed a subtle bug that might have been the cause for :ticket:`3178`. 2019-12-22 ========== The :mod:`lino_xl.lib.households` now provides a usable :class:`HouseholdDetail` when :mod:`lino_xl.lib.addresses` and :mod:`lino_xl.lib.phones` are also installed. Bugfix :ticket:`3429` TypeError: must be str, not __proxy__ (on a recurrent event with non-empty :attr:`lino_xl.lib.cal.RecurrenceSet.positions` field and occurring on more than one weekday. 2019-12-20 ========== The new :attr:`lino.core.model.Model.disable_create_choice` attribute can be used to disable automatic creation from a :term:`learning foreign key` field. Released Lino 19.12.2 to PyPI because 2019-12-19 ========== The :attr:`lino_xl.lib.contacts.Role.person` field is now a :term:`learning foreign key` field. Released XL 19.12.3 to PyPI. 2019-12-18 ========== The :class:`lino_xl.lib.lists.MembersByList` table has two new (virtual) columns "Address" and "Contact details". :class:`lino_xl.lib.lists.MembersByPartner` is now in summary display mode, and list memberships now have a detail window. Released XL 19.12.1 to PyPI (immediately followed by 19.12.2 because 19.12.1 had an oops bug). 2019-12-17 ========== Bugfix : The Estonian VAT declaration (:mod:`lino_xl.lib.eevat`) didn't yet handle Intracom purchases correctly. New feature : national VAT implementations can now prefix observed fields of a VAT declaration field (:attr:`lino_xl.lib.vat.DeclarationField.fieldnames`) with a "-" to indicate that the field is "inverted". 2019-12-16 ========== Released Lino 19.12.1 to PyPI. 2019-12-13 ========== Release to PyPI : version 19.12.0 of lino, lino-xl and lino-cosi. 2019-12-12 ========== More changes in :mod:`lino_xl.lib.vat` and the three national VAT plugins. 2019-12-05 ========== Two new tables :class:`PurchasesByDeclaration` and :class:`SalesByDeclaration` in :mod:`lino_xl.lib.vat`. These are included in the :class:`VatDeclaration` detail view of :mod:`lino_xl.lib.eevat` (other national plugins will follow). 2019-11-25 ========== - New database field :attr:`lino_xl.lib.tickets.Site.private`. - AnonymousUser.is_anonymous - New method :meth:`lino.modlib.comments.Commentable.add_comments_filter` 2019-11-21 ========== Fixed :ticket:`2001` (When I have changed my password, Lino says OK, but then it says "Database problem" and I need to re-login) 2019-11-12 ========== Fixed :ticket:`3333` (Unable to create comments with invalid @user or #ticket). 2019-11-11 ========== Release to PyPI : lino lino-xl lino-welfare lino-weleup lino-react lino-avanti 2019-11-07 ========== The title of insert windows is no longer e.g. "Insert into All Tickets" but simply "New Ticket". Thanks to Amber who had the idea. :ticket:`3327`. 2019-11-06 ========== :meth:`lino_xl.lib.addresses.AddressOwner.get_primary_address` now returns None if MultipleObjectsReturned (instead of raising a server error). 2019-11-02 ========== Added :attr:`Lino.core.actions.Action.react_icon_name`. Used first rather than icon_name. 2019-11-02 ========== We started to publish :ref:`react` as a package on PyPI. Version 19.11.1 might work, but we didn't yet test it. 2019-11-01 ========== The :meth:`BaseRequest.set_confirm_answer` is now being inherited to child requests. The dashboard in :ref:`react` now issues separated Ajax requests for each dashboard item. New attribute :attr:`lino.core.renderer.Renderer.hide_dashboard_items`. 2019-10-31 ========== The :attr:`server_status` field in :class:`lino.modlib.about.About` has been removed because it was showing just the number of pending dialog threads which no longer applies since 20191014 and now caused an error. .. currentmodule:: lino_xl.lib.trends New feature in :mod:`lino_xl.lib.trends`: When the new checkbox :attr:`TrendStage.subject_column` is checked, Lino will add a virtual field to the :attr:`Plugin.subject_model` which shows the date of the first :class:`TrendEvent` of this stage for this client. The columns are not visible by default but the end user can activate them. .. currentmodule:: lino.core.fields Above change required a new minor feature in :mod:`lino.core.fields`: Virtual fields aren't normally used as wildcard data elements. The new attribute :attr:`VirtualField.wildcard_data_elem`. makes it possible to define virtual fields that are used as wildcard data elements. 2019-10-28 ========== Database changes in :mod:`lino_xl.lib.tickets`. 2019-10-24 ========== Database changes for :ticket:`3108` (Report when a ticket or user is mentioned in a comment) in :mod:`lino.modlib.comments` : new model :class:`lino.modlib.comments.Mention`. 2019-10-23 ========== .. currentmodule:: lino_xl.lib.groups Some changes for :ticket:`3284`: The :fixture:`demo` fixture of :mod:`lino_xl.lib.groups` now adds first names for every user because otherwise Lino complains when users.Users inherits from `contacts.Person`. In :mod:`lino_xl.lib.groups` the :attr:`Membership.user` field is now labeled "User" instead of "Author", and the model now has a detail layout and an insert layout (e.g. :class:`MembersByGroup` now has a insert button) 2019-10-21 ========== Fixed a failure in presto caused by changes in :mod:`lino_xl.lib.beid`. 2019-10-19 ========== Fixed a typo bug in :mod:`lino_xl.lib.cal` that caused :message:`NameError: name 'cls' is not defined` e.g. when showing the detail of a :class:`cal.Guest`. :class:`lino.modlib.system.Lockable` now uses a database field instead of an in-memory dict in order to be usable on a multi-process site (:ticket:`3277`). Released Lino to PyPI 2019-10-18 ========== Fixed callbacks for :mod:`lino_xl.lib.beid` actions (:ticket:`3269`) Released Lino and XL to PyPI 2019-10-16 ========== New setting :attr:`simulate_eidreader_path ` for :mod:`lino_xl.lib.beid`. Used in :mod:`lino_book.projects.avanti1` to reproduce :ticket:`3269` without having a Belgian ID card. 2019-10-15 ========== Fixed a TypeError :message:`__str__ returned non-string (type __proxy__)` occuring e.g. when showing the detail of a :class:`lino_xl.lib.excerpts.Excerpt`. The templates :xfile:`excerpts/base.weasy.html` and :xfile:`weasyprint/base.weasy.html` have been optimized. New ``bottomleft`` and ``bottomright`` blocks are expected to contain the `content` property for their respective element. :meth:`lino.core.requests.BaseRequest.get_printable_context` adds a new function :func:`activate_language` to set the language for the remaining part of the template. New method :class:`lino_xl.lib.clients.KnownContactType.get_contacts` (i.e. get them all, not just one) is now used instead of :class:`lino_xl.lib.clients.KnownContactType.get_contact`. Summary layout of :class:`lino_xl.lib.cv.HistoryByPerson` was not very readable: added a colon behind each field label, and the field value is now bold. Fixed a bug in that same summary which inserted an empty bullet at the beginning of the list. Released Lino, XL and Avanti to PyPI. 2019-10-14 ========== New approach for handling callbacks on nginx with multiple worker processes. 2019-10-11 ========== New plugin setting :attr:`multiple_primary_coachings ` for :mod:`lino_xl.lib.coachings`. When this is set to True, the uniqueness of the primary coaching is no longer just per client but per client and :term:`coaching type`. As a result you can have multiple primary coachings per client. :ticket:`3137` 2019-10-08 ========== New database field :attr:`lino_xl.lib.cal.RecurrenceSet.positions`. Fixes :ticket:`3225`. 2019-10-03 ========== Fixed :ticket:`3248` (NameError: name 'force_text' is not defined). A one-day bug caused by yesterday's changes. .. currentmodule:: lino_xl.lib.ledger Fixed some issues in accounting: :ticket:`3236` ('PaymentOrder' object has no attribute 'your_ref'). Payment Orders were also suggesting negative payments. Added a new filter parameter :attr:`ExpectedMovements.same_dc` and use it in :class:`lino_xl.lib.finan.SuggestionsByPaymentOrder`. :ticket:`3215` (the quick search field in booking suggestions now works). The payment orders generated by the :fixture:`payments` fixture were not cleared. Whether a payment order generates individual counter entries (one per partner) no longer depends on :attr:`Account.needs_partner` but on whether the journal has a partner or not (whether :attr:`Journal.partner` is empty or not). 2019-10-02 ========== Moved callback management into a separate module :mod:`lino.core.callbacks`. One benefit is that the code is organized in a better way. The main goal is to get callbacks also work when running under nginx with multiple threads (:ticket:`3228`). 2019-10-01 ========== Fixed a :message:`NameError: name 'unicode' is not defined` in :mod:`lino_xl.lib.outbox`. Released versions 19.10.0 of Lino and XL. 2019-09-30 ========== :class:`lino_xl.lib.polls.AnswersByResponsePrint` no longer forgets to print entries that have only a remark. :meth:`lino.core.requests.BaseRequest.show` has a new optional keyword argument `display_mode` which can be used to ask a summary for a table that does not show as summary by default. The three tables based on :class:`lino_xl.lib.cv.HistoryByPerson` now have a new kind of summary view which displays them as a bullet list where each item includes the field names. 2019-09-27 ========== .. currentmodule:: lino_xl.lib.sheets :meth:`lino.modlib.users.UserPlan.run_start_plan` didn't like it when it found more than one instances of a plan for a given user. Now it simply deletes all existing reports all in that case. In :mod:`lino_book.projects.cosi_ee` it said :message:`MultipleObjectsReturned: get() returned more than one Report -- it returned 2!` (:ticket:`3232`). Fixed a bug in :mod:`lino_xl.lib.sheets` : the :attr:`allow_cascaded_delete ` of the report items weren't set correctly. When you inadvertently try to delete a partner who is mentioned in an accounting report, you want Lino to refuse your action (not to remove the entry from the report). 2019-09-26 ========== :ticket:`3212` (Summary view for RecentComments) : :class:`lino.modlib.comments.RecentComments` now has a summary view that looks much better in the dashboard. And it no longer stops displaying comments modified in the future. This is useful when you modify a comment in a demo database. This change caused a series of changes and optimizations: - Fixed a bug in :class:`lino.modlib.memo.Previewable` which caused it to not use the :attr:`default_ui ` when :attr:`lino.modlib.memo.Plugin.front_end` is `None`. - When a :class:`BaseRequest ` is spawned from a parent, it now inherits the :attr:`request ` attribute (i.e. the incoming Django HTTP request that caused the action request). This is needed so that subrequests can decide whether to generate links using "javascript:" or not. When displaying links in a comment on the exts dashboard, we prefer them to remain under the same url. - The :fixture:`demo2` fixture for :mod:`lino.modlib.comments` generates a series of fictive comments. But until now they all had the real timestamp when the :manage:`prep` command was run. Now they have a fictive demo date and time. 2019-09-25 ========== - Fixed :ticket:`3225` (saving a locked row does not unlock it) - Action preprocessors (the optional function given by :attr:`lino.core.actions.Action.preprocessor`) can now optionally add an attribute ``timeout`` to the returned object to ask Lino to wait before sending the action's AJAX call. This is used by :class:`lino_xl.lib.beid.BeIdReadCardAction` and :class:`lino_xl.lib.beid.FindByBeIdAction` to make sure (or rather probable) that eidreader has done its work before the action runs on the server. This is needed to fix :ticket:`3225` which occurs when nginx is running with a single worker process. 2019-09-24 ========== Released Lino XL 19.9.6 and Lino 19.9.1 for the :term:`site upgrade` of the :ref:`avanti` preview site. The :meth:`lino.core.site.Site.setup_logging` method now sets the level of Django's ``django.utils.autoreload`` logger to ``INFO`` (to avoid the problem reported on `30554 `_). 2019-09-23 ========== A series of changes for :ref:`avanti` (:ticket:`2274`): .. currentmodule:: lino_xl.lib.cv Changes in :mod:`lino_xl.lib.cv`: :attr:`BiographyOwner.language_knowledge` now also shows whether there is a certificate or not. The :class:`CefLevel` choicelist now shows only the values (A0, A1, ...) and no longer their textual descriptions. Changes in :xfile:`final_report.body.html`. .. currentmodule:: lino_xl.lib.polls Change in :mod:`lino_xl.lib.polls`: New table :class:`AnswersByResponsePrint` is now shown in the detail of a response. 2019-09-21 ========== Fixed :message:`'AnswersByQuestionRow' object has no attribute 'get_detail_action'`. 2019-09-20 ========== .. currentmodule:: lino_xl.lib.cal Fixed :ticket:`3210` (Amici removes participants of my meeting). Changed "Edit participants" to "Fill guests" (in :class:`EntryStates`) Renamed :attr:`EntryState.edit_guests` to :attr:`EntryState.fill_guests` Changed the :attr:`EntryState.fill_guests` for :attr:`EntryStates.took_place` from True to False. Not sure whether this is good. To be observed. Maybe this is application specific. Changed the default value for :attr:`EventType.fill_presences` from True to False. Fixed :ticket:`3211` ('DueMovement' object has no attribute 'get_detail_action'). Released XL 19.9.5. Fixed :ticket:`3213` (DataChecker to check/update body_preview) : added a new :class:`PreviewableChecker `. 2019-09-19 ========== :meth:`lino.utils.diag.Analyzer.show_window_fields` no longer shows dummy fields. Released Lino 19.9.4. 2019-09-18 ========== Fixed a bug in :mod:`lino_xl.lib.phones` which caused :manage:`checkdata` to fail when a same partner had multiple contact detail entries marked as primary (MultipleObjectsReturned). Now it creates a message "Multiple primary items for ". Released XL 19.9.4. 2019-09-15 ========== When using :term:`returnable VAT`, the :attr:`total_vat` field is now always empty and the :attr:`total_incl` field does not include the VAT. This is valid per invoice item and per invoice. The :attr:`total_incl` field is labelled "Total to pay" also on items. The amount of retturnable VAT is computed only when the invoice is registered. Released XL 19.9.3. 2019-09-14 ========== Fixed a bug in :class:`lino_xl.lib.cv.LanguageKnowledge` which caused a TypeError :message:`'>' not supported between instances of 'NoneType' and 'str'` when CEF Level was empty. Released XL 19.9.2. 2019-09-12 ========== Released XL 19.9.1. Fixed :ticket:`3183` : When entering the :attr:`vat_regime ` of a partner with empty :attr:`vat_id `, Lino did not show regimes having :attr:`needs_vat_id ` set. This was irritating because users who didn't know about this subtle rule had no chance to understand why. Lino now shows these regimes also when there is no VAT id, but complains :message:`Cannot use VAT regime X for partner without VAT id` when you try to save a document for that regime and that partner. 2019-09-11 ========== Changes in several accounting modules (:mod:`ledger `, :mod:`vat `, :mod:`eevat `, :mod:`bevat`) to fix :ticket:`3192` and :ticket:`2847`. 2019-09-10 ========== Some extensions for :ref:`avanti` (:ticket:`2274`) - New option :attr:`lino_xl.lib.cv.Plugin.with_language_history`. If this is True, Lino adds a field :attr:`LanguageKnowledge.obervation_date` and allows multiple entries per `(person, language)`. This can be used to record a history of the evolution of a person's language knowledge. - Renamed the demo project :mod:`lino_book.projects.adg` to :mod:`lino_book.projects.avanti1`. - Reviewed the :xfile:`avanti/Client/final_report.body.html` template and started using it. - The :fixture:`few_languages` demo fixture for :mod:`lino.modlib.languages` now also sets the :attr:`lino.modlib.languages.Language.iso2` field. 2019-09-05 ========== Disabled tidy error checking in :mod:`lino.utils.html2xhtml` because Tidy 5.6 also reports warnings as errors. Released :ref:`lino` version 19.9.0. 2019-09-04 ========== Fixed invalid HTML in the :xfile:`contacts/Person/TermsConditions.odt` template (in :mod:`lino_xl.lib.contacts`). The curly quotes were corrected by older version of tidy, but Tidy 5.6.0 no longer cleans them up. Released :ref:`xl` version 19.9.0. 2019-08-29 ========== New feature :ticket:`3175` : The :class:`lino.modlib.about.About` dialog now shows the "complexity factors", which now includes the number of active user accounts. 2019-08-27 ========== Bugfix :ticket:`3171` :mod:`lino_xl.lib.courses` says "Course matching query does not exist" on enrolmenmt without course. 2019-08-09 ========== Two optimizations (:ticket:`3159`) in :mod:`lino_xl.lib.ledger` and :mod:`lino_xl.lib.vat`: User can now **manually edit the VAT amount** in account invoices. Added a new field :attr:`lino_xl.lib.ledger.Account.vat_class`. :manage:`migrate` failed e.g. in :ref:`welfare` because e.g. the default value of a database field was a callable which accesses :attr:`lino.core.site.Site.site_config`. Fixed. Released XL 19.8.1 and Lino 19.8.1 to PyPI. 2019-08-07 ========== :attr:`use_linod ` did not yet automatically cause :manage:`install` to install the schedule package. Released XL 19.8.0 and Lino 19.8.0 to PyPI. 2019-08-06 ========== .. currentmodule:: lino_xl.lib.ledger Fixed a bug in :mod:`lino_xl.lib.ledger` : when the :attr:`Account.common_account` was updated via the web interface, Lino did not "realize" this until the server process was restarted. Added a new method :meth:`lino.core.diff.ChangeWatcher.get_old_value`. :class:`lino_xl.lib.vat.InvoicesByJournal` did not display the right sorting order. It was using ['-id'] instead of the order defined in :class:`lino_xl.lib.ledger.ByJournal`. Fixed. The custom values in :mod:`lino.utils.quantities` are now `deconstructible `__. 2019-08-01 ========== Renamed admin command :manage:`configure`to :manage:`install`. The command now calls pip only once for all requirements. 2019-07-31 ========== New feature in :mod:`lino_xl.lib.ledger` : :ref:`internal_clearings` (:ticket:`3106`). Fixed :ticket:`3135` (:class:`RecentComments ` is empty). Released XL 19.7.6 and Lino 19.7.5 to PyPI. 2019-07-30 ========== Released XL 19.7.5 and Lino 19.7.4 to PyPI. 2019-07-28 ========== Added wrapper action for daily calender view to allow for event inserting. 2019-07-25 ========== Maybe fixed :ticket:`2986` (Automatic browser update fails when using a permalink) (``delete p.lv``) 2019-07-23 ========== Released version 19.7.4 of XL to PyPI. (needed for testing :ref:`getlino`). 2019-07-22 ========== Released version 19.7.3 of Lino and XL to PyPI. Fixed: :manage:`install` failed when appy was needed but not yet installed. 2019-07-19 ========== Support creating multiple rows with a single POST after submitting an insert form (for :ticket:`3122`). The :manage:`install` command didn't show the output of the subcommands. Fixed. The :meth:`get_requirements ` of :mod:`lino_xl.lib.mailbox` and :mod:`lino_xl.lib.appypod` check whether the appy or django_mailbox package is already installed before requiring it. To support the use case when a developer has a clone of the appy or django_mailbox sources and uses this version. I 2019-07-18 ========== Added a new method :meth:`lino.core.plugin.Plugin.get_requirements`. Added a new admin command :manage:`configure` (later renamed to :manage:`install`). Both to be used by :cmd:`getlino configure` (:ticket:`3036`). 2019-07-12 ========== Lino now uses the `BASE `__ tag when sending notification emails. The :attr:`front_end ` setting of the :mod:`lino.modlib.memo` plugin is now ready for beta testing on a site with two web front ends. Internal changes (to be changed in :ref:`react`) : The :attr:`plugin` attribute of :class:`lino.core.renderer.Renderer` has been renamed to :attr:`front_end `. The :meth:`get_detail_url` method has been moved from :class:`lino.core.renderer.Renderer` to :class:`lino.core.plugin.Plugin`. The :class:`MailRenderer` class in :mod:`lino.core.renderer` has been removed because it was no longer needed. The :attr:`lino.core.site.Site.mobile_server_url` is no longer used and has been removed. Compare `commit `__ for details. 2019-07-08 ========== The new plugin :mod:`lino.modlib.memo` regroups functionality which until now was dispersed in :mod:`lino.mixins.bleached`, :mod:`lino.utils.memo` and :mod:`lino.utils.soup`. Instead of saying ``SITE.kernel.memo_parser`` you now say ``SITE.plugins.memo.parser``. The :class:`lino.mixins.bleached.BleachedPreviewBody` model mixin has been replaced by :class:`lino.modlib.memo.Previewable`. .. currentmodule:: lino.modlib.comments In :mod:`lino.modlib.comments`, :class:`Comment` needs a database migration because instead of a single field :attr:`body_preview` it now has two fields :attr:`short_preview ` and :attr:`full_preview `. Simply delete the following line in the definition of the :func:`create_comments_comment` function of the :xfile:`restore.py` file:: kw.update(body_preview=body_preview) The :mod:`lino_xl.lib.notes` plugin also requires :mod:`lino.modlib.memo`, but the changes don't need a data migration because it uses just the parser, not :class:`Previewable `. 2019-07-04 ========== .. currentmodule:: lino_xl.lib.ledger The duplicate action didn't work on registered vouchers (:class:`Voucher`). And the and the general behaviour after duplicating a voucher was irritating. Now the :attr:`number ` is set to the next available number and :attr:`entry_date ` to today. General changes for all duplicate actions: The :class:`lino.mixins.duplicable.Duplicate` action now calls :meth:`full_clean` on the newly created copy. And it is now readonly (e.g. also callable on a registered voucher). .. currentmodule:: lino_xl.lib.vat In :class:`InvoicesByJournal` the grid layout was still using :attr:`voucher_date ` instead of :attr:`entry_date `. The default behaviour in :ref:`cosi` is to use only entry_date because this is what counts for accounting. .. currentmodule:: lino_xl.lib.finan Added an :class:`UploadsByController ` panel to the detail layout of :class:`BankStatement`. The :fixture:`std` fixture of :mod:`lino_xl.lib.ledger` now creates an upload type "source document". Note that :data:`UPLOADTYPE_SOURCE_DOCUMENT ` is 4 in order to avoid duplicate keys in :ref:`welfare` (weleup). Optimizations in :mod:`lino.modlib.memo.parser`: Fixed a error occuring when there were no suggesters defined. The parser now makes a pattern clickable without adding the full text and with setting a title for the link so that the text is shown when the mouse hovers over the link. Released Lino 19.7.2 and XL 19.7.2 to PyPI. 2019-07-03 ========== Minor optimizations for :ticket:`3101`. Released Lino 19.7.1 and XL 19.7.1 to PyPI. 2019-07-02 ========== In :mod:`lino_xl.working` we have a new model :class:`lino_xl.working.UserSummary`. Similar to SiteSummary, but per user instead of per site and monthly instead of yearly. 2019-07-01 ========== Reviewed the "license" field of all projects to use "BSD-2-Clause" (an `SPDX identifier `__). Released Lino 19.7.0 and XL 19.7.0 to PyPI. Optimized the columns layout of :class:`lino_xl.lib.ledger.Accounts`. Added a journal group "Miscellaneous transactions" to the default configuration (:class:`lino_xl.lib.ledger.JournalGroups`). 2019-06-29 ========== New method :meth:`lino.core.actors.Actor.get_navinfo`. :class:`lino_xl.lib.cal.CalendarView` navigation now also works using the buttons in the toolbar. 2019-06-28 ========== Fixed :ticket:`861`. Lino now automatically rebuilds the JavaScript files (:xfile:`linoweb.js`) when a :class:`lino_xl.lib.ledger.Journal` has been modified using the web interface. This is needed so that changes become visible in the menu. Note that you still need to reload the browser page in order to actually refresh the menu. Vouchers are now duplicable. (:class:`lino_xl.lib.ledger.Voucher` inherits from :class:`lino.mixins.duplicable.Duplicable`). 2019-06-27 ========== Some general optimizations for :ticket:`3091`: Layout of :class:`lino_xl.lib.cal.EntriesByProject` and :class:`lino_xl.lib.orders.EnrolmentsByWorker`. Some German translations and ui labels. Lino now checks for a database field hiding a previously virtual field of same name and raises a ChangedAPI exception when this happens. Added a demo project and a documentation page which tests it: :ref:`dev.ovfields`. The field :class:`lino_xl.lib.topics.Topic.description` was an example of above pitfall and has been renamed to :class:`lino_xl.lib.topics.Topic.description_text`. This change requires a database migration. Changed the default value for :attr:`lino.core.site.Site.textfield_bleached` to True. Added ``
`` to the default value of :attr:`lino.core.site.Site.bleach_allowed_tags`. Released Lino 19.6.3 and XL 19.6.1 to PyPI. Added the notion of "suggesters" to the memo parser. See :doc:`/specs/noi/memo` for examples. This will be used by the react front-end to configure auto-completion suggestions (:ticket:`3041`). 2019-06-25 ========== Added a new table :class:`lino_xl.lib.cal.EntriesByGuest` for :ticket:`3090`. New method :meth:`lino.core.dbtables.Table.after_create_instance`. Lino now supports a slave table whose :attr:`lino.core.actors.Actor.master_key` is a remote field. Released Lino 19.6.1 and XL 19.6.0 to PyPI. Fixed a bug introduced by 19.6.1 which caused an exception: "Error while computing salesrule__invoice_recipient: 'NoneType' object has no attribute 'full_value_from_object' ( in [, ])" when opening the detail of a client in presto. Released Lino 19.6.2 to PyPI. Fixed a bug in lino.core.model.Model which caused a failure of tst suites Added a new data checker :class:`lino.modlib.system.BleachChecker`. 2019-06-20 ========== When filtering the calendar view on :attr:`lino_xl.lib.cal.Events.presence_guest`, Lino now also shows holiday type entries (i.e. entries whose :attr:`all_rooms ` is checked). The :attr:`lino_xl.lib.cal.Event.max_days` field can now be 0 to say that you don't want any check. Multi-day events must be shown on every day of their date range. Lino didn't yet handle them correctly Added a field :attr:`lino_xl.lib.cal.EventType.fill_presences` because not all events should automatically fill their presences (:class:`lino_xl.lib.cal.Guest`). When :attr:`lino_xl.lib.cal.EntryState.fill_guests` is True, Lino also removes unwanted guests each time you hit the save button. But for example in :ref:`presto` when registering a absence day or a worker, the list of suggested guests is usually empty (because the project is empty), and we don't want Lino to remove any manually added guests. The :fixture:`std` fixture for :mod:`lino_xl.lib.cal` now adds a new entry type "Absence" with this configuration. The :fixture:`demo2` fixture adds some "absences for private reasons", some of them several days. 2019-06-11 ========== Changed the API for using **bleached** text fields. See :attr:`lino.core.site.Site.textfield_bleached` and the :attr:`bleached ` attribute of a :class:`lino.core.fields.RichTextField`. 2019-06-06 ========== Added a new function :func:`lino.modlib.printing.weekdays` to the global default print context. Released Lino 19.6.0 to PyPI. 2019-05-25 ========== Changed :attr:`http_method` of CreateRow to "POST" Some subtle optimizations in XL: translations, permissions 2019-05-25 ========== Fixed 2019-05-22 ========== Fixed :ticket:`3010` (subclasses of Report are not shown in the dashboard). 2019-05-13 ========== Released Lino XL 19.5.4 to PyPI. A new method :meth:`Event.colored_calendar_fmt ` is used by the calender.This method could be overridden for new need. 2019-05-10 ========== Released Lino 19.5.1 to PyPI. Released Lino XL 19.5.2 to PyPI. Removed the customized :meth:`__str__` method for EventType as it disturbs in :ref:`presto`. Fixed a bug in calendar view: must call :meth:`calendar_fmt` on instance, not on class. Show full description when hovering over the truncated text Released Lino XL 19.5.3 to PyPI. 2019-05-09 ========== New database field :attr:`lino_xl.lib.cal.Room.display_color`. 2019-05-08 ========== Translations. Optimization in :mod:`lino_xl.lib.households`: added a member type "Forster-child". :class:`lino_xl.lib.products.Product` is now duplicable. 2019-05-07 ========== Released Lino 19.5.0 to PyPI. Released Lino XL 19.5.0 to PyPI. Removed the changed handler for :attr:`lino_xl.lib.cal.Event.end_time` because it was irritating. Released Lino XL 19.5.1 to PyPI. Minor changes in :mod:`lino_xl.lib.cal`: The new calendar views are now visible for all applications (no longer only presto). The required_roles for the new calendar views were not yet set as it should. In general you must be :class:`lino_xl.lib.office.OfficeUser` or :class:`lino_xl.lib.office.OfficeOperator` (or both). Note that avanti overrides the required_roles of :class:`lino_xl.lib.cal.CalendarView` because they have different rules: only users who may see client names may see the calendar. The default calendar view is now monthly instead of weekly. Restored :meth:`Event.__str__` from previous version. Renamed some classes (e.g. "CalView" became "CalendarView"). 2019-05-06 ========== weasyprint now logs the template names when rendering a template. cgi.escape is deprecated in Python 3 New field :attr:`invoicing.Plan.min_date` can be used to specify a start date. :mod:`lino_xl.lib.invoicing` now injects two fields :attr:`invoicing_min_date` and :attr:`invoicing_max_date` to the :attr:`voucher_model `. These are set for every generated invoice to those specified in the invoicing plan. They can be printed on the invoice so the customer sees the invoiced period. Fixed a bug in :meth:`VoucherTypes.get_for_model ` which caused it to simply return the first possible candidate. But it is possible to have two voucher types which use the same model. It is now an error to call :meth:`VoucherTypes.get_for_model ` (or :meth:`VoucherTypes.get_for_table `) with a model (or a table) for which we don't have a unique voucher type. 2019-05-03 ========== Added :attr:`lino.utils.Parametrizable.use_detail_param_panel` which causes he params panel to be shown in the detail view. The new calendar view seems ready for a first presentation. Congratulations to Tonis and Hamza who implemented this mostly without any assistance by Luc. Quite some changes in the :mod:`lino_xl.lib.healthcare` plugin. This plugin is in proof-of-concept phase and not yet used in any production site. 2019-05-02 ========== Lino (:class:`lino.mixins.ref.StructuredReferrable`) now handles topics with an empty reference more elegantly. Use case :class:`lino_xl.lib.topics.Topic` with empty :attr:`ref ` field. Removed a hack which caused side effects when trying to sort a choicelist with lazy items). The :meth:`lino.core.choicelists.ChoiceList.add_item_lazy` method now specifies `weak=False` for the receiver (as explained in the docs for `Signal.connect `__) instead of storing the wrapper function itself. Lino now handles topics with an empty reference more elegantly :class:`lino_xl.lib.topics.Topic` with empty :attr:`ref ` field. Orders are now printable. 2019-05-01 ========== .. currentmodule:: lino_xl.lib.invoicing Changes in :mod:`lino_xl.lib.invoicing`: Added a new model :class:`Area` to be configured by the site admin via :menuselection:`Configure --> Sales --> Invoicing areas`. New field :attr:`Plan.area`. Removed field :attr:`Plan.journal` (which is replaced by :attr:`Area.journal`). Removed the :class:`StartInvoicingForJournal` action which anyway wasn't used by anybody. The :attr:`detail_layout` of :class:`lino_xl.lib.ledger.Journals` is now specified as a string. Used by :mod:`lino_presto.lib.ledger` which overrides the class. 2019-04-30 ========== Undid the change on 2019-04-23 (:ticket:`2975`): Choicelists are sorted by their natural order of creation. To sort them by their value, you can now call :meth:`lino.core.choicelists.Choicelist.sort`. This is done for :class:`lino_xl.lib.ledger.JournalGroups` by :mod:`lino_xl.lib.orders`, and for :class:`lino_xl.lib.ledger.CommonAccounts` by :mod:`lino_xl.lib.ledger`. 2019-04-29 ========== Add use_detail_params_value as a new attribute to the :class:`lino.core.dbtables.Table`. 2019-04-23 ========== Choicelists are now always sorted by their value (:ticket:`2975`). For example :mod:`lino_xl.lib.orders` adds a journal group "Orders" to :class:`lino_xl.lib.ledger.JournalGroups` with value "05" which means that we want it to comes before the "Sales" group. The ordering of journal groups influences the ordering of items of the main menu. 2019-04-22 ========== :mod:`lino_xl.lib.orders` no longer stores the room per order but expects a field room per journal. Order items and Workers of an order are now deleted in cascade with the order. 2019-04-17 ========== Fixed order of the :class:`lino_xl.lib.cal.Events` table. (:ticket:`2969`) : .. currentmodule:: lino_xl.lib.tickets A few modifications for :ref:`noi` :mod:`lino_xl.lib.tickets`: Renamed state "Started" to "Working". :mod:`lino_xl.lib.tickets` had 'lino_noi.lib.noi' in `needed_plugins`. Bullshit. Removed. Renamed :class:`TicketsNeedingFeedback` to :class:`TicketsNeedingMyFeedback`. And the labels of the two feedback tables are now more similar to the internal $ 2019-04-15 ========== .. currentmodule:: lino.core New method :meth:`requests.BaseRequest.goto_pk`. This required a change in :xfile:`linoweb.js` where I add a global :func:`Lino.goto_record_id` function. Moved :attr:`handle_uploaded_files ` from :mod:`dbtables` to :mod:`actors` because it is also possible on a virtual table like DailyView. The new :class:`lino_xl.lib.cal.DailyView` table shows a basic calendar navigator. Looks promising, though there is more to do. For example we also need a WeeklyView and a MonthlyView. They will share the same navigator. This change requires the newest version of Lino as well. The table is currently visible only in :ref:`presto`. 2019-04-13 ========== :ticket:`2946` Fix calcul of person's age. New option :attr:`lino.modlib.users.StartPlan.update_after_start` 2019-04-11 ========== Override the visible text for the :attr:`lino_xl.lib.vat.VatAccountInvoice.your_ref` field for the purchase invoice. And add this field to the grid panel. Released Lino 19.4.0 to PyPI. Released Lino XL 19.4.0 to PyPI. 2019-04-10 ========== Fixed a bug in :mod:`lino.utils.quantities` which caused ``1*Duration("0:15")`` to print ``0.250000000000000000`` instead of ``0:15``. The :attr:`lino_xl.lib.orders.Order.room` field is no longer nullable. When adding the workers of an order as guests of a calendar entry, Lino no longer sorts them by name. This behaviour came from :mod:`lino_xl.lib.courses` where it is useful, but the workers of an order should remain in their natural order. 2019-04-09 ========== In :meth:`lino.core.site.Site.setup_menu` we now differentiate between the "technical" plugin order and the order "visible to the end user". The end user wants to see menu entries of explicitly installed plugins before those of automatically installed plugins. Lino now supports **choicelist items without a value**. When no value is specified, the :attr:`value ` (the sequence number) is set automatically when it is added to the choicelist. Such choices should not be stored to the database, otherwise they are like normal choicelists. :class:`lino_xl.lib.vat.VatRules` is the first usage example. Lino now supports unbound data checkers. If :attr:`lino.modlib.checkdata.Checker.model` is `None`, the checker is unbound, i.e. the problem messages will not be bound to a particular database object. Fixed a bug in :manage:`diag` : the plugins were listed in a random arbitrary order. :attr:`lino.core.plugin.Plugin.needed_by` is now the immediate parent, not the top-level parent. The loop to the top is now done only in :meth:`lino.core.plugin.Plugin.get_menu_group`. New property :attr:`lino_xl.lib.vat.VatRegime.needs_vat_id`. The chooser for :attr:`lino_xl.lib.contacts.Partner.vat_regime` now also depends on whether the partner has a VAT id or not. The choicelist of the vat_regime field of a voucher wasn't yet filtered. New function :func:`lino_xl.lib.vat.get_vat_regime_choices` used by both choosers. The :class:`lino_xl.lib.vat.VatRegimes` table now shows all these properties. Changes in :mod:`lino_xl.lib.eevat` : removed regime "Private person (reduced)". The regime "Private person" can now be used for any area. Selling to private persons in other countries was not yet allowed. In :mod:`lino_xl.lib.vat` I changed :attr:`declaration_plugins ` to :attr:`declaration_plugin ` because I realized that you can have only one declaration plugin. New config setting :attr:`eu_country_codes `, and the list is now complete (at least at the moment of writing this). :class:`lino_xl.lib.sepa.Payable` now gives a more comprehensible warning "No trade type for {}" when the trade type for the voucher is undefined. I reviewed the :fixture:`demo` fixture of :mod:`lino_xl.lib.contacts`. It has become more readable. It no longer creates cities which don't exist (and instead omits partners in these cities). I removed München and Kelmis because these are difficult to lookup because their name varies with the languages used on the site. Each contact now has at least a city. The :fixture:`demo` fixture for :mod:`lino_xl.lib.vat` now sets fictive VAT numbers for each company. Minor changes in the ordering of menu commands. New property :attr:`lino_xl.lib.vat.VatColumn.common_account` and a new data checker to verify that every VAT column has an account configured if it requires one. 2019-04-03 ========== Fixed :ticket:`2937` (Cannot add Duration and time). Updated the documentation about the :mod:`lino.utils.quantities` module. Invoice generators have a new attribute :attr:`default_invoiceable_qty ` whose default value is ``1`` (as it was until now, but now we can change the hard-coded default value per application). New field :attr:`lino_xl.lib.cal.EventType.default_duration` per calendar entry type. If a calendar entry has a type (:attr:`event_type `) and if that type has a default duration, Lino will change the :attr:`end_time` of an entry when the :attr:`start_date` is changed (and the :attr:`start_time` when the :attr:`end_date`) New field :attr:`lino_xl.lib.cal.EventType.default_duration`. If a calendar entry has a type (:attr:`event_type`) and if that type has a default duration (:attr:`EventTypedefault_duration`), Lino will change the :attr:`end_time` of an entry when the :attr:`start_date` is changed. The :mod:`lino_xl.lib.products` plugin adds one menu entry per product type (:attr:`lino_xl.lib.products.ProductTypes`). When doing this, until now, it used the label of the :attr:`lino_xl.lib.products.ProductType.table_name`, now it uses the :attr:`lino_xl.lib.products.ProductType.text`. The (:attr:`description `) of an order item is now a single-line :class:`CharField` (not a multi-line :class:`RichTextField`) 2019-03-29 ========== :mod:`lino.utils.choosers` now accepts choosers on char fields without a display method. Lino catches edge case of bad extjs code generation. Ticket #2916 2019-03-28 ========== Added ``ar`` param for :func:`lino.modlib.notify.ChangeNotifier.get_change_observers`. After creating record add elem to :attr:`ar.selected_rows`. It is now possible to define a choices method for a :class:`lino.core.choicelists.ChoiceListField`. .. currentmodule:: lino_xl.lib.contacts Limit the choices of :attr:`Partner.vat_regime` depending on the :attr:`Partner.country` and the available :class:`lino_xl.lib.vat.VatRules`. (:ticket:`2924`) Changes in :mod:`lino_xl.lib.orders` and :mod:`lino_xl.lib.cal` for :ticket:`2776`: - :attr:`lino_xl.lib.orders.Order.project` and :attr:`lino_xl.lib.orders.Order.invoice_recipient` were missing in OrderDetail. - :attr:`lino_xl.lib.orders.Order.update_all_guests` caused a UNIQUE error because the workers were being suggested twice. - Optimized the layout of :class:`lino_xl.lib.cal.EventDetail` - When a user manually creates an event on a controller (:class:`lino.modlib.gfks.Controllable`), then Lino now also calls :meth:`lino_xl.lib.cal.RecurrenceSet.before_auto_event_save` and :meth:`lino_xl.lib.cal.EventGenerator.auto_cal_event_type` (if the controller is an instance of these) - The Explorer menu now shows the :class:`lino_xl.lib.products.PriceFactors`. 2019-03-27 (v19.3.3 and v19.3.4) ================================== Minor changes in :mod:`lino_xl.lib.eevat`: VAT rate 20% (not 21%). Removed regime "Delay in collection". Released Lino XL 19.3.3 and 19.3.4 to PyPI. In 19.3.3 :mod:`lino_xl.lib.eevat` failed. 2019-03-21 ========== Added optional ``_ar`` keyword param to :func:`@dd.chooser ` methods, to be able to access current user and actor info. Used by the chooser for :attr:`lino_noi.lib.tickets.Ticket.site` 2019-03-20 ========== Fixed notification order on dashboard. Added .dashboard-item class to divs in the dashboard. Made mark_all_seen action of MyMessages render in dashboard, and not require post-run refresh. 2019-03-19 ========== Disabled force refresh on update feature when running Lino on Pycharm. Fixed minor bug when submitting new ticket from dashboard in extjs3 Restore DEL key on the grid. Released Lino 19.3.1 to PyPI. Released Lino XL 19.3.2 to PyPI. 2019-03-18 ========== Added two new methods :meth:`lino.core.site.Site.get_plugin_configs` and :meth:`lino.core.plugin.Plugin.get_required_plugins`. Feature used by :mod:`lino_xl.lib.vat`. New config setting :mod:`lino_xl.lib.vat.Plugin.declaration_plugins`. 2019-03-17 ========== - Added a new plugin :mod:`lino_xl.lib.eevat`. This is a quickly adapted copy of bevat where we just removed the regimes that make no sense in Estonia. The declaration itself will need more work. 2019-03-16 ========== - :mod:`lino_xl.lib.bevat` has been cleaned up and documented because it will serve as template for the new :mod:`lino_xl.lib.eevat` plugin. 2019-03-15 ========== Release Lino 19.3.0 :mod:`lino_xl.lib.vat` can now be used without also using any of :mod:`lino_xl.lib.bevat` or :mod:`lino_xl.lib.bevats`. It defines a VAT regime ``normal`` and a VAT rule which allows everything. :class:`lino_xl.lib.ledger.MatchRule` now has :attr:`allow_cascaded_delete` set to "journal" (when you delete a journal, related match rules should delete automatically) 2019-03-15 ========== Fixed file upload dialog not closing correctly. 2019-03-14 ========== Added ensure_csrf_cookie decorator to all entry point views in extjs. 2019-03-13 ========== Added `mobile_server_url` attr to SITE, for use in sending notification emails. Have MailRenderer generate urls using `actor.model.get_default_table().__name__` rather than `actor.model.__name__` Means that the url will always point to an actor rather than a model which need to be redirected to an actor. 2019-03-12 ========== Add a new method :meth:`Actor.get_actions_hotkeys` to enable hotkeys binding to actions on table.This method should return a list of hotkeys. 2019-03-11 (v 19.3.1) ===================== .. currentmodule:: lino_xl.lib.beid Moved :func:`read_card_data_from_file` out of :func:`load_card_data`. This is just an internal change used for writing test cases. Released XL 19.3.1 to PyPI. 2019-03-08 ========== Added alert_eval_js responce option, which is a js string that is evaluated after the alert dialog is closed. Added Version checking, so that the server alerts the browser when it's running an old version of lino. 2019-03-07 (v 19.3.0) ===================== Released XL 19.3.0 to PyPI. 2019-03-06 ========== Added CSS classnames to insert, detail, form and actionForm Panel for use in e2e testing. Also for classnames for confirmation dialogs and main-menu, and action panel ok + cancel buttons. 2019-03-04 ========== Make it possible to the actions_hotkeys of a panel to set the 'shift' options. Add new action :meth:`lino_xl.lib.ledger.Voucher.changing_state` to the :class:`lino_xl.lib.ledger.Voucher`. This action changes the invoice between the two Registered and Draft states. This action can be trigger using the Ctrl+X keyboard shortcut. It is defined in the :meth:`lino_xl.lib.ledger.ui.Vouchers.get_actions_hotkeys` . 2019-02-27 ========== Courses with a Course.max_date before today are now longer available as choices when creating a new enrolment. As it was already before for Course.enrolments_until 2019-02-25 ========== Fixed :ticket:`2811` (UnicodeError when re-reading a beid card where the diff contained non-ascii chars). 2019-02-22 ========== Uploading files under Python 3 caused a server error :message:`Exception Value: a bytes-like object is required, not 'str'` (:ticket:`2845`). Released Lino 19.2.1. Fixed a bug in which caused a UnicodeEncodeError in :ref:`lino.specs.export_excel` on `Travis `__ and possibly in other situations as well. Released Lino 19.2.2. 2019-02-20 ========== It is now possible to easily redefine the detail layout for :class:`lino_xl.lib.cal.Rooms` by overriding :class:`lino_xl.lib.cal.RoomDetail` 2019-02-17 ========== Have the renderer return a js string that when eval'd reloads the dashboard, rather than a hard-coded string. 2019-02-14 ========== Make the field's label following FileField visible :ticket:`2830`. 2019-02-13 ========== :meth:`lino_xl.lib.ledger.Voucher.get_wanted_movements` now has a default implementation which returns no movements. 2019-02-12 ========== Translations for :ticket:`2834`. More changes in the :mod:`lino_xl.lib.orders` plugin which is still work in progress for :ref:`presto`. 2019-02-11 ========== Added a button "Close and save window" (:ticket:`2816`) 2019-02-09 ========== Released Lino 19.2.0 to PyPI. Added two columns volume library_file in UploadsByController Released Lino XL 19.2.0 to PyPI. 2019-02-08 ========== .. currentmodule:: lino.modlib.uploads The :mod:`lino.modlib.uploads` plugin has been extended to support :ticket:`2826`. Until now an :class:`Upload` could represent either an uploaded file (the original meaning) or just an entry representing some external document to be monitored by its author, without any uploaded file. With :ticket:`2826` we add a third possibility a "library file", i.e. a file that has been stored on some volume using some other method than uploading. Concretely: - Added a new model :class:`Volume` - Added two fields :attr:`volume` and :attr:`library_file` to the :class:`Upload` model. - The insert_layout of :class:`UploadsByControler` does *not* include the :attr:`volume`, but instead the controller (owner) decides which volume is to be used. IOW a new method :meth:`UploadController.get_uploads_volume`. The field should be hidden or at least readonly when the owner says that there is no volume. Changes in :mod:`lino_xl.lib.vat` and :mod:`lino_xl.lib.ledger` to use the new "volumes" feature (library uploads). For :ticket:`2826`. Concretely: - The detail of a :class:`lino_xl.lib.vat.VatAccountInvoice` now shows the :class:`UploadsByController` slave table. But what if an application wants to use :mod:`lino_xl.lib.vat` without :mod:`lino.modlib.uploads`? e.g. :ref:`tera`. Quick fix : add plugins also to these applications. And :class:`lino_xl.lib.vat.VatAccountInvoice` should implement this method by asking the journal. New field :attr:`lino_xl.lib.ledger.Journal.uploads_volume`. - Every voucher is now potentially an upload controller: :class:`ledger.Voucher ` inherits from :class:`UploadController`. Added a new field :attr:`lino_xl.lib.ledger.Journal.uploads_volume`, and the :meth:`UploadController.get_uploads_volume` for a voucher returns this. 2019-02-05 ========== Fixed :ticket:`2822` (Cannot create new user 'NoneType' object has no attribute 'full_value_from_object') Fixed ActionFormPanel logic to use action.html_method. Changed sign_in action to use POST as html_method. 2019-02-03 ========== .. currentmodule:: lino_xl.lib.beid In :mod:`lino_xl.lib.beid` we moved some functionality from :class:`BeIdCardHolder` into a separate new mixin :class:`SSIN` which can be used also when the plugin is not installed. Existing applications don't need to adapt. Converted docstrings to prosa docs. More changes in the :mod:`lino_xl.lib.orders` plugin which is still work in progress. 2019-02-02 ========== Field values for actons with paramiers no long need to be an array with a key of 'fv'. They now can be included in the root of the data object with the field name as the key. 2019-01-31 ========== .. currentmodule:: lino_xl.lib.products In :mod:`lino_xl.lib.products` we now have a new model :class:`PriceRule` and a new choicelist :class:`PriceFactors` (taken from :mod:`lino_tera.lib.courses`). For :ref:`tera` this means a minor data migration: change "courses.PriceRule" to "products.PriceRule" in the :xfile:`restore.py` field. We have a new plugin :mod:`lino_xl.lib.orders` that is being developed for :ref:`presto`. Not yet stable. 2019-01-28 ========== We fixed the :ticket:`2782` (Dashboard in Jane is slower than before). Store has a new attribute `_disabled_fields_storefield`. 2019-01-24 ========== Changed the verbose name for :class:`lino.modlib.printing.BuildMethods` from "Build method" to "Print method". The field :attr:`lino_xl.lib.contacts.Role.type` had a verbose name "Role" which was useless and irritating because "Function" is clear enough and the same word as in :menuselection:`Configure --> Contacts --> Functions`. Optimized the detail layout of :class:`lino_xl.lib.ledger.Journal` and the library base class for partner details (:class:`lino_xl.lib.contacts.PartnerDetail`). Fixed :ticket:`2813` (the summary of :class:`lino_xl.lib.blogs.LatestEntries` inserted an additional line break when rendering links to database objects using a memo command. Also the German translation did not correctly show date and author of a blog entry in this summary. 2019-01-22 ========== :mod:`lino.sphinxcontrib.help_text_extractor` caused a Sphinx warning :message:`RemovedInSphinx20Warning: app.info() is now deprecated. Use sphinx.util.logging instead.` (fixed) Added intersphinx_urls, srcref_url and doc_trees settings to the main module so that other doctrees can link to the docs. Fixed a little bug in :mod:`lino_xl.lib.vat` : when you created an invoice in a journal with `edit_totals` and leave the total field empty, Lino said "TypeError: unsupported operand type(s) for -: 'NoneType' and 'Decimal'" Added intersphinx_urls, srcref_url and doc_trees settings to the main module so that other doctrees can link to the docs. Released version 19.1.1 2019-01-21 ========== The change notes for :ref:`xl` are now separated from those of :ref:`lino`. New plugin attribute :attr:`lino_xl.lib.tim2lino.Plugin.timloader_kwargs` to be used e.g. as follows:: def setup_plugins(self): self.plugins.tim2lino.configure( languages='de fr', timloader_kwargs=dict(etat_registered="C")) super(Site, self).setup_plugins() This new feature is not tested because the reason was just a missing "u" prefix. 2019-01-18 ========== The categories (:class:`lino_xl.lib.products.ProductCat`) now have a field :attr:`product_type ` (i.e. all applications that depend on it need to migrate). This is because I realized that categories are not useless. The difference between the "category" and the "type" of a product is that end-users can edit the former while the latter are to be provided by the application developer. I fixed a subtle bug in the :meth:`lino_xl.lib.ledger.Plugin.setup_main_menu` method: the Accounting menu came before the Sales menu because a menu for "ledger" was being created before looping over the journal groups. I removed an unused plugin attribute :attr:`intrusive_menu` (whether a journal group is "intrusive" or not now depends on its :attr:`menu_group`). 2019-01-17 ========== The :attr:`ref_max_length ` for :class:`lino_xl.lib.ledger.Journal` is now 5 instead of the default 40. Printing invoices was broken (since we changed the default build method from appy to weasy). It said "No template found for sales/VatProductInvoice/default.weasy.html, excerpts/default.weasy.html". We created a new template :xfile:`sales/VatProductInvoice/default.weasy.html` (in the :xfile:`config` directory of :mod:`lino_xl.lib.sales`). 2019-01-16 ========== I fixed :ticket:`2785` (Django 2.1.5 under Py3 restore.py fails saying disable_constraint_checking). For the test :class:`lino.utils.djangotest.RestoreTestCase`, we need to make sure that foreign_keys is set to OFF before we actually start the restore. 2019-01-10 ========== I fixed :ticket:`2784` (Some actions are duplicated). The show action of :class:`lino_welfare.modlib.integ.ActivityReport` was duplicated in :attr:`lino.core.actors.Actor._actions_list`. Actually nobody ever complained because it was not visible. But since I wrote a test case in :ref:`welfare` (integ specs) which verifies that the ticket is fixed, I must now do a release on PyPI to get the test suite on :ref:`travis` passing again. 2019-01-07 ========== We released Lino 19.1.2 Immediately after the release we discovered a bug in Lino 19.1.2 which caused a missing |insert| button in a critical place in Tera. So we did a quick bugfix release 19.1.3. 2019-01-04 ========== We released Lino 19.1.0 New :class:`lino.core.fields.TableRow`. The message "Form fields may not be submitted with invalid values" says now "Please check all fields of this form before submitting." (:xfile:`linoweb.js`) We released XL 19.1.0 The fields :attr:`addr2` and :attr:`prefix` are now mostly hidden in forms. We consider them obsolete. :mod:`lino_xl.lib.contacts`.