- 15 May, 2023 19 commits
-
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
also str representation of unicode character is different.
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Arnaud Fontaine authored
-
Kazuhiko Shiozaki authored
-
Aurel authored
-
- 12 May, 2023 2 commits
-
-
Yusei Tahara authored
-
Yusei Tahara authored
Thanks to Vincent Pelletier for his help on this bug fix.
-
- 08 May, 2023 2 commits
-
-
Roque authored
See merge request nexedi/erp5!1782
-
Jérome Perrin authored
also set hide_rows_on_no_search_criterion to force displaying the list even without search, this is a report, we we always want to see records.
-
- 03 May, 2023 2 commits
-
-
Roque authored
-
Xiaowu Zhang authored
See merge request nexedi/erp5!1781
-
- 02 May, 2023 7 commits
-
-
Jérome Perrin authored
This is done on the process running test (by ERP5TypeTestCaseRequestConnection) and when using timerserver loop (by TimerServer which calls publish_module), but this was never set in processing_node. Before 3b874e49 (ERP5Type/tests: review requests in tests, 2023-04-19) getRequest could find a request anyway, because the test pached getRequest to find a request from the app, but after this change executing activities in an instance running with runUnitTest without test specified failed with: Module importlib, line 37, in import_module __import__(name) Module Products.ERP5Type.dynamic.component_package, line 412, in load_module return self.__load_module(fullname) Module Products.ERP5Type.dynamic.component_package, line 379, in __load_module erp5.component.ref_manager.add_module(module) Module Products.ERP5Type.dynamic.dynamic_module, line 75, in add_module self.add_request(get_request()) Module Products.ERP5Type.dynamic.dynamic_module, line 53, in add_request self.setdefault(last_sync, (WeakSet(), set()))[0].add(request_obj) Module _weakrefset, line 86, in add self.data.add(ref(item, self._remove)) TypeError: cannot create weak reference to 'NoneType' object ( maybe we remove processing_node and use only timerserver, these two methods are more or less equivalent for simple cases and timerserver is closer to what a "real" zope does )
-
Xiaowu Zhang authored
-
Jérome Perrin authored
unittest executes the cleanups after `tearDown`, after the ZODB connection is closed, so accessing database objects cause errors. According to python unittest documentation, it is safe to call `doCleanups` ourselves when we need the cleanup to be executed earlier, this is a typical case where we want the cleanup to be called before closing the database connections.
-
Jérome Perrin authored
ID is not something we like to show to users, modification date and validation state can be better - this assumes that most of the relation are made to nodes, which typically have a validation state and not a simulation state.
-
Jérome Perrin authored
The general idea of this patch is that now that we are using zope.globalrequest, we no longer need to patch get_request, we can simply call zope.globalrequest.setRequest with the request from the test and restore the "real" request afterwards. To achieve this, we reuse Testing.ZopeTestCase.connections.registry, which already has the logic of cleaning up resources in the right place and use a "Request" resource that calls setRequest(test_request) and setRequest(real_request) when closed, so that: - test runs with an independant request - this test request is closed at the end - the real request is restored at the end This also fixes a bug with self.publish when runnning ERP5TypeLiveTestCase from portal_components of a running instance, after a call to self.publish the current request was lost. The testing for this revealed that ERP5TypeLiveTestCase.publish way of dealing with zope.security interaction was not always correct: when running a live test inside runUnitTest (like we do here in testDynamicClassGeneration), there is no security interaction. This was reviewed to use the high level API instead of changing directly the internal storage.
-
Jérome Perrin authored
This can be useful when making a report on movements and when we list properties of the movements that depend on the side but are not directly exposed on MovementHistoryListBrain. One use case was `Movement_getSpecificReference`, which shows `source_reference` when the brain is for the source and `destination_reference` otherwise. With this new approach, instead of guessing we record the "is_source" information at indexing time, when we know this for sure. This also simplifies `MovementHistoryListBrain.date` and `MovementHistoryListBrain.mirror_date` which no longer need to guess the side and fix a problem that because this guessing was done using `movement.getSourceUid()` - which cause security errors when users can not access the source of the movement.
-
Jérome Perrin authored
When editing a state permission mapping the roles were not sorted, because WorkflowState_getPermissionMatrixContext uses a set. Sort before setting the attribute, to prevent useless diffs in ZODB history and business template.
-
- 27 Apr, 2023 2 commits
-
-
Jérome Perrin authored
default activate() behavior is to not queue the activity if another activity with the same path/method_id already exist. We don't want this here.
-
Jérome Perrin authored
We don't even use the new updateLocalRolesOnSecurityGroups instead, because roles are supposed to be applied by an interaction workflow.
-
- 26 Apr, 2023 2 commits
-
-
Jérome Perrin authored
to make it easier to find related documents
-
Jérome Perrin authored
-
- 25 Apr, 2023 1 commit
-
-
Jérome Perrin authored
This compatibibility script was guessing the side, but this is exposed in brain
-
- 21 Apr, 2023 2 commits
-
-
Nicolas Wavrant authored
See merge request nexedi/erp5!1768
-
Nicolas Wavrant authored
The way addToDate was working with dates was not good, and creating confusion when removing 1 month from the last days of a 31-day month, as the previous day had less days than the current month: date = DateTime(2023, 5, 31) print date print addToDate(date, month=-1) > 2023/05/31 00:00:00 GMT+2 > 2023/05/01 00:00:00 GMT+2 This was even more confusing in March, with february having only 28 days: date = DateTime(2023, 3, 31) print date print addToDate(date, month=-1) > 2023/03/31 00:00:00 GMT+2 > 2023/03/03 00:00:00 GMT+2 The new behavior is to, when removing a month, if the new day of the new month is more than the number of days in month to default to the last day of the month. For exemple, removing one month from 31/05 becomes 30/04, and from there it will add/remove the days as necessary. The real issue being that removing a month is ambiguous and can mean a different thing for different people. For reference, the reference implementation of timedelta in python doesn't support adding months: https://docs.python.org/3/library/datetime.html#datetime.timedelta I hope my solution will make the more sense in ERP5's context.
-
- 20 Apr, 2023 1 commit
-
-
Jérome Perrin authored
For zope, a request to /erp5/person_module/person1 or /erp5/organisation_module/person_module/person1 can both be resolved and are (more or less) equivalent. This change brings support for similar request paths for Open API Connectors.
-