- 22 Aug, 2022 1 commit
-
-
Jérome Perrin authored
done with an external method to upload the content of zip file in skin folder. import zipfile from io import BytesIO def uploadZip(self): dest = self.getPortalObject().portal_skins.custom with zipfile.ZipFile( '/srv/slapgrid/slappart3/srv/project/erp5/ckeditor_4.19.1_4b98d281bc34.zip' ) as f: for m in f.namelist(): current_dest = dest print(m) for part in m.split('/')[:-1]: if part not in current_dest.objectIds(): current_dest.manage_addProduct['OFSP'].manage_addFolder(id=part) current_dest = current_dest[part] fname = m.split('/')[-1] if fname == '_translationstatus.txt': fname = 'translationstatus.txt' current_dest.manage_addProduct['OFSP'].manage_addFile( id=fname, file=BytesIO(f.read(m))) return repr(dest)
-
- 18 Aug, 2022 5 commits
-
-
Jérome Perrin authored
02011d8e (immediateReindexObject: use super user to reindex script, 2015-12-14) did not apply for inventory, because they were overloading immediateReindexObject. Introduce a new level, _immediateReindexObject that will hold the actual reindexing logic. Previously this method was using PortalContent.reindexObject which was monkey patched, to make things less complex and more future proof, move the monkey patch to a method on base class. This also drops alternateReindexObject on BalanceTransaction, because it is already defined in Inventory
-
Jérome Perrin authored
This is supposed to fix "Should not load state for ${oid of a skin} when the connection is closed" sometimes happening with live tests (especially when the test self.publish and the developer access the site while the test is suspended on a debugger breakpoint). The object accessed after the connection is closed was a skin (python script, sometimes page template or form) that was cached in SKINDATA. The mechanism to prune entries from the cache uses REQUEST.hold API which expects that REQUEST.close is called on request, but because requests were not closed at the end of the request, it happened that the cache was reused from another connection. This change to close the requests, like ERP5TypeTestCase is doing in tearDown (the actual close is done by Testing.ZopeTestCase.connections). By closing requests at the end of tests, we also have to change so that at the beginning of the test we initialize the request, by using the same setSite and setupCurrentSkin that are done in ERP5TypeTestCase.
-
Jérome Perrin authored
SKINDATA is an implementation detail that should not be accessed from this level.
-
Jérome Perrin authored
In SkinTemplateItem.install, self._objects contains entries for skin folders and for all skins. objectValues method calls was called for skin folders (as expected) and also for all skins, which acquire objectValues from skin folder and do the work again. This simplifies this by only running this for skin folders.
-
Jérome Perrin authored
"default" URL is the URL when listbox column does not use URL column and when the brains do not have a getListItemUrl method. Move the computation in a lazyMethod, so that it is computed only once per line instead of once per cell. Also remove a try/except, I don't think this code is supposed to get an AttributeError
-
- 09 Aug, 2022 2 commits
-
-
Nicolas Wavrant authored
-
Yusei Tahara authored
Do not call container.reindexObject every time, otherwise the number of activities explode because of recurseCallMethod.
-
- 02 Aug, 2022 10 commits
- 28 Jul, 2022 1 commit
-
-
Georgios Dagkakis authored
of Organisation_viewFinancialInformationList
-
- 13 Jul, 2022 1 commit
-
-
Jérome Perrin authored
In xhtml_style, just after clicking next or previous page in the listbox buttons, the values selected in 'Section Category' and 'Section Category Strict' were not used, because they were used from request and not from as normal script parameters. This fixes only the xhtml_style version, ERP5JS has another problem that dialog fields values are reset when going to next page, so it would also need this problem to be fixed.
-
- 12 Jul, 2022 1 commit
-
-
Jérome Perrin authored
-
- 07 Jul, 2022 2 commits
-
-
Valentin Benozillo authored
-
Valentin Benozillo authored
-
- 01 Jul, 2022 1 commit
-
-
Romain Courteaud authored
-
- 27 Jun, 2022 1 commit
-
-
Xiaowu Zhang authored
-
- 24 Jun, 2022 1 commit
-
-
Xiaowu Zhang authored
-
- 23 Jun, 2022 2 commits
-
-
Xiaowu Zhang authored
-
Yusei Tahara authored
Use correct portal type.
-
- 22 Jun, 2022 3 commits
-
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
- 21 Jun, 2022 4 commits
-
-
Xiaowu Zhang authored
-
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 3 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
-