From 6b2e5e14ac2ddc26ab75bc5390acf8a26dbdff87 Mon Sep 17 00:00:00 2001 From: "pap (OpenERP)" <> Date: Tue, 13 Jul 2010 10:40:57 +0200 Subject: [PATCH] [IMP] data serialization/loading: support timedelta expressions in eval bzr revid: odo@openerp.com-20100713084057-7rw6k62k49nrhlug --- bin/tools/convert.py | 3 ++- bin/tools/yaml_import.py | 11 ++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/bin/tools/convert.py b/bin/tools/convert.py index 6f1a4e5996a..ca017ad6b55 100644 --- a/bin/tools/convert.py +++ b/bin/tools/convert.py @@ -27,7 +27,7 @@ import pickle import re import sys -from datetime import datetime +from datetime import datetime, timedelta from lxml import etree import ir import misc @@ -87,6 +87,7 @@ def _eval_xml(self,node, pool, cr, uid, idref, context=None): idref2 = idref.copy() idref2['time'] = time idref2['DateTime'] = datetime + idref2['timedelta'] = timedelta import release idref2['version'] = release.major_version idref2['ref'] = lambda x: self.id_get(cr, False, x) diff --git a/bin/tools/yaml_import.py b/bin/tools/yaml_import.py index 856fe800224..45815bf5795 100644 --- a/bin/tools/yaml_import.py +++ b/bin/tools/yaml_import.py @@ -1,6 +1,7 @@ # -*- encoding: utf-8 -*- import types import time # used to eval time.strftime expressions +from datetime import datetime, timedelta import logging import pooler @@ -116,7 +117,7 @@ class RecordDictWrapper(dict): if key in self.record: return self.record[key] return dict.__getitem__(self, key) - + class YamlInterpreter(object): def __init__(self, cr, module, id_map, mode, filename, noupdate=False): self.cr = cr @@ -130,7 +131,11 @@ class YamlInterpreter(object): self.pool = pooler.get_pool(cr.dbname) self.uid = 1 self.context = {} # opererp context - self.eval_context = {'ref': self._ref(), '_ref': self._ref(), 'time': time} # added '_ref' so that record['ref'] is possible + self.eval_context = {'ref': self._ref(), + '_ref': self._ref(), # added '_ref' so that record['ref'] is possible + 'time': time, + 'datetime': datetime, + 'timedelta': timedelta} def _ref(self): return lambda xml_id: self.get_id(xml_id) @@ -139,7 +144,7 @@ class YamlInterpreter(object): model = self.pool.get(model_name) assert model, "The model %s does not exist." % (model_name,) return model - + def validate_xml_id(self, xml_id): id = xml_id if '.' in xml_id: