IMP module recorder yml generation code and added write method recording functionality
bzr revid: hda@tinyerp.com-20100323075748-5dfazl9modm6e5qb
This commit is contained in:
parent
5cf9147c64
commit
bc7d46f60b
|
@ -72,6 +72,40 @@ def doc_createXElement(xdoc, tagName):
|
|||
e.ownerDocument = xdoc
|
||||
return e
|
||||
|
||||
import yaml
|
||||
|
||||
class record(yaml.YAMLObject):
|
||||
yaml_tag = u'!record'
|
||||
def __init__(self, model, id=None, attrs={}):
|
||||
self.model = model
|
||||
self.id = id
|
||||
self.attrs=attrs
|
||||
def __repr__(self):
|
||||
return '!record {model: %s, id: %s}:' % (str(self.model,), str(self.id,))
|
||||
|
||||
class workflow(yaml.YAMLObject):
|
||||
yaml_tag = u'!workflow'
|
||||
def __init__(self, model, action, ref=None):
|
||||
self.model = model
|
||||
self.ref = ref
|
||||
self.action=action
|
||||
def __repr__(self):
|
||||
return '!workflow {model: %s, action: %s, ref: %s}' % (str(self.model,), str(self.action,), str(self.ref,))
|
||||
|
||||
class ref(yaml.YAMLObject):
|
||||
yaml_tag = u'!ref'
|
||||
def __init__(self, expr="False"):
|
||||
self.expr = expr
|
||||
def __repr__(self):
|
||||
return 'ref(%s)' % (str(self.expr,))
|
||||
|
||||
class eval(yaml.YAMLObject):
|
||||
yaml_tag = u'!eval'
|
||||
def __init__(self, expr="False"):
|
||||
self.expr = expr
|
||||
def __repr__(self):
|
||||
return 'eval(%s)' % (str(self.expr,))
|
||||
|
||||
class base_module_record(osv.osv):
|
||||
_name = "ir.module.record"
|
||||
_columns = {
|
||||
|
@ -105,7 +139,7 @@ class base_module_record(osv.osv):
|
|||
dt = self.pool.get('ir.model.data')
|
||||
dtids = dt.search(cr, uid, [('model','=',model), ('res_id','=',id)])
|
||||
if not dtids:
|
||||
return None, None
|
||||
return False, None
|
||||
obj = dt.browse(cr, uid, dtids[0])
|
||||
self.depends[obj.module] = True
|
||||
return obj.module+'.'+obj.name, obj.noupdate
|
||||
|
@ -379,6 +413,10 @@ class base_module_record(osv.osv):
|
|||
data['action'] = rec[3]
|
||||
data['ref'] = id
|
||||
return data
|
||||
if self.mode=="write":
|
||||
id,update = self._get_id(cr, uid, rec[2],rec[4][0])
|
||||
record = self._create_yaml_record(cr, uid, rec[2], rec[5], id)
|
||||
return record
|
||||
data=self.get_copy_data(cr,uid,rec[2],rec[4],rec[5])
|
||||
copy_rec=(rec[0],rec[1],rec[2],rec[3],rec[4],data,rec[5])
|
||||
rec=copy_rec
|
||||
|
@ -429,44 +467,13 @@ class base_module_record(osv.osv):
|
|||
def generate_yaml(self, cr, uid):
|
||||
self.ids = {}
|
||||
if len(self.recording_data):
|
||||
strg='''import yaml
|
||||
|
||||
class record(yaml.YAMLObject):
|
||||
yaml_tag = u'!record'
|
||||
def __init__(self, model, id=None, attrs={}):
|
||||
self.model = model
|
||||
self.id = id
|
||||
self.attrs=attrs
|
||||
def __repr__(self):
|
||||
return '!record {model: %s, id: %s}:' % (str(self.model,), str(self.id,))
|
||||
|
||||
class workflow(yaml.YAMLObject):
|
||||
yaml_tag = u'!workflow'
|
||||
def __init__(self, model, action, ref=None):
|
||||
self.model = model
|
||||
self.ref = ref
|
||||
self.action=action
|
||||
def __repr__(self):
|
||||
return '!workflow {model: %s, action: %s, ref: %s}' % (str(self.model,), str(self.action,), str(self.ref,))
|
||||
|
||||
class ref(yaml.YAMLObject):
|
||||
yaml_tag = u'!ref'
|
||||
def __init__(self, expr="False"):
|
||||
self.expr = expr
|
||||
def __repr__(self):
|
||||
return 'ref(%s)' % (str(self.expr,))
|
||||
|
||||
class eval(yaml.YAMLObject):
|
||||
yaml_tag = u'!eval'
|
||||
def __init__(self, expr="False"):
|
||||
self.expr = expr
|
||||
def __repr__(self):
|
||||
return 'eval(%s)' % (str(self.expr,))
|
||||
\n'''
|
||||
yaml_file='''\n'''
|
||||
|
||||
for rec in self.recording_data:
|
||||
if rec[1][3] == 'create':
|
||||
self.mode="create"
|
||||
elif rec[1][3] == 'write':
|
||||
self.mode="write"
|
||||
elif rec[1][3] == 'copy':
|
||||
self.mode="copy"
|
||||
elif rec[0] == 'workflow':
|
||||
|
@ -475,47 +482,30 @@ class eval(yaml.YAMLObject):
|
|||
continue
|
||||
if self.mode == "workflow":
|
||||
record= self._generate_object_yaml(cr, uid, rec[1],rec[0])
|
||||
strg+="object=yaml.load(unicode('''\n !workflow %s \n''','iso-8859-1'))"%record
|
||||
strg+='''
|
||||
print object
|
||||
'''
|
||||
object=yaml.load(unicode('''\n !workflow %s \n'''%record,'iso-8859-1'))
|
||||
yaml_file += str(object) + '''\n'''
|
||||
else:
|
||||
record= self._generate_object_yaml(cr, uid, rec[1],rec[3])
|
||||
strg+="object=yaml.load(unicode('''\n !record %s \n''','iso-8859-1'))"%record
|
||||
strg+='''
|
||||
print object
|
||||
attrs=yaml.dump(object.attrs, default_flow_style=False)
|
||||
print attrs \n\n'''
|
||||
|
||||
import os
|
||||
py_path = os.path.join(os.getcwd(), 'records.py')
|
||||
txt_path = os.path.join(os.getcwd(), 'records.txt')
|
||||
f = open(py_path, 'w')
|
||||
f.write(strg)
|
||||
f.close()
|
||||
os.system('python %s > %s'%(py_path,txt_path))
|
||||
f = open(txt_path, 'r+')
|
||||
lines=f.readlines()
|
||||
f.seek(0)
|
||||
for line in lines:
|
||||
line=line.replace("''","'")
|
||||
if line.find('!record') == 0:
|
||||
line = "- \n" + " " + line
|
||||
elif line.find('!workflow') == 0:
|
||||
line = "- \n" + " " + line
|
||||
elif line.find('- -') != -1:
|
||||
line=line.replace('- -',' -')
|
||||
line = " " + line
|
||||
else:
|
||||
line = " " + line
|
||||
f.write(line)
|
||||
f.close()
|
||||
f = open(txt_path, 'r')
|
||||
strg = ''.join(f.readlines())
|
||||
f.close()
|
||||
os.system('rm %s'%py_path)
|
||||
os.system('rm %s'%txt_path)
|
||||
return strg
|
||||
object= yaml.load(unicode('''\n !record %s \n'''%record,'iso-8859-1'))
|
||||
yaml_file += str(object) + '''\n'''
|
||||
attrs=yaml.dump(object.attrs, default_flow_style=False)
|
||||
yaml_file += attrs + '''\n\n'''
|
||||
|
||||
yaml_result=''''''
|
||||
for line in yaml_file.split('\n'):
|
||||
line=line.replace("''","'")
|
||||
if line.find('!record') == 0:
|
||||
line = "- \n" + " " + line
|
||||
elif line.find('!workflow') == 0:
|
||||
line = "- \n" + " " + line
|
||||
elif line.find('- -') != -1:
|
||||
line=line.replace('- -',' -')
|
||||
line = " " + line
|
||||
else:
|
||||
line = " " + line
|
||||
yaml_result += line + '''\n'''
|
||||
|
||||
return yaml_result
|
||||
|
||||
base_module_record()
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
Loading…
Reference in New Issue