~therp-nl/openupgrade-server/6.0-API_and_loading_improvements

« back to all changes in this revision

Viewing changes to bin/addons/__init__.py

  • Committer: Stefan Rijnhart
  • Date: 2012-06-07 14:35:51 UTC
  • mfrom: (3495.1.1 openupgrade-server)
  • Revision ID: stefan@therp.nl-20120607143551-pb880dja5z5dnymn
[ADD] API: 
        - rename_xmlids
        - mark_obsolete_modules
        - migrate() decorator
        - add_module_dependencies
[IMP] API: calculate default function only once per user
[FIX] base: 
        - bug in creating unknown bank
        - rename salesman group xmlid
        - preserve res_partner_function table for use in hr_contract
        - remove obsolete modules
        - use openupgrade.migrate() decorator
[IMP] (loading) use table_exists function from library
[IMP] (loading) keep track of pre and post processed modules
[IMP] (loading) add module dependencies
[ADD] openupgrade_records: additional apriori knowledge

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
 
51
51
logger = netsvc.Logger()
52
52
 
53
 
### OpenUpgrade
54
 
def table_exists(cr, table):
55
 
    """ Check whether a certain table or view exists """
56
 
    cr.execute(
57
 
        'SELECT count(relname) FROM pg_class WHERE relname = %s',
58
 
        (table,))
59
 
    return cr.fetchone()[0] == 1
60
 
### End of OpenUpgrade
 
53
from openupgrade import openupgrade
61
54
 
62
55
_ad = os.path.abspath(opj(tools.ustr(tools.config['root_path']), u'addons'))     # default addons path (base)
63
56
ad_paths= map(lambda m: os.path.abspath(tools.ustr(m.strip())), tools.config['addons_path'].split(','))
808
801
        log any differences and merge the local registry with
809
802
        the global one.
810
803
        """
811
 
        if not table_exists(cr, 'openupgrade_record'):
 
804
        if not openupgrade.table_exists(cr, 'openupgrade_record'):
812
805
            return
813
806
        for model, fields in local_registry.items():
814
807
            registry.setdefault(model, {})
848
841
    logger.notifyChannel('init', netsvc.LOG_DEBUG, 'loading %d packages..' % len(graph))
849
842
 
850
843
    for package in graph:
851
 
        if skip_modules and package.name in skip_modules:
852
 
            continue
853
844
        logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: loading objects' % package.name)
854
 
        migrations.migrate_module(package, 'pre')
 
845
        if package.name not in skip_modules['pre']:
 
846
            migrations.migrate_module(package, 'pre')
855
847
        register_class(package.name)
856
848
        modules = pool.instanciate(package.name, cr)
857
849
 
864
856
 
865
857
            init_module_objects(cr, package.name, modules)
866
858
        cr.commit()
 
859
        skip_modules['pre'].append(package.name)
867
860
 
868
861
    for package in graph:
869
862
        status['progress'] = (float(statusi)+0.1) / len(graph)
870
863
        m = package.name
871
864
        mid = package.id
872
865
 
873
 
        if skip_modules and m in skip_modules:
 
866
        if package.name in skip_modules['post']:
874
867
            continue
875
868
 
876
869
        if modobj is None:
923
916
                if hasattr(package, kind):
924
917
                    delattr(package, kind)
925
918
 
 
919
        skip_modules['post'].append(package.name)
926
920
        statusi += 1
927
921
    cr.commit()
928
922
 
964
958
 
965
959
    registry = {}
966
960
 
 
961
    skip_modules = {'pre': [], 'post': []}
967
962
    try:
968
963
        processed_modules = []
969
964
        report = tools.assertion_report()
977
972
        if not graph:
978
973
            logger.notifyChannel('init', netsvc.LOG_CRITICAL, 'module base cannot be loaded! (hint: verify addons-path)')
979
974
            raise osv.osv.except_osv(_('Could not load base module'), _('module base cannot be loaded! (hint: verify addons-path)'))
980
 
        processed_modules.extend(load_module_graph(cr, graph, status, perform_checks=(not update_module), registry=registry, report=report))
 
975
        processed_modules.extend(load_module_graph(cr, graph, status, perform_checks=(not update_module), registry=registry, report=report, skip_modules=skip_modules))
981
976
 
982
977
        if tools.config['load_language']:
983
978
            for lang in tools.config['load_language'].split(','):
1021
1016
            if not module_list:
1022
1017
                break
1023
1018
 
 
1019
            # OpenUpgrade: forcefeeding module dependencies into the graph
 
1020
            module_list = openupgrade.add_module_dependencies(cr, module_list)
1024
1021
            new_modules_in_graph = upgrade_graph(graph, cr, module_list, force)
1025
1022
            if new_modules_in_graph == 0:
1026
1023
                # nothing to load
1027
1024
                break
1028
1025
 
1029
1026
            logger.notifyChannel('init', netsvc.LOG_DEBUG, 'Updating graph with %d more modules' % (len(module_list)))
1030
 
            processed_modules.extend(load_module_graph(cr, graph, status, registry=registry, report=report, skip_modules=processed_modules))
 
1027
            processed_modules.extend(load_module_graph(cr, graph, status, registry=registry, report=report, skip_modules=skip_modules))
1031
1028
 
1032
1029
        # load custom models
1033
1030
        cr.execute('select model from ir_model where state=%s', ('manual',))