[MERGE] All modification from all import_project
bzr revid: tfr@openerp.com-20110701094250-ce3wn9pjku3l3blq
This commit is contained in:
parent
a843faf44c
commit
f9b1a4ebea
|
@ -31,7 +31,7 @@
|
|||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base'],
|
||||
'init_xml': [],
|
||||
'update_xml': [],
|
||||
'update_xml': ["import_base_view.xml"],
|
||||
'demo_xml': [],
|
||||
'test': [], #TODO provide test
|
||||
'installable': True,
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem name="Import" id="menu_import" parent="base.menu_base_partner"/>
|
||||
</data>
|
||||
</openerp>
|
|
@ -46,8 +46,11 @@ class import_framework(Thread):
|
|||
"""
|
||||
DO_NOT_FIND_DOMAIN = [('id', '=', 0)]
|
||||
|
||||
#TODO don't use context to pass credential parameters
|
||||
def __init__(self, obj, cr, uid, instance_name, module_name, email_to_notify=False, context=None):
|
||||
Thread.__init__(self)
|
||||
#change this value to set another default field for unique ID in the external table
|
||||
self.external_id_field = 'id'
|
||||
self.obj = obj
|
||||
self.cr = cr
|
||||
self.uid = uid
|
||||
|
@ -58,8 +61,6 @@ class import_framework(Thread):
|
|||
self.table_list = []
|
||||
self.initialize()
|
||||
|
||||
|
||||
|
||||
"""
|
||||
Abstract Method to be implemented in
|
||||
the real instance
|
||||
|
@ -78,6 +79,22 @@ class import_framework(Thread):
|
|||
"""
|
||||
return [{}]
|
||||
|
||||
def get_link(self, from_table, ids, to_table):
|
||||
"""
|
||||
@return: a dictionaries that contains the association between the id (from_table)
|
||||
and the list (to table) of id linked
|
||||
"""
|
||||
return {}
|
||||
|
||||
def get_external_id(self, data):
|
||||
"""
|
||||
@return the external id
|
||||
the default implementation return self.external_id_field (that has 'id') by default
|
||||
if the name of id field is different, you can overwrite this method or change the value
|
||||
of self.external_id_field
|
||||
"""
|
||||
return data[self.external_id_field]
|
||||
|
||||
def get_mapping(self):
|
||||
"""
|
||||
@return: { TABLE_NAME : {
|
||||
|
@ -154,7 +171,7 @@ class import_framework(Thread):
|
|||
for k, field_name in self_dependencies:
|
||||
data[k] = data.get(field_name) and self._generate_xml_id(data.get(field_name), table)
|
||||
|
||||
data['id_new'] = self._generate_xml_id(data['id'], table)
|
||||
data['id_new'] = self._generate_xml_id(self.get_external_id(data), table)
|
||||
fields, values = self._fields_mapp(data, mapping, table)
|
||||
res.append(values)
|
||||
|
||||
|
@ -214,7 +231,6 @@ class import_framework(Thread):
|
|||
fields.append(key)
|
||||
value = val(dict(dict_sugar))
|
||||
data_lst.append(value)
|
||||
|
||||
return fields, data_lst
|
||||
|
||||
def _generate_xml_id(self, name, table):
|
||||
|
@ -238,6 +254,7 @@ class import_framework(Thread):
|
|||
Check if the external id exist in the openerp database
|
||||
in order to check if the id exist the table where it come from
|
||||
should be provide
|
||||
@return the xml_id generated if the external_id exist in the database or false
|
||||
"""
|
||||
if not external_id:
|
||||
return False
|
||||
|
@ -297,7 +314,6 @@ class import_framework(Thread):
|
|||
domain_search = not domain_search and [('name', 'ilike', name)] or domain_search
|
||||
obj = self.obj.pool.get(model)
|
||||
xml_id = self._generate_xml_id(name, table)
|
||||
|
||||
xml_ref = self.mapped_id_if_exist(model, domain_search, table, name)
|
||||
fields.append('id')
|
||||
data.append(xml_id)
|
||||
|
@ -342,7 +358,6 @@ class import_framework(Thread):
|
|||
|
||||
|
||||
"""
|
||||
|
||||
self.data_started = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
self.cr = pooler.get_db(self.cr.dbname).cursor()
|
||||
try:
|
||||
|
@ -385,9 +400,9 @@ class import_framework(Thread):
|
|||
|
||||
def _send_notification_email(self, result):
|
||||
if not self.email:
|
||||
return
|
||||
return False
|
||||
tools.email_send(
|
||||
'import_sugarcrm@module.openerp',
|
||||
'import@module.openerp',
|
||||
self.email,
|
||||
self.get_email_subject(result),
|
||||
self.get_email_body(result),
|
||||
|
@ -431,4 +446,20 @@ class import_framework(Thread):
|
|||
"""
|
||||
return "The import of data \n instance name : %s \n" % self.instance_name
|
||||
|
||||
#For example of use see import_sugarcrm
|
||||
|
||||
#TODO documentation test
|
||||
def run_test(self):
|
||||
back_get_data = self.get_data
|
||||
back_get_link = self.get_link
|
||||
self.get_data = self.get_data_test
|
||||
self.get_link = self.get_link_test
|
||||
self.run()
|
||||
self.get_data = back_get_data
|
||||
self.get_link = back_get_link
|
||||
|
||||
|
||||
def get_data_test(self, table):
|
||||
return [{}]
|
||||
|
||||
def get_link_test(self, from_table, ids, to_table):
|
||||
return {}
|
||||
|
|
|
@ -57,7 +57,7 @@ class concat(mapper):
|
|||
self.delimiter = delimiter and delimiter.get('delimiter', ' ') or ' '
|
||||
|
||||
def __call__(self, external_values):
|
||||
return self.delimiter.join(map(lambda x : external_values.get(x,''), self.arg))
|
||||
return self.delimiter.join(map(lambda x : str(external_values.get(x,'')), self.arg))
|
||||
|
||||
class ppconcat(mapper):
|
||||
"""
|
||||
|
@ -71,7 +71,7 @@ class ppconcat(mapper):
|
|||
self.delimiter = delimiter and delimiter.get('delimiter', ' ') or '\n\n'
|
||||
|
||||
def __call__(self, external_values):
|
||||
return self.delimiter.join(map(lambda x : x + ": " + external_values.get(x,''), self.arg))
|
||||
return self.delimiter.join(map(lambda x : x + ": " + str(external_values.get(x,'')), self.arg))
|
||||
|
||||
class const(mapper):
|
||||
"""
|
||||
|
@ -94,12 +94,16 @@ class value(mapper):
|
|||
and don't care about the name of the field
|
||||
call(self.method, value('field1'))
|
||||
"""
|
||||
def __init__(self, val, default=''):
|
||||
def __init__(self, val, default='', fallback=False):
|
||||
self.val = val
|
||||
self.default = default
|
||||
self.fallback = fallback
|
||||
|
||||
def __call__(self, external_values):
|
||||
return external_values.get(self.val, self.default)
|
||||
val = external_values.get(self.val, self.default)
|
||||
if self.fallback and (not val or val == self.default):
|
||||
val = external_values.get(self.fallback, self.default)
|
||||
return val
|
||||
|
||||
class map_val(mapper):
|
||||
"""
|
||||
|
@ -163,5 +167,3 @@ class call(mapper):
|
|||
else:
|
||||
args.append(arg)
|
||||
return self.fun(external_values, *args)
|
||||
|
||||
|
Loading…
Reference in New Issue