Commit Graph
100 Commits
Author SHA1 Message Date
Nicolas Évrard 1e5fa01e63 Add launch_action helper function 2025-03-07 19:06:04 +01:00
Nicolas Évrard 1f414b20e5 Refactor _convert_action to use keyword-only arguments 2025-03-20 11:37:51 +01:00
Nicolas Évrard 1168597b27 Handle errors when processing wizard steps
Closes #13906
2025-02-13 18:35:32 +01:00
Nicolas Évrard c9072f993e Use an SSL Context when making a request to check the server version
python 3.13 removed the cafile keyword argument thus we have to use an SSL
Context to use those

Closes #13772
2024-12-23 11:56:35 +01:00
Nicolas Évrard 2ab12e8b40 Don't overflow select tag arrow with the option text
Closes #13765
2024-12-19 16:15:39 +01:00
Nicolas Évrard 6f77a527b5 Add missing dot on the form-binary class selector
Closes #13766
2024-12-19 17:08:28 +01:00
Nicolas Évrard 05abf8ef2b Do not set the Group's context when setting a default group on xxx2Many
The context of the field is dynamic so evaluating it only once when creating
the group make it static.
Also the group is already evaluating the parent field context on the fly when
its context is retrieved.

Closes #13726
2024-12-16 10:29:26 +01:00
Nicolas Évrard 294f2d1474 Allow searching on subdivision shorter code
When searching with a pattern, the shorter code is also tested.

Closes #13564
2024-12-15 12:53:34 +01:00
Nicolas Évrard ffeeb1cdfe Parse child of group tags at the end
This allows to preserve the order of the state widgets in the form which is
important when evaluating the emptiness of a group

Closes #13622
2024-11-30 10:24:52 +01:00
Nicolas Évrard 35fb76f754 Add tests on ir.model and ir.model.field write calls on translated fields 2024-09-25 00:12:46 +02:00
Nicolas Évrard be0e2e691a Update only the actual ir.model and ir.model.field translations
Closes #13546
2024-10-01 16:45:46 +02:00
Nicolas Évrard 87ce09a7c7 Deactivate only the class buttons in x2M widgets
Closes #13530
2024-09-19 11:09:47 +02:00
Nicolas Évrard 6907ea5b7b Add warning when using implicit rec_name target for relational domain 2024-09-07 00:39:55 +02:00
Nicolas Évrard 618f20d453 Return the display promise when creating a new record from the screen
This is necessary because otherwise it could result in concurrent update of the
models of the models used by the underlying widgets.

Closes #13545
2024-09-24 16:37:50 +02:00
Nicolas Évrard afd48ab128 Add method to the backend to estimate number of rows
Such that each backend can rely on its own statistics.

Closes #13118
2024-09-28 18:02:31 +02:00
Nicolas Évrard 5cbedc1afd Add tests on PYSON default value 2024-09-27 15:30:47 +02:00
Nicolas Évrard 4a8300f0b2 Handle PYSON default value in Eval for repr
Closes #13533
2024-09-19 16:16:20 +02:00
Nicolas Évrard aa56b367d2 Raise the original RPCException when handling it in RPCProgress
Closes #13385
2024-09-08 17:25:20 +02:00
Nicolas Évrard 428825ac6a Use JSONB to store MultiSelection field by default
Closes #11513
2024-09-02 11:25:49 +02:00
Nicolas Évrard 1fbcf70283 Apply the function field searcher transformation before doing any optimization
This allows to use the OR-to-UNION optimization if the searcher returns only
local columns.
2024-06-27 19:15:07 +02:00
Nicolas Évrard 02f054bd26 Check the return type of Function fields searchers 2024-06-28 15:38:46 +02:00
Nicolas Évrard 6512d36bd1 Rely on the tables dict to choose when to apply the OR-to-UNION optimization
The dict changes in size if non-local columns are used to order the search
results.

Closes #13346
2024-06-13 18:57:14 +02:00
Nicolas Évrard a11522ffd6 Externalize the method to apply sorting on order tuples 2024-06-27 18:09:07 +02:00
Nicolas Évrard fab9093188 Fill default values of record in exception in a single loop 2024-08-31 14:01:36 +02:00
Nicolas Évrard 5e3daac1b8 Do not override id as default values of failed read
Closes #13331
2024-08-31 12:19:20 +02:00
Nicolas Évrard e2e520b280 Raise non processed exceptions when they occur during load of records
It is needed to not bypass catch_error decorator.

