Пример #1
0
def get_db_and_pool(db_name,
                    force_demo=False,
                    status=None,
                    update_module=False,
                    pooljobs=True):
    if not status:
        status = {}

    db = get_db_only(db_name)

    if db_name in pool_dic:
        pool = pool_dic[db_name]
    else:
        import addons
        import osv.osv
        pool = osv.osv.osv_pool()
        pool_dic[db_name] = pool

        try:
            addons.load_modules(db, force_demo, status, update_module)
        except Exception:
            del pool_dic[db_name]
            raise

        cr = db.cursor()
        try:
            pool.init_set(cr, False)
            pool.get('ir.actions.report.xml').register_all(cr)
            cr.commit()
        finally:
            cr.close()

        if pooljobs:
            pool.get('ir.cron').restart(db.dbname)
    return db, pool
Пример #2
0
def get_db_and_pool(db_name, force_demo=False, status=None, update_module=False, pooljobs=True):
    if not status:
        status={}

    db = get_db_only(db_name)

    if db_name in pool_dic:
        pool = pool_dic[db_name]
    else:
        import addons
        import osv.osv
        pool = osv.osv.osv_pool()
        pool_dic[db_name] = pool

        try:
            addons.load_modules(db, force_demo, status, update_module)
        except Exception:
            del pool_dic[db_name]
            raise

        cr = db.cursor()
        try:
            pool.init_set(cr, False)
            pool.get('ir.actions.report.xml').register_all(cr)
            if not updater.do_upgrade(cr, pool):
                pool_dic.pop(db_name)
                # please do not change "updater.py" in the message, or change unifield-web/addons/openerp/utils/rpc.py accordingly
                raise Exception("updater.py told us that OpenERP version doesn't match database version!")
            cr.commit()
        finally:
            cr.close()

        if pooljobs:
            pool.get('ir.cron').restart(db.dbname)
    return db, pool
Пример #3
0
def get_db_and_pool(db_name, force_demo=False, status=None, update_module=False):
    if not status:
        status={}
 
    db = get_db_only(db_name)

    if db_name in pool_dic:
        pool = pool_dic[db_name]
    else:
        import addons
        import osv.osv
        pool = osv.osv.osv_pool()
        pool_dic[db_name] = pool
        
        try:
            addons.load_modules(db, force_demo, status, update_module)
        except Exception, e:
            del pool_dic[db_name]
            raise

        cr = db.cursor()
        try:
            pool.init_set(cr, False)
            cr.commit()
        finally:
            cr.close()

        import report
        report.interface.register_all(db)
        pool.get('ir.cron')._poolJobs(db.dbname)
Пример #4
0
def get_db_and_pool(db_name, force_demo=False, status=None, update_module=False, pooljobs=True):
    if not status:
        status={}

    db = get_db_only(db_name)

    if db_name in pool_dic:
        pool = pool_dic[db_name]
    else:
        import addons
        import osv.osv
        pool = osv.osv.osv_pool()
        pool_dic[db_name] = pool

        try:
            addons.load_modules(db, force_demo, status, update_module)
        except Exception:
            del pool_dic[db_name]
            raise

        cr = db.cursor()
        try:
            pool.init_set(cr, False)
            pool.get('ir.actions.report.xml').register_all(cr)
            cr.commit()
        finally:
            cr.close()

        if pooljobs:
            pool.get('ir.cron').restart(db.dbname)
    return db, pool
Пример #5
0
def get_db_and_pool(db_name,
                    force_demo=False,
                    status=None,
                    update_module=False,
                    pooljobs=True,
                    languages=False):
    if not status:
        status = {}

    db = get_db_only(db_name)

    if db_name in pool_dic:
        pool = pool_dic[db_name]
    else:
        import addons
        import osv.osv
        import logging
        from tools import config

        log = logging.getLogger('pooler')
        allowed_res = config.get_misc('databases', 'allowed')
        if allowed_res:
            dbs_allowed = [x.strip() for x in allowed_res.split(' ')]
            if db_name not in dbs_allowed:
                log.critical('Illegal database requested: %s', db_name)
                raise AttributeError('Illegal database: %s' % db_name)

        log.info("Starting pooler of database: %s" % db_name)

        pool = osv.osv.osv_pool()
        pool_dic[db_name] = pool

        try:
            addons.load_modules(db,
                                force_demo,
                                status,
                                update_module,
                                languages=languages)
        except Exception:
            del pool_dic[db_name]
            log.exception("Could not load modules for %s" % db_name)
            raise

        cr = db.cursor()
        try:
            pool.init_set(cr, False)
            pool.get('ir.actions.report.xml').register_all(cr)
            cr.commit()
        finally:
            cr.close()

        if pooljobs:
            pool.get('ir.cron').restart(db.dbname)
        log.info('Successfuly loaded database \"%s\"' % db_name)
    return db, pool
Пример #6
0
def get_db_and_pool(db_name, force_demo=False, status=None,
        update_module=False, pooljobs=True, threaded=False, upgrade_modules=True):
    '''
    Return the db and pool.

    :param db_name: database name
    :param force_demo: load demo data
    :param status: status dictionary for keeping track of progress
    :param update_module: update the list of available modules
    :pooljobs: restart the cron job
    :upgrade_modules: start the modules upgrade process ('-u base') if needed
    :rtype: list of two object: (dabase, pool)

    '''
    if not status:
        status={}

    db = get_db_only(db_name)

    if db_name in pool_dic:
        pool = pool_dic[db_name]
    else:
        import addons
        import osv.osv
        pool = osv.osv.osv_pool()
        pool_dic[db_name] = pool

        try:
            addons.load_modules(db, force_demo, status, update_module)
        except Exception:
            del pool_dic[db_name]
            raise

        cr = db.cursor()
        try:
            pool.init_set(cr, False)
            pool.get('ir.actions.report.xml').register_all(cr)
            if upgrade_modules:
                if not updater.do_upgrade(cr, pool):
                    pool_dic.pop(db_name)
                    # please do not change "updater.py" in the message, or change unifield-web/addons/openerp/utils/rpc.py accordingly
                    raise Exception("updater.py told us that OpenERP version doesn't match database version!")
            cr.commit()
        finally:
            if threaded:
                cr.close(True)
            else:
                cr.close()

        if pooljobs:
            pool.get('ir.cron').restart(db.dbname)
    return db, pool