Newsletter January 2020

The Tryton team wishes you a happy new year.
Here are the new features the team has already prepared for the next version.


Changes For The User

We prevent posting draft moves that were created when a statement was validated. Such moves are posted when the statement is actually posted. This ensures a coherent state between the statement and the moves.

In every case the production cost is now allocated automatically to the outgoing moves. The allocation is based on the list price of each of the outgoing products. Any products with no list price are considered as waste and do not have a cost allocated.

We added the list of selection criteria to the carrier. So if you duplicate a carrier, the criteria are also automatically duplicated.

The company module now has its own menu entry and its own administrator group. This provides finer access control.

The “project invoice” group no longer gives access to the timesheets. This provides a better separation of roles.

On small screens (like mobile), the web client no longer displays empty cells. This optimizes the space available for use with other information.

You no longer need to enter a work center for production works that are in a request or draft state.

We now use the multiselection widget to select the week days that a supplier can deliver on.

When starting an CSV export from a client, by default all of the columns in the current view are selected. Before it skipped the Many2One fields for technical reasons, but these are now also selected. This provides the user with better, more expected, behavior.

You can now define a supervisor for each employee. This can be used to define access rules based on the company’s organization.

To improve the display performance on the web client, the number of records displayed is reset to its default value when the list is reloaded.

We implemented a new strategy to position new records in the list. The client now tries to position the new record depending of the list’s current ordering.

Changes For The Developer

Tryton can now use WeasyPrint to convert html and xhtml reports into PDFs. This avoids using LibreOffice which isn’t always as good at rendering the html reports.

The back-end classes can now be imported directly instead of using an indirect function.

The current employee is now in the evaluation context of the record rules. This allows you to create rules that depends on the user’s business role instead of just their user account.

You can now update the action from the ModelView.button_action by returning a dictionary with the value to change. This avoids needing to use a wizard to create a dynamic action.

All the tests are run on the new docker images before publishing them. This reinforces the stability of the published images.

It is now possible to add help text to the keys of Dict fields.

We have extended the generic tests on the wizards to ensure that the buttons point to an existing state.

The views for One2Many and Many2Many fields are no longer pre-fetched if the relation field is displayed with a different widget such as the multiselection widget which doesn’t need a view.

We now run the desktop client tests in our drone CI. This normalizes how tests are executed for all our packages and ensures no regressions are introduced by mistake.

It is now possible to load WSGI middleware using the configuration file. For example to load the InternerExplorerFix from werkzeug:

[wsgi middleware]
ie = werkzeug.contrib.fixers.InternetExplorerFix

[wsgi ie]
kwargs={'fix_attach': False}

We use now the non-standard SKIP LOCK instead of the also non-standard advisory lock when pulling out task from the queue. It has better performance and is more SQL-ish. But this also provides a nicer fallback if the feature is not implemented by the back-end.

It is now possible to use a MultiSelection field as the key for a Dict field.