Closes #13332
2024-08-31 11:34:20 +02:00
Nicolas Évrard 53bb613564 Implement __deepcopy__ on ImmutableDict
Closes #13408
2024-07-19 19:04:01 +02:00
Nicolas Évrard 93a95bbf4e Allow resizing the attachment preview panel
Closes #13234
2024-07-11 10:21:11 +02:00
Nicolas Évrard 84f987b673 Execute user login's actions sequentially
Closes #13074
2024-03-05 16:37:41 +01:00
Nicolas Évrard eecda83f1d Add a promise to denote the state of the wizard 2024-04-09 18:48:08 +02:00
Nicolas Évrard c8a2e7ad7a Return a promise in Sao.Action.exec_report 2024-03-05 16:36:00 +01:00
Nicolas Évrard 68360837be Use a grid to display dictionaries
Closes #13120
2024-06-30 01:39:08 +02:00
Nicolas Évrard 30eb297753 Use move_to_end to update key recency of memory cache
This is faster than popping and setting the item.
2024-06-19 00:40:38 +02:00
Nicolas Évrard be0ea9e6b7 Update visible columns at the end of tree's redraw
Updating the visibility of all the cells at once allows the browser to compute
the style and layout once instead of once per row.

Closes #13200
2024-04-04 20:56:21 +02:00
Nicolas Évrard 0cd6aaf298 Sort X2M fields according to the order
Since 40615f3e3e8e .browse calls have been replaced by a .read one but .read
does not respect the order of the ids.

Closes #13288
2024-05-30 19:30:14 +02:00
Nicolas Évrard d3e9f3ac5f Use read to fetch reverse field value of x2M field in field get
This avoid to create instances for origin or target just to get their id.

Closes #13245
2024-05-25 12:59:45 +02:00
Nicolas Évrard 56d580ae5b Optimize instance creation in ModelStorage.__getattr__
The kwargs and pysoned context are put in a cache to avoid rebuild them for
each similar instance.

Closes #13245
2024-05-25 12:50:02 +02:00
Nicolas Évrard 4df7a36de3 Set the language when parsing XML files 2024-04-22 10:42:28 +02:00
Nicolas Évrard 370e2f3b41 Use English when fetching records from the database
Closes #13204
2024-04-18 19:00:34 +02:00
Nicolas Évrard 907bcafd64 Fix typo in the name of the filesystem caching class of the XML parser 2024-04-19 15:40:23 +02:00
Nicolas Évrard 5d2e5f9329 Use the catch_warnings context manager when importing relatorio
Using warnings.resetwarnings also reset the warnings filter set from the
environment variable which makes working on fixing warnings more difficult.
2024-05-16 21:19:17 +02:00
Nicolas Évrard a73b28ce96 Check for the existence of a screen before restoring size of wizard's dialog window
Closes #12944
2024-04-13 17:42:02 +02:00
Nicolas Évrard 026ae5bff4 Use PYSON's Bool evaluation for PYSON's Not evaluation
Closes #13096
2024-03-11 16:35:39 +01:00
Nicolas Évrard 3e06f5043a Instantiate PYSON.Bool expression with new from PYSON.Not instances
Closes #13177
2024-03-11 12:43:53 +01:00
Nicolas Évrard b346fc23fb Hide notebooks and groups when they are empty
Closes #13070
2024-03-04 17:14:04 +01:00
Nicolas Évrard 80ffcdea53 Read xxx2Many fields using the dotted notation
Closes #12856
2024-04-07 17:39:13 +02:00
Nicolas Évrard b973f371c8 Add a contextual read limit for related fields 2024-04-08 13:13:14 +02:00
Nicolas Évrard c3a7758c5c Remove the switch-page hack on the notebook
The hack isn't used anymore anyway as the test on self.view.widget is always
True since e8ffb2b2e722
2023-12-20 22:00:13 +01:00
Nicolas Évrard 2f29a24c9c Stop loading fields definition already known by the field 2023-12-18 19:19:39 +01:00
Nicolas Évrard a442953776 Use a pure CSS solution to compute the container view height and width
Closes #12983
2024-04-06 18:30:01 +02:00
Nicolas Évrard 00f81cf62f Limit search for NULL rows when adding a NOT NULL constraint 2024-03-05 16:08:19 +01:00
Nicolas Évrard a12ce3cdc2 Apply overflow value to every parent group of node
Closes #12960
2024-01-26 12:40:14 +01:00
Nicolas Évrard 5c36f4ddee Commit when all modules are upgraded
Closes #12542
Closes #12518
2023-10-24 20:27:14 +02:00
Nicolas Évrard a466db9eed Create table as they are finally set up
If the base tables are not in their final set up the update process will lock
them and it could result in a deadlock when the ir_cache table is used by the
Cache
2023-10-25 18:11:31 +02:00
Nicolas Évrard 75d1af9f84 Allow creating index concurrently 2023-09-27 17:20:20 +02:00
Nicolas Évrard 9ef3a0aafa Allow skipping index creation
Closes #12596
2023-09-27 17:15:44 +02:00
Nicolas Évrard e66e35a0bd Sort correclty eager and lazy fields when calling Form.display
Closes #12890
2023-12-22 14:48:49 +01:00
Nicolas Évrard c5e5ddf2a1 Mark M2M records for addition in parent after they're saved
Closes #12832
2023-12-14 17:54:27 +01:00
Nicolas Évrard 8c82dccd9f Filter history using SQL
Closes #12687
2023-10-29 01:31:05 +02:00
Nicolas Évrard 2f2f15e49b Create indexes on the history table
Closes #12686
2023-10-30 16:37:40 +01:00
Nicolas Évrard 67fe5021ba Do not prevent to fill the cache of fields with a datetime_field set
The value of those fields do not depend on the value of the datetime_field,
only the value of the remote fields read.

