erp5:59f55bfb720b043f3c10044669465dfd63c4822c commitshttps://lab.nexedi.com/nexedi/erp5/-/commits/59f55bfb720b043f3c10044669465dfd63c4822c2019-03-05T15:06:31+01:00https://lab.nexedi.com/nexedi/erp5/-/commit/59f55bfb720b043f3c10044669465dfd63c4822cerp5.util: Release 0.4.582019-03-05T15:06:31+01:00Sebastien Robinseb@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/32c5eebf0f34783327bfa854c8ef916f7907126ftestnode: give time to supervisord to kill sub processes2019-03-05T14:57:47+01:00Sebastien Robinseb@nexedi.com
supervirord when stopping might need several seconds to kill
properly sub processes. So give him some time before killing
more brutaly with killall.
This should solve issue with functional tests are not working
due to apache not starting. Apache when killed to brutally
let unclosed semaphore, and after some time, we have too many
semaphore to start new apache, making functional tests failing.https://lab.nexedi.com/nexedi/erp5/-/commit/1bbd5e6e71b9758290606fc6afdcc944d5117290CMFActivity: new activate() parameter to prefer executing on the same node2019-03-04T18:44:44+01:00Julien Muchembledjm@nexedi.com
This implements a special case of node specialization, to make better
use of the ZODB Storage cache. By default, a non-grouped message is
marked to be executed by the same node that created it, if the object
is not a tool and if it was not activated by path. This can be
overridden (either forced or prevented) using a new 'node' activate()
parameter. See message of the first merged commits for details, and
also ActiveObject.activate() docstring. For SQLDict & SQLQueue only.
In the future, the new 'node' argument could accept any other string
value that refers to a group of nodes. Groups would be defined on the
activity tool, and be assigned negative integers. Contrary to what is
implemented here, such specialization would be strict, in that a node
would never process a message for a group it does not belong.
/reviewed-on <a href="https://lab.nexedi.com/nexedi/erp5/merge_requests/836" data-original="https://lab.nexedi.com/nexedi/erp5/merge_requests/836" data-link="false" data-link-reference="true" data-project="1" data-merge-request="2774" data-project-path="nexedi/erp5" data-iid="836" data-mr-title="CMFActivity: new activate() parameter to prefer executing on the same node" data-reference-type="merge_request" data-container="body" data-placement="top" data-html="true" title="" class="gfm gfm-merge_request">nexedi/erp5!836</a>https://lab.nexedi.com/nexedi/erp5/-/commit/14940e3f8523445fac897ecdf221f5197f27ce23erp5_core: Ignore non-existent transitions in Module_listWorkflowTransitionIt...2019-03-01T10:43:10+01:00Georgios Dagkakisgeorgios.dagkakis@nexedi.com
instead of crashing.
This can happen in workflow if we have:
- transition_x is declared as possible in state_x
- then transition_x gets deleted
In this case in state_x in manage_properties nothing is visible,
which creates an inconsistent in its data, yet functional generally workflow
Since it is easy to create such cases, just ignore them in Module_listWorkflowTransitionItemList
so that mass change state can workhttps://lab.nexedi.com/nexedi/erp5/-/commit/f0e4c9610428ac6973b6983e3204f68a099ba15cerp5_utils: Remove (used to ship Firefox binary many years ago).2019-02-27T14:14:40+09:00Arnaud Fontainearnaud.fontaine@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/0d702108e25107e4ba71e713ee723ee10c4f00faerp5_budget: Fix errors/warnings reported by pylint.2019-02-26T14:10:38+09:00Arnaud Fontainearnaud.fontaine@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/b876df9ab40ee646307b2a1bd1876b1d09a81399erp5_budget: Fix an unused variable warning.2019-02-26T13:58:15+09:00Jérome Perrinjerome@nexedi.com
This also fixups <a href="/Abdo/erp5/-/commit/b9b14bc7d572273949fe00acea07ed01e909d8ab" data-original="b9b14bc7d572273949fe00acea07ed01e909d8ab" data-link="false" data-link-reference="false" data-project="976" data-commit="b9b14bc7d572273949fe00acea07ed01e909d8ab" data-reference-type="commit" data-container="body" data-placement="top" data-html="true" title="budget: use different cell ranges for consumption than definition" class="gfm gfm-commit has-tooltip">b9b14bc7</a> for the case
where the consumption range is different from consumed budget or engaged
budget (for exemple when we have only engaged movements on a given node).https://lab.nexedi.com/nexedi/erp5/-/commit/7684204861811598c8110e737e64dc505f7476cberp5_budget: Move Documents and Tests classes to portal_components.2019-02-26T13:58:15+09:00Jérome Perrinjerome@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/d51b2c2aa0a7c245a6b3aab0f14b44af3e46266derp5_budget: Fix wrong type_class on Budget Transfer and Budget Transfer Line...2019-02-26T13:58:15+09:00Arnaud Fontainearnaud.fontaine@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/13a56b51c157d9565c6edc22eaaa8418f866d911ZODB Components: Products Documents for a given bt5 can now be migrated from ...2019-02-26T11:35:30+09:00Arnaud Fontainearnaud.fontaine@nexedi.com
Until now, only bt5 Extension/Test/Document could be migrated from
filesystem.
From migration dialog, allow to select any Products.ERP5.Document.* (only,
for now) to be migrated. By default, automatically select Products Documents
used by the current bt5 Portal Types (by looking at the mro() of its
erp5.portal_type classes).
Also, to easily identified where it was migrated from, source_reference
is set to 'bt.getTitle():ID' for bt5 Extension/Test/Document and
'Products.ERP5.Document.XXX' for filesystem Products.https://lab.nexedi.com/nexedi/erp5/-/commit/87d682c65cc73686f36a365cd5b0f6519b936aaeBusinessTemplate: Refactor *TemplateItem Unit Tests classes.2019-02-26T11:35:30+09:00Arnaud Fontainearnaud.fontaine@nexedi.com
One Mixin to handle {Document,Interface,Mixin,Test,Extension} code from:
* deprecated local (instancehome/XXX).
* ZODB Components.
* Products migration (in a later commit).https://lab.nexedi.com/nexedi/erp5/-/commit/220612aff1d073a33bd10e204ed899e74ce3804amroonga: prefer deferring full text on the same node for better cache efficiency2019-02-25T18:38:12+01:00Julien Muchembledjm@nexedi.com
In this specific case, the number of grouped messages is bound,
and actually not greater than the number of grouped messages
being processed for normal indexing.https://lab.nexedi.com/nexedi/erp5/-/commit/991606e3ee6e94ec2c81fbe82bdebbde3a26ba0berp5.util: Release 0.4.572019-02-25T14:42:04+01:00Sebastien Robinseb@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/a2fe9cdbef206ba7afaf66b55fd1a64b0d7fb10ainventory: fixed cases where an inventory forget to remove previous corrections2019-02-25T09:12:47+01:00Sebastien Robinseb@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/dffbd5451e0b9b2327a9e194b3b0efda5aa58dc7trade: much better to have fast input without limit in the number of lines2019-02-22T18:00:04+01:00Sebastien Robinseb@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/325f826d19e3a99aab85d88709b14b3e3448cc66accounting: add a parameter to allow always showing project2019-02-22T09:11:17+00:00Sebastien Robinseb@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/774244153d40a73ab8694e52fe7e16e59c7efe9aCMFActivity: enable node preference by default in some safe cases2019-02-21T11:04:55+01:00Julien Muchembledjm@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/301962ad753f6e727c1813bff008b87492a23a9eCMFActivity: new activate() parameter to prefer executing on the same node2019-02-21T11:04:49+01:00Julien Muchembledjm@nexedi.com
The goal is to make better use of the ZODB Storage cache. It is common to do
processing on a data set in several sequential transactions: in such case, by
continuing execution of these messages on the same node, data is loaded from
ZODB only once. Without this, and if there are many other messages to process,
processing always continue on a random node, causing much more load from ZODB.
To prevent nodes from having too much work to do, or too little compared to
other nodes, this new parameter is only a hint for CMFActivity. It remains
possible for a node to execute a message that was intended for another node.
Before this commit, a processing node selects the first message(s) according to
the following ordering:
priority, date
and now:
priority, node_preference, date
where node_preference is:
-1 -> same node
0 -> no preferred node
1 -> another node
The implementation is tricky for 2 reasons:
- MariaDB can't order this way in a single simple query, so we have 1
subquery for each case, potentially getting 3 times the wanted maximum of
messages, then order/filter on the resulting union.
- MariaDB also can't filter efficiently messages for other nodes, so the 3rd
subquery returns messages for any node, potentially duplicating results from
the first 2 subqueries. This works because they'll be ordered last.
Unfortunately, this requires extra indices.
In any case, message reservation must be very efficient, or MariaDB deadlocks
quickly happen, and locking an activity table during reservation reduces
parallelism too much.
In addition to better cache efficiency, this new feature can be used as a
workaround for a bug affecting serialiation_tag, causing IntegrityError when
reindexing many new objects. If you have 2 recursive reindexations for both a
document and one of its lines, and if you have so many messages than grouping
is split between these 2 messages, then you end up with 2 nodes indexing the
same line in parallel: for some tables, the pattern DELETE+INSERT conflicts
since InnoDB does not take any lock when deleting a non-existent row.
If you have many activities creating such documents, you can combine with
grouping and appropriate priority to make sure that such pair of messages won't
be executed on different nodes, except maybe at the end (when there's no
document to create anymore; then activity reexecution may be enough).
For example:
from Products.CMFActivity.ActivityTool import getCurrentNode
portal.setPlacelessDefaultReindexParameters(
activate_kw={'node': 'same', 'priority': priority},
group_id=getCurrentNode())
where `priority` is the same as the activity containing the above code, which
can also use grouping without increasing the probability of IntegrityError.https://lab.nexedi.com/nexedi/erp5/-/commit/ae0a20fc44b9150a24d48f66abf617fa82eee455testnode: try much more agressively to kill remaining processes (fixup)2019-02-21T10:51:32+01:00Sebastien Robinseb@nexedi.com
Kill any process having in command line the path reserved for unit
test. This would really allows to kill any remaining process if any.
Do not look if processes are child of testnode, because processes
like mariadb and others are not running as childhttps://lab.nexedi.com/nexedi/erp5/-/commit/8fa3d85880c99d5dde36fedbed46fe4822dca997tests: add __contains__ support in Sequence instances2019-02-21T04:40:27+01:00Nicolas Wavrantnicolas.wavrant@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/03b97d72284f690f4e223403b439fea5497b299cerp5_trade: available to create stock report for different period2019-02-20T19:10:48+01:00Xiaowu Zhangxiaowu.zhang@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/5015f5ce9fa34182c0dc74f7047c8dd766453eaeerp5_trade: getInventoryList will use portal_categories 's uid if section_cat...2019-02-20T19:10:48+01:00Xiaowu Zhangxiaowu.zhang@nexedi.com
portal.portal_simulation.getInventoryList(section_category='', src__=True)
use query like
AND (`related_stock_section_category_uid_1_category`.`category_uid` = 281(Uid of portal_categories)https://lab.nexedi.com/nexedi/erp5/-/commit/ee0de96a55f9b60f95fd6462aa87c95d4c82f0c0testnode: try much more agressively to kill remaining processes2019-02-20T13:54:37+01:00Sebastien Robinseb@nexedi.com
Kill any process having in command line the path reserved for unit
test. This would really allows to kill any remaining process if any.
Do not look if processes are child of testnode, because processes
like mariadb and others are not running as childhttps://lab.nexedi.com/nexedi/erp5/-/commit/b9b2048c676ecfba9e6487c75265305528991a66testnode: avoid to rebuild testnode dependencies (firefox) all the time (fix ...2019-02-20T13:54:36+01:00Sebastien Robinseb@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/85d5fd91440785b6241c5f4844acef493a45ea69_testSQLBench: Fix backward compatible apporach2019-02-18T16:25:20+01:00Lukasz Nowakluke@nexedi.com
It was incorrectly assuming style of passed information.https://lab.nexedi.com/nexedi/erp5/-/commit/fb7b7a86418f495f838b0cae4d3f23fa9f797c23_testSQLBench: Use upcoming key from SlapOS2019-02-18T16:25:20+01:00Lukasz Nowakluke@nexedi.com
SlapOS will publish directly SQLBENCH_PATH in environment, so
start using it also trusting that PATH is correctly set to find proper perl,
with fetching old OPENSSL_BINARY and finding perl in the old wayas fallback.https://lab.nexedi.com/nexedi/erp5/-/commit/0a358cecbae954bce1b3a7f4137c8b6b59179542Doducment/Image: use sRGB color profile explicitly in converted images.2019-02-18T09:48:25+00:00Kazuhiko Shiozakikazuhiko@nexedi.com
otherwise Firefox (with default configuration) may display strange colors, especially if the original uses ICC v4 profile.https://lab.nexedi.com/nexedi/erp5/-/commit/a78fcc79e8288c0b3747dbe5d427fced2b3d1077FormPrintout: Use the specified style even if the bottom of the listbox.2019-02-16T20:30:36+09:00Tatuya Kamadatatuya@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/16b10406676b6b34e7c436b0a06858e839225d91[erp5_core/erp5_web_renderjs_ui] Update jIO 3.36.12019-02-15T10:42:55+01:00Romain Courteaudromain@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/1aa491836cb33c4de01187e25b47db0e205c8dad[erp5_officejs] Do not crash when getting 4012019-02-15T10:42:55+01:00Romain Courteaudromain@nexedi.com
Notify the user and redirect to the storage page to force user to enter credentials if neededhttps://lab.nexedi.com/nexedi/erp5/-/commit/42fef3a8657fe778c2295ff40276adbdd0336876[erp5_web_render_ui] Allow any external app to download the source code2019-02-15T10:42:54+01:00Romain Courteaudromain@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/a5bd823cdeb9242402823803146dbb06447a89aa[erp5_officejs] Allow to preset the linshare username2019-02-15T10:42:54+01:00Romain Courteaudromain@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/2d7b8f2c0de7c2fbfda060d5ebf8b327a276eb68[erp5_officejs_appstore*] Do not depend on erp5_officejs2019-02-15T10:42:54+01:00Romain Courteaudromain@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/04157d04c180affd6a71737fa7dc15780218c20e[erp5_travel_expense] Add a web manifest2019-02-15T10:42:54+01:00Romain Courteaudromain@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/701efacd7b9fa8fba88c270711173317e364861aCMFActivity.Activity.SQLDict: Remove unused constants.2019-02-15T13:36:40+09:00Vincent Pelletiervincent@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/73d89df3addd42a8a62c873b2f46da4ffc9be390CMFActivity: optimization, cleanup, limit insertion by size in bytes instead ...2019-02-14T12:18:35+01:00Julien Muchembledjm@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/7fb53e8fdeaf7ae82b6b20013b272a9713b9670bReview SMS sending API + allow sending SMS > 140 characters2019-02-14T11:56:50+01:00Jérome Perrinjerome@nexedi.com
* Review SMS sending API to move the complexity and the various parameters from the interface script `ShortMessage_send` to the gateway interfaces.
* Fix problem with mobyt with messages longer than 140 characters
* Fix [#20170709-17309B6](<a href="https://nexedi.erp5.net/bug_module/20170709-17309B6" rel="nofollow noreferrer noopener" target="_blank">https://nexedi.erp5.net/bug_module/20170709-17309B6</a>)
* add an (incomplete) test
/reviewed-on <a href="https://lab.nexedi.com/nexedi/erp5/merge_requests/580" data-original="https://lab.nexedi.com/nexedi/erp5/merge_requests/580" data-link="false" data-link-reference="true" data-project="1" data-merge-request="1844" data-project-path="nexedi/erp5" data-iid="580" data-mr-title="Review SMS sending API + allow sending SMS > 140 characters" data-reference-type="merge_request" data-container="body" data-placement="top" data-html="true" title="" class="gfm gfm-merge_request">nexedi/erp5!580</a>https://lab.nexedi.com/nexedi/erp5/-/commit/74ee68f5cbababa8d61c5d7b9ee735a2ff245648Accounting: display payment requests on profile tab2019-02-14T01:09:43+01:00Jérome Perrinjerome@nexedi.com
![image](/uploads/f86e89066db17979735f892c5c36a90f/image.png)
This introduces a new portal type group "payment request"
/reviewed-on <a href="https://lab.nexedi.com/nexedi/erp5/merge_requests/831" data-original="https://lab.nexedi.com/nexedi/erp5/merge_requests/831" data-link="false" data-link-reference="true" data-project="1" data-merge-request="2754" data-project-path="nexedi/erp5" data-iid="831" data-mr-title="Accounting: display payment requests on profile tab" data-reference-type="merge_request" data-container="body" data-placement="top" data-html="true" title="" class="gfm gfm-merge_request">nexedi/erp5!831</a>https://lab.nexedi.com/nexedi/erp5/-/commit/3ca5bf97df025a5b5cd896efe41ab884dd75bffdCMFActivity: even more test clean-up2019-02-13T18:07:12+01:00Julien Muchembledjm@nexedi.comhttps://lab.nexedi.com/nexedi/erp5/-/commit/cee3e7283710599290bdcc0b3409d82253b818fcCMFActivity: some optimization and clean-up in the code reserving messages2019-02-13T18:06:31+01:00Julien Muchembledjm@nexedi.com