diff --git a/addons/import_base/import_framework.py b/addons/import_base/import_framework.py index b558b24696f..1f627d2ad58 100644 --- a/addons/import_base/import_framework.py +++ b/addons/import_base/import_framework.py @@ -60,7 +60,7 @@ class import_framework(Thread): self.context = context or {} self.email = email_to_notify self.table_list = [] - self.logger = logging.getLogger('import_framework') + self.logger = logging.getLogger(module_name) self.initialize() """ @@ -165,6 +165,7 @@ class import_framework(Thread): data_i is a map external field_name => value and each data_i have a external id => in data_id['id'] """ + self.logger.info(' Importing %s into %s' % (table, model)) if not datas: return (0, 'No data found') mapping['id'] = 'id_new' @@ -187,8 +188,7 @@ class import_framework(Thread): model_obj = self.obj.pool.get(model) if not model_obj: raise ValueError(_("%s is not a valid model name") % model) - self.logger.debug(_("fields imported : ")) - self.logger.debug(fields) + self.logger.debug(_(" fields imported : ") + str(fields)) (p, r, warning, s) = model_obj.import_data(self.cr, self.uid, fields, res, mode='update', current_module=self.module_name, noupdate=True, context=self.context) for (field, field_name) in self_dependencies: self._import_self_dependencies(model_obj, field, datas) @@ -330,7 +330,6 @@ class import_framework(Thread): xml_ref = self.mapped_id_if_exist(model, domain_search, table, name) fields.append('id') data.append(xml_id) - obj.import_data(self.cr, self.uid, fields, [data], mode='update', current_module=self.module_name, noupdate=True, context=self.context) return xml_ref or xml_id @@ -385,7 +384,6 @@ class import_framework(Thread): res = self._resolve_dependencies(self.get_mapping()[table].get('dependencies', []), imported) result.extend(res) if to_import: - self.logger.debug(_("import : ") + table ) (position, warning) = self._import_table(table) result.append((table, position, warning)) imported.add(table) @@ -396,12 +394,13 @@ class import_framework(Thread): traceback.print_exc(file=sh) error = sh.getvalue() print error - finally: - self.cr.close() + self.date_ended = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") self._send_notification_email(result, error) + self.cr.close() + def _resolve_dependencies(self, dep, imported): """ import dependencies recursively @@ -414,7 +413,6 @@ class import_framework(Thread): res = self._resolve_dependencies(self.get_mapping()[dependency].get('dependencies', []), imported) result.extend(res) if to_import: - self.logger.debug("import dependency : " + dependency) r = self._import_table(dependency) (position, warning) = r result.append((dependency, position, warning)) @@ -422,15 +420,16 @@ class import_framework(Thread): return result def _send_notification_email(self, result, error): - if not self.email or not self.email[0]: + if not self.email: return False - - tools.email_send( - 'import@module.openerp', - self.email, - self.get_email_subject(result, error), - self.get_email_body(result, error), - ) + email_obj = self.obj.pool.get('mail.message') + email_id = email_obj.create(self.cr, self.uid, { + 'email_from' : 'import@module.openerp', + 'email_to' : self.email, + 'body_text' : self.get_email_body(result, error), + 'subject' : self.get_email_subject(result, error), + 'auto_delete' : True}) + email_obj.send(self.cr, self.uid, [email_id]) if error: self.logger.error(_("Import failed due to an unexpected error")) else: diff --git a/addons/import_sugarcrm/import_sugarcrm.py b/addons/import_sugarcrm/import_sugarcrm.py index b27748d48be..d5f487c5377 100644 --- a/addons/import_sugarcrm/import_sugarcrm.py +++ b/addons/import_sugarcrm/import_sugarcrm.py @@ -210,12 +210,12 @@ class sugar_import(import_framework): def get_email_mapping(self): return { - 'model' : 'mailgate.message', + 'model' : 'mail.message', 'dependencies' : [self.TABLE_USER, self.TABLE_ACCOUNT, self.TABLE_CONTACT, self.TABLE_LEAD, self.TABLE_OPPORTUNITY, self.TABLE_MEETING, self.TABLE_CALL], 'hook' : self.import_email, 'map' : { - 'name':'name', - 'history' : const("1"), + 'subject':'name', + 'state' : const('received'), 'date':'date_sent', 'email_from': 'from_addr_name', 'email_to': 'to_addrs_names', @@ -226,7 +226,9 @@ class sugar_import(import_framework): 'model': 'model', 'partner_id/.id': 'partner_id/.id', 'user_id/id': ref(self.TABLE_USER, 'assigned_user_id'), - 'description': ppconcat('description', 'description_html'), + 'body_text': 'description', + 'body_html' : 'description_html', + } } @@ -575,10 +577,10 @@ class sugar_import(import_framework): } def get_opportunity_status(self, sugar_val): - fields = ['name', 'type'] + fields = ['name', 'case_default'] name = 'Opportunity_' + sugar_val['sales_stage'] - data = [sugar_val['sales_stage'], 'Opportunity'] - return self.import_object(fields, data, 'crm.case.stage', self.TABLE_STAGE, name, [('type', '=', 'opportunity'), ('name', 'ilike', sugar_val['sales_stage'])]) + data = [sugar_val['sales_stage'], '1'] + return self.import_object(fields, data, 'crm.case.stage', self.TABLE_STAGE, name, [('name', 'ilike', sugar_val['sales_stage'])]) def import_opportunity_contact(self, val): sugar_opportunities_contact = set(sugar.relation_search(self.context.get('port'), self.context.get('session_id'), 'Opportunities', module_id=val.get('id'), related_module='Contacts', query=None, deleted=None)) @@ -647,11 +649,11 @@ class sugar_import(import_framework): import lead """ def get_lead_status(self, sugar_val): - fields = ['name', 'type'] + fields = ['name', 'case_default'] name = 'lead_' + sugar_val.get('status', '') - data = [sugar_val.get('status', ''), 'lead'] - return self.import_object(fields, data, 'crm.case.stage', self.TABLE_STAGE, name, [('type', '=', 'lead'), ('name', 'ilike', sugar_val.get('status', ''))]) - + data = [sugar_val.get('status', ''), '1'] + return self.import_object(fields, data, 'crm.case.stage', self.TABLE_STAGE, name, [('name', 'ilike', sugar_val.get('status', ''))]) + lead_state = { 'New' : 'draft', 'Assigned':'open', @@ -1085,7 +1087,7 @@ class import_sugarcrm(osv.osv): scheduler Method """ context = {'username': args[4], 'password': args[5], 'url': args[3], 'instance_name': args[3]} - imp = sugar_import(self, cr, uid, args[2], "import_sugarcrm", [args[1]], context) + imp = sugar_import(self, cr, uid, args[2], "import_sugarcrm", args[1], context) imp.set_table_list(args[0]) imp.start() return True @@ -1129,7 +1131,7 @@ class import_sugarcrm(osv.osv): raise osv.except_osv(_('Error !!'), _("%s data required %s Module to be installed, Please install %s module") %(keys,module,module)) url = self.parse_valid_url(context) context.update({'url': url}) - imp = sugar_import(self, cr, uid, context.get('instance_name'), "import_sugarcrm", [context.get('email_user')], context) + imp = sugar_import(self, cr, uid, context.get('instance_name'), "import_sugarcrm", context.get('email_user'), context) imp.set_table_list(keys) imp.start() obj_model = self.pool.get('ir.model.data') diff --git a/addons/import_sugarcrm/sugar.py b/addons/import_sugarcrm/sugar.py index 783878723e9..4ce5e0048ea 100644 --- a/addons/import_sugarcrm/sugar.py +++ b/addons/import_sugarcrm/sugar.py @@ -32,13 +32,21 @@ import import_sugarcrm import logging +import sys + + +debug = False + class LoginError(Exception): pass def login(username, password, url): setURL(url) loc = sugarsoapLocator() - portType = loc.getsugarsoapPortType(url) + if debug: + portType = loc.getsugarsoapPortType(url, tracefile=sys.stdout) + else: + portType = loc.getsugarsoapPortType(url) request = loginRequest() uauth = ns0.user_auth_Def(request) request._user_auth = uauth