Closes #12715
2023-11-22 01:29:47 +01:00
Nicolas Évrard 32fa5569ad Do not prevent to fill the cache of fields with a context
The value of those fields in the database do not depend of the context and
Function fields getter depending on context are tested separately.

Closes #12715
2023-12-12 22:48:01 +01:00
Nicolas Évrard 59b686b264 Report DatabaseOperationalError as an HTTP Service Unavailable error
Closes #12736
2023-11-13 10:42:37 +01:00
Nicolas Évrard e084ca5d66 Use a standard reporting mecanism for all HTTP errors 2023-11-13 10:40:21 +01:00
Nicolas Évrard f756c5f2e3 Insert new keys in dictionary while respecting the key sequence
Closes #12750
2023-11-14 10:20:07 +01:00
Nicolas Évrard 300bad3f6b Assert that only one thread is active in trytond.application 2023-11-22 01:37:11 +01:00
Nicolas Évrard 50c102a2e5 Do not start threads before the end of the evaluation of trytond.application
When uwsgi forks workers it can happen that python execute the code from one of
the launched thread (eg: the cache listener or trytond-status). In that case
python will keep executing the thread and never switch to the main thread. Thus
preventing to listen for incoming connections.

Closes #12758
2023-11-16 23:37:19 +01:00
Nicolas Évrard e1e6492a40 Add a test on search of historical records 2023-11-23 17:56:11 +01:00
Nicolas Évrard bd5e4d6714 Filter history lines matching search when they're too old
Closes #12687
2023-11-03 19:07:11 +01:00
Nicolas Évrard 02650a0ffd Share record's _ids when saving new records
Closes #12657
2023-11-11 13:48:16 +01:00
Nicolas Évrard a42cb450f7 Add timeout parameter on RPC calls
Closes #11293
2023-10-08 00:08:52 +02:00
Nicolas Évrard a09de147a6 Add timeout parameter on RPC calls
Closes #11293
2023-10-08 00:08:52 +02:00
Nicolas Évrard 3f8c74138f Reset state of records when a sibling is in exception on node collapse
When loading a record raises an error, the record stays in error forever.
With the node resetted to an unloaded state another opening of the parent node
will trigger a reread which solves the transient errors

Closes #12463
2023-08-14 17:57:19 +02:00
Nicolas Évrard 583d911bc8 Use grid layout to implement form container in sao
Closes #11966
2023-10-02 12:54:03 +02:00
Nicolas Évrard d1d2437daf Use multiple jobs to dump and restore a test database 2023-09-16 12:36:43 +02:00
Nicolas Évrard c32c645483 Support database cache as template for tests on PostgreSQL 2023-10-02 11:16:27 +02:00
Nicolas Évrard 3d204e96ce Stop the edition of Selection fields in editable Treeviews on focus-out
Closes #12308
2023-06-05 19:09:46 +02:00
Nicolas Évrard 42cdc26e23 Preserve order of inserted column names on multiple insertion
The order of column names must be the same as the list of values to recompose
a correct dictionary of values when raising error message.

