def group_invoice(self): date_inv = self.date_invoice data_invoice_title = self.invoice_title force_period = self.period_id.id today_date = time.strftime('%Y-%m-%d') obj_inv = self.env['account.invoice'] dict_info=[] models=['cci_missions.certificate','cci_missions.legalization','cci_missions.embassy_folder','cci_missions.ata_carnet'] if self.registration: models.append('event.registration') for model in models: if model == 'cci_missions.embassy_folder' or model == 'event.registration': state_to_check = 'open' else: state_to_check = 'draft' if model == 'event.registration': date_to_check = 'event_id.date_begin' elif model == 'cci_missions.ata_carnet': date_to_check = 'creation_date' elif model == 'cci_missions.embassy_folder': date_to_check = 'create_date' else: date_to_check = 'date' try: model_ids = self.env[model].search([('state','=', state_to_check), (date_to_check, '<=', self.date_invoice)]) except Exception ,e: model_ids = self.env[model].search([('stage_id.name','=', state_to_check), (date_to_check, '<=', self.date_invoice)]) if model_ids: read_ids = model_ids.read(['partner_id','order_partner_id','date','creation_date','partner_invoice_id']) for element in read_ids: part_info={} if ('partner_id' in element) and element['partner_id']: part_info['partner_id'] = element['partner_id'][0] part_info['id'] = element['id'] part_info['model'] = model if ('order_partner_id' in element) and element['order_partner_id']: part_info['partner_id'] = element['order_partner_id'][0] part_info['id'] = element['id'] part_info['model'] = model if ('partner_invoice_id' in element) and element['partner_invoice_id']: part_info['partner_id'] = element['partner_invoice_id'][0] part_info['id'] = element['id'] part_info['model'] = model if 'date' in element: part_info['date'] = element['date'] if 'creation_date' in element: part_info['date'] = element['creation_date'] if part_info and part_info.has_key('partner_id'): dict_info.append(part_info)
def send_all(self, cr, uid, ids, context=None): obj = self.browse(cr, uid, ids[0]) ws = self.pool.get('cenit.serializer') mo = self.pool.get(obj.model_id.model, False) if mo: models = [] model_ids = mo.search(cr, uid, [], context=context) if obj.format == 'json': for x in mo.browse(cr, uid, model_ids, context): models.append(ws.serialize(cr, uid, x)) elif obj.format == 'edi' and hasattr(mo, 'edi_export'): models = mo.edi_export(cr, uid, mo.browse(cr, uid, model_ids)) if model_ids: return self._send(cr, uid, obj, models, context) return False
def get_graphical_representation(self, cr, uid, model_ids, context=None): obj_model = self.pool.get('ir.model') if context is None: context = {} res = {} models = [] for obj in obj_model.browse(cr, uid, model_ids, context=context): models.append(obj.model) relations = set( self._get_graphical_representation(cr, uid, model_ids, context.get('level', 1))) res[obj.model] = ( "digraph G {\nnode [style=rounded, shape=record];\n%s\n%s }" % ( self._get_structure(relations, models), ''.join('"%s":%s -> "%s":id:n [%s]; // %s\n' % (m, fn, fr, self._get_arrow(ft), ft) for m, fn, ft, fr, fl in relations), )) return res
def get_graphical_representation(self, cr, uid, model_ids, context=None): obj_model = self.pool.get('ir.model') if context is None: context = {} res = {} models = [] for obj in obj_model.browse(cr, uid, model_ids, context=context): models.append(obj.model) relations = set( self._get_graphical_representation( cr, uid, model_ids, context.get('level', 1) ) ) res[obj.model] = ( "digraph G {\nnode [style=rounded, shape=record];\n%s\n%s }" % ( self._get_structure(relations, models), ''.join('"%s":%s -> "%s":id:n [%s]; // %s\n' % ( m, fn, fr, self._get_arrow(ft), ft ) for m, fn, ft, fr, fl in relations), ) ) return res
def _get_notification_model_domain(self): models = [] for model, obj in self.env.registry.models.iteritems(): if hasattr(obj, '_follow_partner_fields'): models.append(model) return [('model', 'in', models)]
def _group_invoice(self, data): date_inv = self.date_invoice force_period = self.period_id today_date = time.strftime('%Y-%m-%d') obj_inv = self.env['account.invoice'] dict_info = [] models = [ 'cci_missions.certificate', 'cci_missions.legalization', 'cci_missions.embassy_folder', 'cci_missions.ata_carnet' ] if self.registration: models.append('event.registration') for model in models: if model == 'cci_missions.embassy_folder' or model == 'event.registration': model_ids = self.env[model].search([('state', '=', 'open')]) else: model_ids = self.env[model].search([('state', '=', 'draft')]) if model_ids: read_ids = self.env[model].read(model_ids, [ 'partner_id', 'order_partner_id', 'date', 'creation_date', 'partner_invoice_id' ]) for element in read_ids: part_info = {} if ('partner_id' in element) and element['partner_id']: part_info['partner_id'] = element['partner_id'][0] part_info['id'] = element['id'] part_info['model'] = model if ('order_partner_id' in element) and element['order_partner_id']: part_info['partner_id'] = element['order_partner_id'][0] part_info['id'] = element['id'] part_info['model'] = model if ('partner_invoice_id' in element) and element['partner_invoice_id']: part_info['partner_id'] = element['partner_invoice_id'][0] part_info['id'] = element['id'] part_info['model'] = model if 'date' in element: part_info['date'] = element['date'] if 'creation_date' in element: part_info['date'] = element['creation_date'] if part_info: dict_info.append(part_info) if not dict_info: self.invoice_ids = [] if self.registration: self.message = "No invoices grouped because no invoices for ATA Carnet, Legalizations, Certifications and (Embassy Folders and Registrations) are in 'Draft' state." else: self.message = "No invoices grouped because no invoices for ATA Carnet, Legalizations, Certifications and Embassy Folders are in 'Draft' state." return self.message partner_ids = list(set([x['partner_id'] for x in dict_info])) partner_ids.sort() disp_msg = '' list_invoice = [] for partner_id in partner_ids: partner = self.env['res.partner'].browse(partner_id) final_info = {} list_info = [] list_invoice_ids = [] self.invoice_info = [] for element in dict_info: final_info = {} if element['partner_id'] == partner_id: data = { 'model': element['model'], 'form': {}, 'id': element['id'], 'ids': [element['id']], 'report_type': 'pdf' } final_info['ids'] = [] final_info['date'] = element['date'][0:10] if element['model'] == 'cci_missions.ata_carnet': result = create_invoice_carnet._createInvoices(data) if result['inv_rejected'] > 0 and result['inv_rej_reason']: disp_msg += '\nFor Partner ' + partner.name + ' On ATA Carnet with ' + result[ 'inv_rej_reason'] continue if result['invoice_ids']: list_invoice_ids.append(result['invoice_ids'][0]) final_info['ids'].append(result['invoice_ids'][0]) list_info.append(final_info) final_info = {} final_info['id'] = element['id'] final_info['model'] = element['model'] self.invoice_info.append(final_info) if element['model'] == 'cci_missions.embassy_folder': result = create_invoice_embassy._createInvoices(data) if result['inv_rejected'] > 0 and result['inv_rej_reason']: disp_msg += '\nFor Partner ' + partner.name + ' On Embassy Folder with ' + result[ 'inv_rej_reason'] continue if result['invoice_ids']: list_invoice_ids.append(result['invoice_ids'][0]) final_info['ids'].append(result['invoice_ids'][0]) list_info.append(final_info) final_info = {} final_info['id'] = element['id'] final_info['model'] = element['model'] self.invoice_info.append(final_info) if element['model'] in ('cci_missions.certificate', 'cci_missions.legalization'): result = create_invoice._createInvoices(data) if result['inv_rejected'] > 0 and result['inv_rej_reason']: disp_msg += '\nFor Partner ' + partner.name + ' On Certificate or Legalization with ' + result[ 'inv_rej_reason'] continue if result['invoice_ids']: list_invoice_ids.append(result['invoice_ids'][0]) final_info['ids'].append(result['invoice_ids'][0]) list_info.append(final_info) final_info = {} final_info['id'] = element['id'] final_info['model'] = element['model'] self.invoice_info.append(final_info) if element['model'] == 'event.registration': result = make_invoice._makeInvoices(data) if result['inv_rejected'] > 0 and result['inv_rej_reason']: disp_msg += '\nFor Partner ' + partner.name + ' On Event Registration ' + result[ 'inv_rej_reason'] continue if result['invoice_ids']: list_invoice_ids.append(result['invoice_ids'][0]) final_info['ids'].append(result['invoice_ids'][0]) list_info.append(final_info) final_info = {} final_info['id'] = element['id'] final_info['model'] = element['model'] self.invoice_info.append(final_info) done_date = [] date_id_dict = {} done_date = list(set([x['date'] for x in list_info])) done_date.sort() final_list = [] for date in done_date: date_id_dict = {} date_id_dict['date'] = date date_id_dict['ids'] = [] for item in list_info: if date == item['date']: date_id_dict['ids'] += item['ids'] final_list.append(date_id_dict) count = 0 list_inv_lines = [] #marked if not final_list: continue for record in final_list: customer_ref = record['date'] line_obj = self.env['account.invoice.line'] id_note = line_obj.create({ 'name': customer_ref, 'state': 'title', 'sequence': count }) count = count + 1 list_inv_lines.append(id_note) data_inv = obj_inv.browse(record['ids']) notes = '' for invoice in data_inv: if invoice.reference: customer_ref = customer_ref + ' ' + invoice.reference if invoice.comment: notes = (notes + ' ' + invoice.comment) for line in invoice.invoice_line: if invoice.name: name = invoice.name + ' ' + line.name else: name = line.name #pool_obj.get('account.invoice.line').write(cr,uid,line.id,{'name':name,'sequence':count}) # inv_line = line_obj.create(cr, uid, {'name': name,'account_id':line.account_id.id,'price_unit': line.price_unit,'quantity': line.quantity,'discount': False,'uos_id': line.uos_id.id,'product_id':line.product_id.id,'invoice_line_tax_id': [(6,0,line.invoice_line_tax_id)],'note':line.note,'sequence' : count}) inv_line = line_obj.create({ 'name': name, 'account_id': line.account_id.id, 'price_unit': line.price_unit, 'quantity': line.quantity, 'discount': False, 'uos_id': line.uos_id.id, 'product_id': line.product_id.id, 'invoice_line_tax_id': [(6, 0, line.invoice_line_tax_id)], 'note': line.note, 'sequence': count, 'cci_special_reference': line.cci_special_reference }) count = count + 1 list_inv_lines.append(inv_line) # If we want to cancel ==> obj_inv.write(cr,uid,invoice.id,{'state':'cancel'}) here # If we want to delete ==> obj_inv.unlink(cr,uid,list_invoice_ids) after new invoice creation. line_obj.write(id_note, {'name': customer_ref}) id_note1 = line_obj.create({ 'name': notes, 'state': 'text', 'sequence': count }) # a new line of type 'note' with all the old invoice note count = count + 1 list_inv_lines.append(id_note1) id_linee = line_obj.create({ 'state': 'line', 'sequence': count }) #a new line of type 'line' count = count + 1 list_inv_lines.append(id_linee) id_stotal = line_obj.create({ 'name': 'Subtotal', 'state': 'subtotal', 'sequence': count }) #a new line of type 'subtotal' count = count + 1 list_inv_lines.append(id_stotal) #end-marked inv = { 'name': 'Grouped Invoice - ' + partner.name, 'origin': 'Grouped Invoice', 'type': 'out_invoice', 'reference': False, 'account_id': invoice.account_id.id, 'partner_id': invoice.partner_id.id, 'address_invoice_id': invoice.address_invoice_id.id, 'address_contact_id': invoice.address_contact_id.id, 'invoice_line': [(6, 0, list_inv_lines)], 'currency_id': invoice.currency_id.id, # 1 'comment': "", 'payment_term': invoice.payment_term.id, 'date_invoice': date_inv or today_date, 'period_id': force_period or False } inv_id = obj_inv.create(inv) for item in self.invoice_info: pool_obj.get(item['model']).write([item['id']], {'invoice_id': inv_id}) disp_msg += '\n' + partner.name + ': ' + str( len(data_inv)) + ' Invoice(s) Grouped.' list_invoice.append(inv_id) obj_inv.unlink(list_invoice_ids) self.invoice_ids = list_invoice self.message = disp_msg return data['form']
def _group_invoice(self, data): date_inv = self.date_invoice force_period = self.period_id today_date = time.strftime('%Y-%m-%d') obj_inv = self.env['account.invoice'] dict_info=[] models=['cci_missions.certificate','cci_missions.legalization','cci_missions.embassy_folder','cci_missions.ata_carnet'] if self.registration: models.append('event.registration') for model in models: if model=='cci_missions.embassy_folder' or model=='event.registration': model_ids=self.env[model].search([('state','=','open')]) else: model_ids=self.env[model].search([('state','=','draft')]) if model_ids: read_ids=self.env[model].read(model_ids,['partner_id','order_partner_id','date','creation_date','partner_invoice_id']) for element in read_ids: part_info={} if ('partner_id' in element) and element['partner_id']: part_info['partner_id']=element['partner_id'][0] part_info['id']=element['id'] part_info['model']=model if ('order_partner_id' in element) and element['order_partner_id']: part_info['partner_id']=element['order_partner_id'][0] part_info['id']=element['id'] part_info['model']=model if ('partner_invoice_id' in element) and element['partner_invoice_id']: part_info['partner_id']=element['partner_invoice_id'][0] part_info['id']=element['id'] part_info['model']=model if 'date' in element: part_info['date']=element['date'] if 'creation_date' in element: part_info['date']=element['creation_date'] if part_info: dict_info.append(part_info) if not dict_info: self.invoice_ids=[] if self.registration: self.message ="No invoices grouped because no invoices for ATA Carnet, Legalizations, Certifications and (Embassy Folders and Registrations) are in 'Draft' state." else: self.message="No invoices grouped because no invoices for ATA Carnet, Legalizations, Certifications and Embassy Folders are in 'Draft' state." return self.message partner_ids = list(set([x['partner_id'] for x in dict_info])) partner_ids.sort() disp_msg='' list_invoice=[] for partner_id in partner_ids: partner=self.env['res.partner'].browse(partner_id) final_info={} list_info=[] list_invoice_ids=[] self.invoice_info=[] for element in dict_info: final_info={} if element['partner_id']==partner_id: data={'model':element['model'],'form':{},'id':element['id'],'ids':[element['id']],'report_type': 'pdf'} final_info['ids']=[] final_info['date']=element['date'][0:10] if element['model']=='cci_missions.ata_carnet': result=create_invoice_carnet._createInvoices(data) if result['inv_rejected']>0 and result['inv_rej_reason']: disp_msg +='\nFor Partner '+ partner.name +' On ATA Carnet with ' + result['inv_rej_reason'] continue if result['invoice_ids']: list_invoice_ids.append(result['invoice_ids'][0]) final_info['ids'].append(result['invoice_ids'][0]) list_info.append(final_info) final_info={} final_info['id']=element['id'] final_info['model']=element['model'] self.invoice_info.append(final_info) if element['model']=='cci_missions.embassy_folder': result=create_invoice_embassy._createInvoices(data) if result['inv_rejected']>0 and result['inv_rej_reason']: disp_msg +='\nFor Partner '+ partner.name +' On Embassy Folder with ' + result['inv_rej_reason'] continue if result['invoice_ids']: list_invoice_ids.append(result['invoice_ids'][0]) final_info['ids'].append(result['invoice_ids'][0]) list_info.append(final_info) final_info={} final_info['id']=element['id'] final_info['model']=element['model'] self.invoice_info.append(final_info) if element['model'] in ('cci_missions.certificate','cci_missions.legalization'): result=create_invoice._createInvoices(data) if result['inv_rejected']>0 and result['inv_rej_reason']: disp_msg +='\nFor Partner '+ partner.name +' On Certificate or Legalization with ' + result['inv_rej_reason'] continue if result['invoice_ids']: list_invoice_ids.append(result['invoice_ids'][0]) final_info['ids'].append(result['invoice_ids'][0]) list_info.append(final_info) final_info={} final_info['id']=element['id'] final_info['model']=element['model'] self.invoice_info.append(final_info) if element['model']=='event.registration': result=make_invoice._makeInvoices(data) if result['inv_rejected']>0 and result['inv_rej_reason']: disp_msg +='\nFor Partner '+ partner.name +' On Event Registration ' + result['inv_rej_reason'] continue if result['invoice_ids']: list_invoice_ids.append(result['invoice_ids'][0]) final_info['ids'].append(result['invoice_ids'][0]) list_info.append(final_info) final_info={} final_info['id']=element['id'] final_info['model']=element['model'] self.invoice_info.append(final_info) done_date=[] date_id_dict={} done_date=list(set([x['date'] for x in list_info])) done_date.sort() final_list=[] for date in done_date: date_id_dict={} date_id_dict['date']=date date_id_dict['ids']=[] for item in list_info: if date==item['date']: date_id_dict['ids'] +=item['ids'] final_list.append(date_id_dict) count=0 list_inv_lines=[] #marked if not final_list: continue for record in final_list: customer_ref = record['date'] line_obj = self.env['account.invoice.line'] id_note=line_obj.create({'name':customer_ref,'state':'title','sequence':count}) count=count+1 list_inv_lines.append(id_note) data_inv=obj_inv.browse(record['ids']) notes = '' for invoice in data_inv: if invoice.reference: customer_ref = customer_ref +' ' + invoice.reference if invoice.comment: notes = (notes + ' ' + invoice.comment) for line in invoice.invoice_line: if invoice.name: name = invoice.name +' '+ line.name else: name = line.name #pool_obj.get('account.invoice.line').write(cr,uid,line.id,{'name':name,'sequence':count}) # inv_line = line_obj.create(cr, uid, {'name': name,'account_id':line.account_id.id,'price_unit': line.price_unit,'quantity': line.quantity,'discount': False,'uos_id': line.uos_id.id,'product_id':line.product_id.id,'invoice_line_tax_id': [(6,0,line.invoice_line_tax_id)],'note':line.note,'sequence' : count}) inv_line = line_obj.create({'name': name,'account_id':line.account_id.id,'price_unit': line.price_unit,'quantity': line.quantity,'discount': False,'uos_id': line.uos_id.id,'product_id':line.product_id.id,'invoice_line_tax_id': [(6,0,line.invoice_line_tax_id)],'note':line.note,'sequence' : count,'cci_special_reference': line.cci_special_reference}) count=count+1 list_inv_lines.append(inv_line) # If we want to cancel ==> obj_inv.write(cr,uid,invoice.id,{'state':'cancel'}) here # If we want to delete ==> obj_inv.unlink(cr,uid,list_invoice_ids) after new invoice creation. line_obj.write(id_note,{'name':customer_ref}) id_note1=line_obj.create({'name':notes,'state':'text','sequence':count})# a new line of type 'note' with all the old invoice note count=count+1 list_inv_lines.append(id_note1) id_linee=line_obj.create({'state':'line','sequence':count}) #a new line of type 'line' count=count+1 list_inv_lines.append(id_linee) id_stotal=line_obj.create({'name':'Subtotal','state':'subtotal','sequence':count})#a new line of type 'subtotal' count=count+1 list_inv_lines.append(id_stotal) #end-marked inv = { 'name': 'Grouped Invoice - ' + partner.name, 'origin': 'Grouped Invoice', 'type': 'out_invoice', 'reference': False, 'account_id': invoice.account_id.id, 'partner_id': invoice.partner_id.id, 'address_invoice_id':invoice.address_invoice_id.id, 'address_contact_id':invoice.address_contact_id.id, 'invoice_line': [(6,0,list_inv_lines)], 'currency_id' :invoice.currency_id.id,# 1 'comment': "", 'payment_term':invoice.payment_term.id, 'date_invoice':date_inv or today_date, 'period_id':force_period or False } inv_id = obj_inv.create(inv) for item in self.invoice_info: pool_obj.get(item['model']).write([item['id']], {'invoice_id' : inv_id}) disp_msg +='\n'+ partner.name + ': '+ str(len(data_inv)) +' Invoice(s) Grouped.' list_invoice.append(inv_id) obj_inv.unlink(list_invoice_ids) self.invoice_ids=list_invoice self.message=disp_msg return data['form']
def button_update_self(self, cr, uid, ids, context=None): registry = openerp.registry(cr.dbname) def process_sql_file(cr, fp): queries = fp.read().split(';') for query in queries: new_query = ' '.join(query.split()) if new_query: cr.execute(new_query) def _get_files_of_kind(kind): if kind == 'demo': kind = ['demo_xml', 'demo'] elif kind == 'data': kind = ['init_xml', 'update_xml', 'data'] if isinstance(kind, str): kind = [kind] files = [] for k in kind: for f in package[k]: files.append(f) if k.endswith('_xml') and not (k == 'init_xml' and not f.endswith('.xml')): correct_key = 'demo' if k.count('demo') else 'data' _logger.warning( "module %s: key '%s' is deprecated in favor of '%s' for file '%s'.", module['name'], k, correct_key, f) return files 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, registry._assertion_report) finally: if kind in ('demo', 'test'): threading.currentThread().testing = False mode = 'update' for module in self.read(cr, uid, ids, [ 'name', ], context=context): idref = {} models = [] for cls in openerp.models.MetaModel.module_to_models.get( module['name'], []): model_name = cls._name if model_name == None: if cls._inherit != None: if isinstance(cls._inherit, (set, list, tuple)): model_name = cls._inherit[0] else: model_name = cls._inherit else: continue if model_name != None and model_name not in models: models.append(model_name) models = [self.pool.get(m) for m in models] init_module_models(cr, module['name'], models) registry.setup_models(cr, partial=True) package = openerp.modules.module.load_information_from_description_file( module['name']) modobj = self.pool.get('ir.module.module') modobj.check(cr, SUPERUSER_ID, [module['id']]) _load_data(cr, module['name'], idref, mode, kind='data') registry['ir.ui.view']._validate_module_views( cr, SUPERUSER_ID, module['name']) modobj.update_translations(cr, SUPERUSER_ID, [module['id']], None, {'overwrite': True}) cr.commit() return True
def button_update_self(self, cr, uid, ids, context=None): registry = openerp.registry(cr.dbname) def process_sql_file(cr, fp): queries = fp.read().split(';') for query in queries: new_query = ' '.join(query.split()) if new_query: cr.execute(new_query) def _get_files_of_kind(kind): if kind == 'demo': kind = ['demo_xml', 'demo'] elif kind == 'data': kind = ['init_xml', 'update_xml', 'data'] if isinstance(kind, str): kind = [kind] files = [] for k in kind: for f in package[k]: files.append(f) if k.endswith('_xml') and not (k == 'init_xml' and not f.endswith('.xml')): correct_key = 'demo' if k.count('demo') else 'data' _logger.warning( "module %s: key '%s' is deprecated in favor of '%s' for file '%s'.", module['name'], k, correct_key, f ) return files 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, registry._assertion_report) finally: if kind in ('demo', 'test'): threading.currentThread().testing = False mode = 'update' for module in self.read(cr, uid, ids, ['name',], context=context): idref = {} models = [] for cls in openerp.models.MetaModel.module_to_models.get(module['name'], []): model_name = cls._name if model_name == None: if cls._inherit != None: if isinstance(cls._inherit, (set, list, tuple)): model_name = cls._inherit[0] else: model_name = cls._inherit else: continue if model_name != None and model_name not in models: models.append(model_name) models = [self.pool.get(m) for m in models] init_module_models(cr, module['name'], models) registry.setup_models(cr, partial=True) package = openerp.modules.module.load_information_from_description_file(module['name']) modobj = self.pool.get('ir.module.module') modobj.check(cr, SUPERUSER_ID, [module['id']]) _load_data(cr, module['name'], idref, mode, kind='data') registry['ir.ui.view']._validate_module_views(cr, SUPERUSER_ID, module['name']) modobj.update_translations(cr, SUPERUSER_ID, [module['id']], None, {'overwrite': True}) cr.commit() return True