def _load(cls, module, *args): convert_file( cls.cr, "dms", get_module_resource(module, *args), {}, "init", False, "test", cls.registry._assertion_report, )
def _load_data(cr, module_name, idref, mode, kind): """ kind: data, demo, test, init_xml, update_xml, demo_xml. noupdate is False, unless it is demo data or it is csv data in init mode. """ try: if kind in ('demo', 'test'): threading.currentThread().testing = True for filename in _get_files_of_kind(kind): _logger.info("loading %s/%s", module_name, filename) noupdate = False if kind in ('demo', 'demo_xml') or (filename.endswith('.csv') and kind in ('init', 'init_xml')): noupdate = True tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report) finally: if kind in ('demo', 'test'): threading.currentThread().testing = False
def setUpClass(cls): super(TestAccountInvoiceInterCompany, cls).setUpClass() module = "account_invoice_inter_company" convert_file( cls.cr, module, get_resource_path(module, "tests", "inter_company_invoice.xml"), None, 'init', False, 'test', cls.registry._assertion_report, ) cls.wizard_obj = cls.env['wizard.multi.charts.accounts'] cls.account_obj = cls.env['account.account'] cls.invoice_obj = cls.env['account.invoice'] cls.invoice_company_a = cls.env.ref( 'account_invoice_inter_company.customer_invoice_company_a') cls.user_company_a = cls.env.ref( 'account_invoice_inter_company.user_company_a') cls.user_company_b = cls.env.ref( 'account_invoice_inter_company.user_company_b') cls.chart = cls.env['account.chart.template'].search([], limit=1) if not cls.chart: raise ValidationError( # translation to avoid pylint warnings _("No Chart of Account Template has been defined !"))
def _load(self, module, *args): tools.convert_file( self.cr, 'hr_payroll_account', get_module_resource(module, *args), {}, 'init', False, 'test', self.registry._assertion_report)
def _load(self, module, *args): tools.convert_file(self.cr, 'report_intrastat', get_module_resource(module, *args), {}, 'init', False, 'test', self.registry._assertion_report)
def _load(self, module, *args): tools.convert_file(self.cr, 'website', get_module_resource(module, *args), {}, 'init', False, 'test')
def _import_module(self, module, path, force=False): known_mods = self.search([]) known_mods_names = {m.name: m for m in known_mods} installed_mods = [m.name for m in known_mods if m.state == 'installed'] terp = load_information_from_description_file(module, mod_path=path) if not terp: return False values = self.get_values_from_terp(terp) if 'version' in terp: values['latest_version'] = terp['version'] unmet_dependencies = set(terp['depends']).difference(installed_mods) if unmet_dependencies: if (unmet_dependencies == set(['web_studio']) and _is_studio_custom(path)): err = _("Studio customizations require Studio") else: err = _("Unmet module dependencies: %s") % ', '.join( unmet_dependencies, ) raise UserError(err) elif 'web_studio' not in installed_mods and _is_studio_custom(path): raise UserError(_("Studio customizations require Studio")) mod = known_mods_names.get(module) if mod: mod.write(dict(state='installed', **values)) mode = 'update' if not force else 'init' else: assert terp.get('installable', True), "Module not installable" self.create( dict(name=module, state='installed', imported=True, **values)) mode = 'init' for kind in ['data', 'init_xml', 'update_xml']: for filename in terp[kind]: ext = os.path.splitext(filename)[1].lower() if ext not in ('.xml', '.csv', '.sql'): _logger.info("module %s: skip unsupported file %s", module, filename) continue _logger.info("module %s: loading %s", module, filename) noupdate = False if ext == '.csv' and kind in ('init', 'init_xml'): noupdate = True pathname = opj(path, filename) idref = {} convert_file(self.env.cr, module, filename, idref, mode=mode, noupdate=noupdate, kind=kind, pathname=pathname) path_static = opj(path, 'static') IrAttachment = self.env['ir.attachment'] if os.path.isdir(path_static): for root, dirs, files in os.walk(path_static): for static_file in files: full_path = opj(root, static_file) with open(full_path, 'rb') as fp: data = base64.b64encode(fp.read()) url_path = '/{}{}'.format( module, full_path.split(path)[1].replace(os.path.sep, '/')) if not isinstance(url_path, pycompat.text_type): url_path = url_path.decode(sys.getfilesystemencoding()) filename = os.path.split(url_path)[1] values = dict( name=filename, datas_fname=filename, url=url_path, res_model='ir.ui.view', type='binary', datas=data, ) attachment = IrAttachment.search([('url', '=', url_path), ('type', '=', 'binary'), ('res_model', '=', 'ir.ui.view')]) if attachment: attachment.write(values) else: IrAttachment.create(values) return True
def _load(self, module, *args): tools.convert_file(self.cr, 'account_asset', get_resource_path(module, *args), {}, 'init', False, 'test', self.registry._assertion_report)
def _load(self, module, *args): if get_resource_path(module, *args): tools.convert_file(self.cr, 'account_asset', get_resource_path(module, *args), {}, 'init', False, 'test')