Closes #12552
2023-09-10 11:23:19 +02:00
Nicolas Évrard fbc05e3d22 Use source of translation in the unique_key of Translation objects
Closes #12467
2023-08-11 18:40:32 +02:00
Nicolas Évrard 71e9eb854e Reset search offset when domain has changed 2023-08-14 22:33:15 +02:00
Nicolas Évrard 82ae036d3a Add a canonicalize function for domains 2023-08-14 22:32:14 +02:00
Nicolas Évrard 99211dd03d Activate EcmaScript 6 compatibility for tests 2023-06-15 22:30:30 +02:00
Nicolas Évrard f8de1d23c6 Replace NEXTVAL call by IDENTITY for database initialisation 2023-08-14 21:26:59 +02:00
Nicolas Évrard fe44d98d76 Move sleep loop introduced in a32b84d96649 to prevent deadlock to tests
In this changeset we fix an issue with testing.

When using the listener for cache invalidation it results into the database
lock used by the pool that is acquired twice. Once when calling Pool.init ;
once when the transaction is started which calls Cache.sync which in turn calls
Pool.refresh and finaly Pool.stop. It tries to acquire again the re-entrant
lock (but it cannot because it's another thread).

Closes #12457
2023-08-08 15:33:33 +02:00
Nicolas Évrard 6893789faa Rename function with_inactive_records in documentation
The commit e6c72b1f23e7 added the function but the documentation used another
name
2023-06-13 13:39:22 +02:00
Nicolas Évrard 768e44bc8a Return period end date as default date for account move
When period is before today, the default date of the account move must be set
with the period end date.

Closes #12408
2023-08-02 22:05:22 +02:00
Nicolas Évrard 99ded91b41 Clear caches after commit when installing modules
A call to clear_all is required after the commit in order to ensure that the
transaction uses an empty cache from this point. clear_all is not required to
prevent the deadlock on ir.cache because the rollback ensures that nothing
changed from the point of view of this transaction.

Close #12343
2023-07-14 18:50:44 +02:00
Nicolas Évrard 0918f6f425 Allow to use width attribute in button columns of tree views 2023-07-05 10:08:42 +02:00
Nicolas Évrard e445dac393 Transfer configuration, profiles and plugins from previous version
Closes #11016
2023-02-28 16:37:15 +01:00
Nicolas Évrard e77efcc885 Do not reset view when switching to a tabbed wizard form
Closes #12317
2023-05-11 15:39:34 +02:00
Nicolas Évrard 75facbaf4d Do not set previous record in selection changed callback when it is destroyed
Closes #12357
2023-06-27 14:59:33 +02:00
Nicolas Évrard 91ed1cddc1 Use indexes and cache to make search on amounts faster
This optimization relies on the idea that few invoices should stay in the
states where the amount cache fields are empty. It splits the search query in
two parts: one on the cached fields, the other on the computation with the
invoice lines (and tax lines when it applies).

Closes #11919
2023-05-27 09:53:47 +02:00
Nicolas Évrard d894c1f442 Add cache on invoice's amounts
Having cache on the invoice's amounts will allow to make search more efficient
for #11919
2023-05-25 16:21:49 +02:00
Nicolas Évrard 120fe19598 Set right XML ID on message about amount to pay 2023-05-10 17:27:35 +02:00
Nicolas Évrard ba66fb9c6d Set the score to 0 for HashTranslator in PostgreSQL when include is specified
For now indexes using the HASH method do not support the use of included
columns on Postgres.

Closes #12294
2023-05-27 17:12:48 +02:00
Nicolas Évrard 4f28d7ac39 Shorten arguments when logging 2023-05-03 23:13:42 +02:00
Nicolas Évrard 3e6b8bf54d Fill the empty spaces when computing alignment while expanded
Closes #12141
2023-03-14 10:26:08 +01:00
Nicolas Évrard 4301c56033 Drop default on id column of history tables
The migration introduced in baa87cf1a343 would fail because previous migration
would have wrongly set a default value in id column of history tables

Closes #12186
2023-04-05 19:36:27 +02:00
Nicolas Évrard 23304fc2e0 Handle string value set from domain inversion in MultiSelection fields
Closes #12181
2023-04-03 17:02:51 +02:00
Nicolas Évrard 5179e6cd40 Insert multiple rows at once
Closes #12106
2023-03-02 22:43:30 +01:00