Newsletter October 2021

Here are the latest improvements in preparation for the upcoming 6.2 release.

Changes for the User

The sale module currently provides reporting that displays relevant data grouped by products, categories etc. We now also have a general report that is not grouped but just displays totals.

We now support products without a list price.

The user will be warned if they try to post an invoice with a date in the future.

The web client now has a button to fold/unfold the selected records of a tree.

The dunning records now store their own age.

New Modules

The Product Image Attribute Module adds attributes to product images.

Changes for the System Administrator

The errors that are raised during non-interactive operations (like scheduled tasks or queued jobs) are now listed in the administration entry. These error can be processed by a user, and once solved the task or the job is submitted again.

The trytond-stat command displays the node name on which the process is running. This is useful when the directory that contains the stat socket is shared between multiple machines.

On first login the configuration wizard now has a step that makes it easy to activate modules on the system.

Changes for the Developer

The MPTT behavior has been improved to avoid a full rebuild when creating nested records. It now does a classic update for each level.

The ModelStorage class now has a count() method that returns an estimate of the number of records stored. It uses caching and random invalidation to minimize the cost.

We now use str instead of repr when constructing the warning keys. This allows the same key to be constructed using proteus.

The method remove_forbidden_chars has been added to the tools as it is used by many modules.

The ModelSQL.search method optimizes some queries by using a UNION of sub-queries when clauses contain straight columns of the table and columns of a joined table. In these cases the database can use indexes.

The context can normally only be modified with the Transaction.set_context context manager. In order to enforce this behavior, the context is now an ImmutableDict.

The title of emails generated from a report no longer contain the name of the record from which the report is generated.

The value of the Dict field is an ImmutableDict but the values must also be immutable. So we now use a tuple instead of list.

The server now uses the bigdecimal type from XML-RPC.

For performance reasons we use __slots__ for the classes registered in the Pool. But as this can be broken when one class does not define it we added a generic test which ensures that all the classes in the Pool have __slots__ defined.

When proteus is configured to use XML-RPC, it authenticates on each request. This is slow as we are using a slow hashing method for security and to protect against brute-force attacks. Now proteus can be configured to use a session with XML-RPC.

The grouping option to format numeric widget can be configured on the view.

We unified the way we set email From headers. Tryton now sets the Reply-To and On-Behalf-Of headers when needed.

1 Like