예제 #1
0
    def create_import(self, cr, uid, ids, context=None):
        """
        context used to specify:
         - import_error_management: 'rollback_and_continue' or 'raise' (default='raise', see _process function)
         - rollback_and_continue: True/False (default=True)
         - commit_and_new_thread: True/False (default=False) = rollback_and_continue but in a new thread
         if commit_and_new_thread or rollback_and_continue= True, import_error_management is forced to rollback_and_continue
        returns a list: [import_id1, ...]
        """
        if isinstance(ids, (int, long)):
            ids = [ids]
        context = context or {}
        import_obj = self.pool.get('ir.model.import')

        import_name = context.get('import_name', '')
        test_mode = context.get('test_mode', False)

        import_ids = []
        for template in self.browse(cr, uid, ids, context):
            tmpl_logger = SmileDBLogger(cr.dbname, 'ir.model.import.template',
                                        template.id, uid)
            try:
                import_name = import_name or template.name
                import_id = import_obj.create(
                    cr, uid, {
                        'name': import_name,
                        'import_tmpl_id': template.id,
                        'test_mode': test_mode,
                        'state': 'started',
                        'from_date': time.strftime('%Y-%m-%d %H:%M:%S'),
                    }, context)
                import_ids.append(import_id)
                logger = SmileDBLogger(cr.dbname, 'ir.model.import', import_id,
                                       uid)
                import_obj.write(cr, uid, import_id, {'pid': logger.pid},
                                 context)
                if context.get('commit_and_new_thread'):
                    cr.commit()
                    t = threading.Thread(
                        target=import_obj._process_with_new_cursor,
                        args=(cr.dbname, uid, import_id, logger, context))
                    t.start()
                elif context.get('rollback_and_continue', True):
                    cr.commit()
                    import_obj._process_with_new_cursor(
                        cr.dbname, uid, import_id, logger, context)
                else:
                    import_obj._process_import(cr, uid, import_id, logger,
                                               context)
            except Exception, e:
                tmpl_logger.error(_get_exception_message(e))
                raise e
예제 #2
0
    def create_import(self, cr, uid, ids, context=None):
        """
        context used to specify:
         - import_error_management: 'rollback_and_continue' or 'raise' (default='raise', see _process function)
         - rollback_and_continue: True/False (default=True)
         - commit_and_new_thread: True/False (default=False) = rollback_and_continue but in a new thread
         if commit_and_new_thread or rollback_and_continue= True, import_error_management is forced to rollback_and_continue
        returns a list: [import_id1, ...]
        """
        if isinstance(ids, (int, long)):
            ids = [ids]
        context = context or {}
        import_obj = self.pool.get('ir.model.import')

        import_name = context.get('import_name', '')
        test_mode = context.get('test_mode', False)

        import_ids = []
        for template in self.browse(cr, uid, ids, context):
            tmpl_logger = SmileDBLogger(cr.dbname, 'ir.model.import.template', template.id, uid)
            try:
                import_name = import_name or template.name
                import_id = import_obj.create(cr, uid, {
                    'name': import_name,
                    'import_tmpl_id': template.id,
                    'test_mode': test_mode,
                    'state': 'started',
                    'from_date': time.strftime('%Y-%m-%d %H:%M:%S'),
                }, context)
                import_ids.append(import_id)
                logger = SmileDBLogger(cr.dbname, 'ir.model.import', import_id, uid)
                import_obj.write(cr, uid, import_id, {'pid': logger.pid}, context)
                if context.get('commit_and_new_thread'):
                    cr.commit()
                    t = threading.Thread(target=import_obj._process_with_new_cursor, args=(cr.dbname, uid, import_id, logger, context))
                    t.start()
                elif context.get('rollback_and_continue', True):
                    cr.commit()
                    import_obj._process_with_new_cursor(cr.dbname, uid, import_id, logger, context)
                else:
                    import_obj._process_import(cr, uid, import_id, logger, context)
            except Exception, e:
                tmpl_logger.error(_get_exception_message(e))
                raise e