summaryrefslogtreecommitdiff
path: root/addons/import_base/import_framework.py
diff options
context:
space:
mode:
authortfr@openerp.com <>2011-07-01 11:42:50 +0200
committertfr@openerp.com <>2011-07-01 11:42:50 +0200
commitf9b1a4ebeab78ad8dc9bc38e9c77ff724250bf6e (patch)
tree0cfcf5fc5a4dbe73bd5709ae8f537fd10a28f8d3 /addons/import_base/import_framework.py
parenta843faf44cc8fada36fb483de831569fb961d33f (diff)
[MERGE] All modification from all import_project
bzr revid: tfr@openerp.com-20110701094250-ce3wn9pjku3l3blq
Diffstat (limited to 'addons/import_base/import_framework.py')
-rw-r--r--addons/import_base/import_framework.py49
1 files changed, 40 insertions, 9 deletions
diff --git a/addons/import_base/import_framework.py b/addons/import_base/import_framework.py
index d041951ca11..aa217ce0df9 100644
--- a/addons/import_base/import_framework.py
+++ b/addons/import_base/import_framework.py
@@ -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 \ No newline at end of file
+
+ #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 {}