- 21 Jun, 2022 3 commits
-
-
Xiaowu Zhang authored
-
Jérome Perrin authored
- Display the editor in ERP5 language, not browser language - Use PDF viewer for Drawing preview - Supports password protected PDFs - Others small changes See merge request !1639
-
Jérome Perrin authored
and several small fixes or changes to make this easier See merge request !1642
-
- 20 Jun, 2022 2 commits
-
-
Jérome Perrin authored
-
Jérome Perrin authored
This was a workaround for ChromeOS, but we realized it was not really good. Disable it for the same reasons as slapos!1196 : - not everybody use ChromeOS - this breaks the ctrl+click shortcut to go to definition/follow link - it makes ERP5 monaco editor behaves differently from others monaco editor - ChromeOS users can use chrome://flags/#use-search-click-for-right-click
-
- 15 Jun, 2022 10 commits
-
-
Levin Zimmermann authored
When cleaning up Wendelin from restricted python pandas code (see https://lab.nexedi.com/levin.zimmermann/wendelin/tree/remove-redundant-pandas), it turned out that there was one line still missing in erp5. This missing line caused a failed test in wendelin functional tests: https://erp5js.nexedi.net/#/test_result_module/20220614-1B46817BD/6 Readding the line fixed the test.
-
Jérome Perrin authored
create_server returns either a BaseWSGIServer or a MultiSocketServer, but add_task only exists in BaseWSGIServer - and the implementation is simply [1]: def add_task(self, task): self.task_dispatcher.add_task(task) by using self.task_dispatcher.add_task directly, we are compatible with both cases. This is relevant when running timerserver with runUnitTest, where we create multiple sockets, one for http and one for web-dav. 1: https://github.com/Pylons/waitress/blob/v1.4.4/src/waitress/server.py#L290-L291
-
Jérome Perrin authored
The default TestCase.__call__ collects errors in a test result that was never retrieved, so errors were silently ignored. By using TestCase.debug , we let errors propagate. --- Minimal reproduction is running directly (ie. not with python -m unittest) a script like this: import unittest class T(unittest.TestCase): def method(self): print('ah ?') boom print('oh') t = T("method") t() # no error t.debug() # NameError: name 'boom' is not defined
-
Jérome Perrin authored
This helps debugging concurrency problems
-
Jérome Perrin authored
-
Jérome Perrin authored
This allows running tests using a timer server loop, that will invoke process timer on all subscribers. The need for this is to test a custom tool using timer server.
-
Jérome Perrin authored
It was enough for 2 nodes, but with 4 nodes I sometimes saw errors.
-
Jérome Perrin authored
This was a deprecated method that no longer exists since ZEO 4 https://github.com/zopefoundation/ZEO/commit/5423f110ddc1034ea0954495957894c60f6da78c
-
Jérome Perrin authored
_setUpDummyMailHost is also used to prevent accidentally sending "real" emails, so we also like to have it enabled for other nodes.
-
Roque authored
See merge request nexedi/erp5!1641
-
- 14 Jun, 2022 4 commits
-
-
Roque authored
-
Julien Muchembled authored
-
Jérome Perrin authored
This happens in project related task report dialog ( testProjectRelatedTaskReport from erp5_report_renderjs_ui_test:testFunctionalRJSReportLanguage )
-
Jérome Perrin authored
jslint complain about trailing commas
-
- 13 Jun, 2022 13 commits
-
-
Jérome Perrin authored
It does not make any sense to open PDF files from this gadget. Also remove duplicate line with documentProperties
-
Jérome Perrin authored
This is intended to store sensitive documents that users will only be able to view from ERP5, but not to easily print or download. To use this, some customization is needed. First, PDF needs to be saved with a password. Then, PDF_getContentPassword type based method needs to be customized to return the password. When using this, we use different password for each document, by deriving a password from a master key using document properties (such as document reference for example)
-
Jérome Perrin authored
A new option render option, "language" is passed to the gadget. It is a two letter code as used by Localier. Both CKEditor and pdf.js have support for translations and already include translations for many languages. Before this change, they were auto detecting the browser language and displaying in the browser language, ignoring the language that was selected in ERP5. With this change, they use the language selected in ERP5. For CKEditor, we need to set the language only it is actually supported, otherwise CKEditor crash. pdf.js does not this, but we had to call ourselves initialize - which is probably better, because it was a promise not awaited.
-
Jérome Perrin authored
I'm not sure what was the problem from this comment, but we render the gadget in an iframe so there's no need to change the DOM like this. Probably this was a problem in early versions when it was in the same page.
-
Jérome Perrin authored
also change the content type in so that they are exported as text in business template
-
Jérome Perrin authored
This is the URL to download, it currently does not support range requests, but it sets cache headers properly, unlike /getData which is an accessor
-
Jérome Perrin authored
For drawings the layout is usually important, but HTML preview do not preserve layout correctly. Use PDF instead, which keeps layout
-
Jérome Perrin authored
It was tested only in the context of erp5_km, not in ERP5JS and xhtml style
-
Jérome Perrin authored
so that they can be reused by other UI tests business templates without having to install the full erp5_ui_test
-
Jérome Perrin authored
using movement date rather than order date is more correct
-
Jérome Perrin authored
composition API, which is used to select the "most applicable" model (Trade Condition, Transformation, Pay Sheet Model, etc) with the same reference was only discarding deleted and validated models, but it was selecting draft models. This leads to this kind of problem: - A validated model exist, with an effective date - A new model is made by cloning the validated one, edited to set effective date from now and validated - The first validated model is also cloned by mistake, but not validated In such case, the model cloned by mistake might be used, which from user point of view is wrong, because user validated a model, so if the system use a draft instead, that's a very wrong behaviour. This change require models to be validated for the composition API to work, many tests were updated to validate the model (either in the test or in the data business template used by the test). This change might also produce different results in production, because it was possible that some draft models were selected before, now they will no longer be selected. To check for potential side effects, we recommend looking for all draft models with a reference, examine them one by one and validate the model if it's a case where user forgot to validate.
-
Vincent Pelletier authored
Since commit f363ac65 Author: Vincent Pelletier <vincent@nexedi.com> Date: Wed Mar 23 15:55:46 2022 +0900 Products.CMFActivity.ActivityTool: Store user object in activity. user_name on newly created activities is always None. As a result, activities using dummyGroupMethod are executed within the security context which spawns the group, which is System Processes, instead of the user which spawned each activity. Add a unittest for this.
-
Vincent Pelletier authored
This was broken by: commit f363ac65 Author: Vincent Pelletier <vincent@nexedi.com> Date: Wed Mar 23 15:55:46 2022 +0900 Products.CMFActivity.ActivityTool: Store user object in activity. as user_name becomes always None.
-
- 09 Jun, 2022 6 commits
-
-
Jérome Perrin authored
See merge request nexedi/erp5!1637
-
Jérome Perrin authored
This script stopped working since Catalog changed to be ERP5 document, because it was calling the unindex method of the catalog (which itself is indexable like any other ERP5 document). Update to use the uncatalogObject which is the method to unindex a document by uid. Even though it was somehow working before, it was not really correct in selecting objects, because it was using - operator on TIMESTAMP column, which is not computing a difference in seconds as this script was expecting. See for example https://stackoverflow.com/a/24504132/7607763 or the example below for an explanation. Instead, use TIMESTAMPADD to compute the start timestamp only once and use >= operator, which works as expected. This query was also sorting by indexation_timestamp, which does not use an index. Remove the sort because it's not really needed. Excluding reserved path was also not needed, we no longer use these since 69aefdff (ZSQLCatalog: Drop support for "reserved" path., 2017-09-18) --- Another reproduction of the timestamp arithmetic problem select TIMESTAMP('2021-01-02 00:00:00') - TIMESTAMP('2021-01-01 00:00:00') a, 20210102000000 - 20210101000000 aa, TIMESTAMP('2021-06-01 00:00:00') - TIMESTAMP('2021-05-31 00:00:00') b, 20210601000000 - 20210531000000 bb, TIMESTAMPDIFF(second, TIMESTAMP('2021-05-31 00:00:00'), TIMESTAMP('2021-06-01 00:00:00')) c | a | aa | b | bb | c | | ------ | ------ | ------ | ------ | ------ | | 1000000 | 1000000 | 70000000 | 70000000 | 86400 |
-
Jérome Perrin authored
-
Jérome Perrin authored
This is a bit easier to read
-
Jérome Perrin authored
-
Jérome Perrin authored
When a test fail, we make a data-url link with the HTML of the current page, so that we can easily investigate test failures n test nodes. We should not let errors that might happen here propagate, otherwise the test result is not created and the test runner does not detect that the test is finished. One case that caused such errors was failed assertion just after using goBack command without waiting
-
- 08 Jun, 2022 2 commits
-
-
Valentin Benozillo authored
-
Valentin Benozillo authored
Depending on field type, if min and max are not setup then they can be equals to the empty string or undefined.
-