Merge lp:~openerp-dev/openobject-server/trunk_add_relativedelta_in_contact_act_servers-stw into lp:openobject-server

Proposed by Stephane Wirtel (OpenERP)
Status: Needs review
Proposed branch: lp:~openerp-dev/openobject-server/trunk_add_relativedelta_in_contact_act_servers-stw
Merge into: lp:openobject-server
Diff against target: 57 lines (+29/-0)
2 files modified
openerp/addons/base/ir/ir_actions.py (+2/-0)
openerp/addons/base/tests/test_ir_actions.py (+27/-0)
To merge this branch: bzr merge lp:~openerp-dev/openobject-server/trunk_add_relativedelta_in_contact_act_servers-stw
Reviewer Review Type Date Requested Status
Christophe Simonis (OpenERP) Approve
OpenERP Core Team Pending
Review via email: mp+218406@code.launchpad.net

Description of the change

add the relativedelta function in the context of the evaluation for ir.actions.server

To post a comment you must log in.
Revision history for this message
Christophe Simonis (OpenERP) (kangol) :
review: Approve

Unmerged revisions

5209. By Stephane Wirtel (OpenERP)

[IMP] ir.actions: loads the relativedelta functions and add a unittest to check
the evaluation of the code.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'openerp/addons/base/ir/ir_actions.py'
2--- openerp/addons/base/ir/ir_actions.py 2014-04-07 17:46:28 +0000
3+++ openerp/addons/base/ir/ir_actions.py 2014-05-06 13:13:58 +0000
4@@ -26,6 +26,7 @@
5 import time
6 import datetime
7 import dateutil
8+from dateutil.relativedelta import relativedelta
9
10 import openerp
11 from openerp import SUPERUSER_ID
12@@ -946,6 +947,7 @@
13 'time': time,
14 'datetime': datetime,
15 'dateutil': dateutil,
16+ 'relativedelta': relativedelta,
17 'cr': cr,
18 'uid': uid,
19 'user': user,
20
21=== modified file 'openerp/addons/base/tests/test_ir_actions.py'
22--- openerp/addons/base/tests/test_ir_actions.py 2014-02-21 12:57:08 +0000
23+++ openerp/addons/base/tests/test_ir_actions.py 2014-05-06 13:13:58 +0000
24@@ -394,6 +394,33 @@
25 'child_ids': [(6, 0, [self.act_id])]
26 })
27
28+ def test_80_action_evaluator_datetime(self):
29+ """Checks that we can evaluate a datetime and a basic operation
30+ on this datetime instance.
31+ """
32+ cr, uid = self.cr, self.uid
33+
34+ values = {
35+ 'name': 'SubAction2',
36+ 'model_id': self.res_partner_model_id,
37+ 'state': 'code',
38+ 'code': 'new_date = datetime.datetime(2014, 5, 6, 13, 56) + relativedelta(minutes=10)'
39+ }
40+
41+ act1_id = self.ir_actions_server.create(cr, uid, values)
42+ act1 = self.ir_actions_server.browse(cr, uid, act1_id)
43+ eval_context = self.ir_actions_server._get_eval_context(cr, uid, act1, context={})
44+
45+ from openerp.tools.safe_eval import safe_eval as eval
46+ # The mode='exec' is important in this test, without that, we can't fetch
47+ # the result of the evaluation and the value of the new_date variable.
48+ values = eval(act1.code, eval_context, mode='exec', nocopy=True)
49+
50+ import datetime
51+ from dateutil.relativedelta import relativedelta
52+ new_date = datetime.datetime(2014, 5, 6, 13, 56) + relativedelta(minutes=10)
53+
54+ self.assertEqual(eval_context['new_date'], new_date)
55
56 if __name__ == '__main__':
57 unittest2.main()