def _generate_line(self, period_ids=None):
        if period_ids:
            periods = self.env['perso.account.period'].browse(period_ids)
        else:
            periods = self.env['perso.account.period'].search([])

        period_to_sort = { period : [period.previous_period_id] for period in periods}
        for period in topological_sort(period_to_sort):
            period._close_period()
        _logger.info("Generate Report Line Done")
示例#2
0
    def _generate_line(self, period_ids=None):
        if period_ids:
            periods = self.env['perso.account.period'].browse(period_ids)
        else:
            periods = self.env['perso.account.period'].search([])

        period_to_sort = {
            period: [period.previous_period_id]
            for period in periods
        }
        for period in topological_sort(period_to_sort):
            period._close_period()
        _logger.info("Generate Report Line Done")
示例#3
0
 def field_sequence(self):
     """ Return a function mapping a field to an integer. The value of a
         field is guaranteed to be strictly greater than the value of the
         field's dependencies.
     """
     # map fields on their dependents
     dependents = {
         field: set(dep for dep, _ in model._field_triggers[field] if dep != field)
         for model in self.itervalues()
         for field in model._fields.itervalues()
     }
     # sort them topologically, and associate a sequence number to each field
     mapping = {
         field: num
         for num, field in enumerate(reversed(topological_sort(dependents)))
     }
     return mapping.get
示例#4
0
 def field_sequence(self):
     """ Return a function mapping a field to an integer. The value of a
         field is guaranteed to be strictly greater than the value of the
         field's dependencies.
     """
     # map fields on their dependents
     dependents = {
         field: set(dep for dep, _ in model._field_triggers[field] if dep != field)
         for model in self.itervalues()
         for field in model._fields.itervalues()
     }
     # sort them topologically, and associate a sequence number to each field
     mapping = {
         field: num
         for num, field in enumerate(reversed(topological_sort(dependents)))
     }
     return mapping.get
示例#5
0
    def test_topological_sort(self):
        random.shuffle(self.mods)
        modules = [(k, sample(self.mods[:i])) for i, k in enumerate(self.mods)]
        random.shuffle(modules)
        ms = dict(modules)

        seen = set()
        sorted_modules = topological_sort(ms)
        for module in sorted_modules:
            deps = ms[module]
            self.assertGreaterEqual(
                seen, set(deps),
                        'Module %s (index %d), ' \
                        'missing dependencies %s from loaded modules %s' % (
                    module, sorted_modules.index(module), deps, seen
                ))
            seen.add(module)
示例#6
0
    def test_topological_sort(self):
        random.shuffle(self.mods)
        modules = [
            (k, sample(self.mods[:i]))
            for i, k in enumerate(self.mods)]
        random.shuffle(modules)
        ms = dict(modules)

        seen = set()
        sorted_modules = topological_sort(ms)
        for module in sorted_modules:
            deps = ms[module]
            self.assertGreaterEqual(
                seen, set(deps),
                        'Module %s (index %d), ' \
                        'missing dependencies %s from loaded modules %s' % (
                    module, sorted_modules.index(module), deps, seen
                ))
            seen.add(module)
示例#7
0
def module_installed_bypass_session(dbname):
    loadable = http.addons_manifest.keys()
    modules = {}
    try:
        registry = openerp.modules.registry.RegistryManager.get(dbname)
        with registry.cursor() as cr:
            m = registry.get('ir.module.module')
            # TODO The following code should move to ir.module.module.list_installed_modules()
            domain = [('state', '=', 'installed'), ('name', 'in', loadable)]
            ids = m.search(cr, 1, [('state', '=', 'installed'),
                                   ('name', 'in', loadable)])
            for module in m.read(cr, 1, ids, ['name', 'dependencies_id']):
                modules[module['name']] = []
                deps = module.get('dependencies_id')
                if deps:
                    deps_read = registry.get(
                        'ir.module.module.dependency').read(
                            cr, 1, deps, ['name'])
                    dependencies = [i['name'] for i in deps_read]
                    modules[module['name']] = dependencies
    except:
        pass
    sorted_modules = topological_sort(modules)
    return sorted_modules
示例#8
0
            # TODO The following code should move to ir.module.module.list_installed_modules()
            domain = [('state', '=', 'installed'), ('name', 'in', loadable)]
            ids = m.search(cr, 1, [('state', '=', 'installed'),
                                   ('name', 'in', loadable)])
            for module in m.read(cr, 1, ids, ['name', 'dependencies_id']):
                modules[module['name']] = []
                deps = module.get('dependencies_id')
                if deps:
                    deps_read = registry.get(
                        'ir.module.module.dependency').read(
                            cr, 1, deps, ['name'])
                    dependencies = [i['name'] for i in deps_read]
                    modules[module['name']] = dependencies
    except Exception, e:
        pass
    sorted_modules = topological_sort(modules)
    return sorted_modules


def module_boot(db=None):
    server_wide_modules = openerp.conf.server_wide_modules or ['web']
    serverside = []
    dbside = []
    for i in server_wide_modules:
        if i in http.addons_manifest:
            serverside.append(i)
    monodb = db or db_monodb()
    if monodb:
        dbside = module_installed_bypass_session(monodb)
        dbside = [i for i in dbside if i not in serverside]
    addons = serverside + dbside
        registry = openerp.modules.registry.RegistryManager.get(dbname)
        with registry.cursor() as cr:
            m = registry.get('ir.module.module')
            # TODO The following code should move to ir.module.module.list_installed_modules()
            domain = [('state','=','installed'), ('name','in', loadable)]
            ids = m.search(cr, 1, [('state','=','installed'), ('name','in', loadable)])
            for module in m.read(cr, 1, ids, ['name', 'dependencies_id']):
                modules[module['name']] = []
                deps = module.get('dependencies_id')
                if deps:
                    deps_read = registry.get('ir.module.module.dependency').read(cr, 1, deps, ['name'])
                    dependencies = [i['name'] for i in deps_read]
                    modules[module['name']] = dependencies
    except Exception,e:
        pass
    sorted_modules = topological_sort(modules)
    return sorted_modules
    
def module_boot(db=None):
    server_wide_modules = openerp.conf.server_wide_modules or ['web']
    serverside = []
    dbside = []
    for i in server_wide_modules:
        if i in http.addons_manifest:
            serverside.append(i)
    monodb = db or db_monodb()
    if monodb:
        dbside = module_installed_bypass_session(monodb)
        dbside = [i for i in dbside if i not in serverside]
    addons = serverside + dbside
    return addons