28
from os.path import join as opj
37
from cStringIO import StringIO
38
from os.path import join as opj
39
from zipfile import PyZipFile, ZIP_DEFLATED
43
import openerp.modules.db
44
import openerp.modules.graph
45
import openerp.modules.migration
46
import openerp.netsvc as netsvc
34
47
import openerp.osv as osv
48
import openerp.pooler as pooler
49
import openerp.release as release
35
50
import openerp.tools as tools
36
51
import openerp.tools.osutil as osutil
37
53
from openerp.tools.safe_eval import safe_eval as eval
38
import openerp.pooler as pooler
39
54
from openerp.tools.translate import _
41
import openerp.netsvc as netsvc
44
import openerp.release as release
48
from zipfile import PyZipFile, ZIP_DEFLATED
49
from cStringIO import StringIO
53
import openerp.modules.db
54
import openerp.modules.graph
55
import openerp.modules.migration
57
55
from openerp.modules.module import \
58
56
get_modules, get_modules_with_version, \
59
57
load_information_from_description_file, \
89
88
cr.execute(new_query)
91
def load_init_xml(cr, module_name, idref, mode):
92
_load_data(cr, module_name, idref, mode, 'init_xml')
94
def load_update_xml(cr, module_name, idref, mode):
95
_load_data(cr, module_name, idref, mode, 'update_xml')
97
def load_demo_xml(cr, module_name, idref, mode):
98
_load_data(cr, module_name, idref, mode, 'demo_xml')
100
def load_data(cr, module_name, idref, mode):
101
_load_data(cr, module_name, idref, mode, 'data')
103
def load_demo(cr, module_name, idref, mode):
104
_load_data(cr, module_name, idref, mode, 'demo')
106
def load_test(cr, module_name, idref, mode):
90
load_init_xml = lambda *args: _load_data(cr, *args, kind='init_xml')
91
load_update_xml = lambda *args: _load_data(cr, *args, kind='update_xml')
92
load_demo_xml = lambda *args: _load_data(cr, *args, kind='demo_xml')
93
load_data = lambda *args: _load_data(cr, *args, kind='data')
94
load_demo = lambda *args: _load_data(cr, *args, kind='demo')
96
def load_test(module_name, idref, mode):
108
98
if not tools.config.options['test_disable']:
110
100
_load_data(cr, module_name, idref, mode, 'test')
111
101
except Exception, e:
112
logging.getLogger('test').exception('Tests failed to execute in module %s', module_name)
102
logging.getLogger('init.test').exception(
103
'Tests failed to execute in module %s', module_name)
114
105
if tools.config.options['test_commit']:
128
119
for filename in package.data[kind]:
129
log = logging.getLogger('init')
130
log.info("module %s: loading %s", module_name, filename)
120
logger.info("module %s: loading %s", module_name, filename)
131
121
_, ext = os.path.splitext(filename)
132
122
pathname = os.path.join(module_name, filename)
133
123
fp = tools.file_open(pathname)
154
144
processed_modules = []
155
145
loaded_modules = []
157
146
pool = pooler.get_pool(cr.dbname)
158
147
migrations = openerp.modules.migration.MigrationManager(cr, graph)
159
logger.notifyChannel('init', netsvc.LOG_DEBUG, 'loading %d packages..' % len(graph))
148
logger.debug('loading %d packages...', len(graph))
161
150
# register, instantiate and initialize models for each modules
162
for package in graph:
151
for index, package in enumerate(graph):
163
152
module_name = package.name
164
153
module_id = package.id
166
155
if skip_modules and module_name in skip_modules:
169
logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: loading objects' % package.name)
158
logger.info('module %s: loading objects', package.name)
170
159
migrations.migrate_module(package, 'pre')
171
160
register_module_classes(package.name)
172
161
models = pool.instanciate(package.name, cr)
174
163
if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'):
175
164
init_module_models(cr, package.name, models)
177
status['progress'] = float(statusi) / len(graph)
166
status['progress'] = float(index) / len(graph)
179
168
# Can't put this line out of the loop: ir.module.module will be
180
169
# registered by init_module_models() above.
193
182
if package.state=='to upgrade':
194
183
# upgrading the module information
195
184
modobj.write(cr, 1, [module_id], modobj.get_values_from_terp(package.data))
196
load_init_xml(cr, module_name, idref, mode)
197
load_update_xml(cr, module_name, idref, mode)
198
load_data(cr, module_name, idref, mode)
185
load_init_xml(module_name, idref, mode)
186
load_update_xml(module_name, idref, mode)
187
load_data(module_name, idref, mode)
199
188
if hasattr(package, 'demo') or (package.dbdemo and package.state != 'installed'):
200
status['progress'] = (float(statusi)+0.75) / len(graph)
201
load_demo_xml(cr, module_name, idref, mode)
202
load_demo(cr, module_name, idref, mode)
189
status['progress'] = (index + 0.75) / len(graph)
190
load_demo_xml(module_name, idref, mode)
191
load_demo(module_name, idref, mode)
203
192
cr.execute('update ir_module_module set demo=%s where id=%s', (True, module_id))
205
194
# launch tests only in demo mode, as most tests will depend
206
195
# on demo data. Other tests can be added into the regular
207
196
# 'data' section, but should probably not alter the data,
208
197
# as there is no rollback.
209
load_test(cr, module_name, idref, mode)
198
load_test(module_name, idref, mode)
211
200
processed_modules.append(package.name)