def fields_get(self, fields=None, attributes=None): fields = super(SaleOrder, self).fields_get(fields, attributes=attributes) try: if 'state' in fields and 'selection' in fields['state']: states = fields['state']['selection'] draft_index = None for pos, state in enumerate(states): if len(state) == 2 and state[0] == 'draft': draft_index = pos break if draft_index is not None: web_confirmed_tuple = None for state in states: if len(state) == 2 and state[0] == 'web_confirmed': web_confirmed_tuple = state if web_confirmed_tuple is not None: states.remove(web_confirmed_tuple) states.insert(draft_index + 1, web_confirmed_tuple) except: pass try: # copy readonly, invisible, required attrs from draft state for field_name, field_val in fields.iteritems(): if 'states' in field_val: for state in field_val['states'].keys(): if state == 'draft': field_val['states']['web_confirmed'] = field_val[ 'states'][state][:] except: pass return fields
def create_partner(self, message_id, relation, partner_id, message_name_from, message_email_from): model = self.env[relation] message = self.env['mail.message'].browse(message_id) if not partner_id and message_name_from: partner_id = self.env['res.partner'].with_context({ 'update_message_author': True }).create({ 'name': message_name_from, 'email': message_email_from }).id context = {'partner_id': partner_id} if model._rec_name: context.update({'default_%s' % model._rec_name: message.subject}) fields = model.fields_get() contact_field = False for n, f in fields.iteritems(): if f['type'] == 'many2one' and f['relation'] == 'res.partner': contact_field = n break if contact_field: context.update({'default_%s' % contact_field: partner_id}) return context
def run(self, magento_id, binding_id, mapper_class=None): self.magento_id = magento_id storeviews = self.env['magento.storeview'].search( [('backend_id', '=', self.backend_record.id)] ) default_lang = self.backend_record.default_lang_id lang_storeviews = [sv for sv in storeviews if sv.lang_id and sv.lang_id != default_lang] if not lang_storeviews: return # find the translatable fields of the model fields = self.model.fields_get() translatable_fields = [field for field, attrs in fields.iteritems() if attrs.get('translate')] if mapper_class is None: mapper = self.mapper else: mapper = self.unit_for(mapper_class) binding = self.model.browse(binding_id) for storeview in lang_storeviews: lang_record = self._get_magento_data(storeview.magento_id) map_record = mapper.map_record(lang_record) record = map_record.values() data = dict((field, value) for field, value in record.iteritems() if field in translatable_fields) binding.with_context(connector_no_export=True, lang=storeview.lang_id.code).write(data)
def run(self, shopware_id, binding_id, mapper_class=None): self.shopware_id = shopware_id shops = self.env['shopware.shop'].search([('backend_id', '=', self.backend_record.id)]) default_lang = self.backend_record.default_lang_id lang_shops = [ sv for sv in shops if sv.lang_id and sv.lang_id != default_lang ] if not lang_shops: return # find the translatable fields of the model fields = self.model.fields_get() translatable_fields = [ field for field, attrs in fields.iteritems() if attrs.get('translate') ] if mapper_class is None: mapper = self.mapper else: mapper = self.unit_for(mapper_class) binding = self.model.browse(binding_id) for shop in lang_shops: lang_record = self._get_shopware_data(shop.shopware_id) map_record = mapper.map_record(lang_record) record = map_record.values() data = dict((field, value) for field, value in record.iteritems() if field in translatable_fields) binding.with_context(connector_no_export=True, lang=shop.lang_id.code).write(data)
def _form_update_fields_attributes(self, fields): """Override to add widgets.""" super(CMSForm, self)._form_update_fields_attributes(fields) for fname, field in fields.iteritems(): field['widget'] = {} for key in (field['type'], fname): if key in self._form_widgets: field['widget'] = self._form_widgets[key]
def on_change_partner(self): domain = {'res_id': [('id', '!=', self.message_id.res_id)]} if self.model and self.filter_by_partner and self.partner_id: fields = self.env[self.model].fields_get(False) contact_field = False for n, f in fields.iteritems(): if f['type'] == 'many2one' and f['relation'] == 'res.partner': contact_field = n break if contact_field: domain['res_id'].append((contact_field, '=', self.partner_id.id)) if self.model: res_id = self.env[self.model].search(domain['res_id'], order='id desc', limit=1) self.res_id = res_id and res_id[0].id else: self.res_id = None return {'domain': domain}
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False): """ Generate view dynamically using attributes stored on the product.template""" field_prefix = self._prefixes.get('field_prefix') custom_field_prefix = self._prefixes.get('custom_field_prefix') if view_type == 'form' and not view_id: view_ext_id = 'product_configurator.product_configurator_form' view_id = self.env.ref(view_ext_id).id res = super(ProductConfigurator, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu) wizard_id = self.env.context.get('wizard_id') if res.get('type') != 'form' or not wizard_id: return res wiz = self.browse(wizard_id) # Get updated fields including the dynamic ones fields = self.fields_get() dynamic_fields = { k: v for k, v in fields.iteritems() if k.startswith(field_prefix) or k.startswith(custom_field_prefix) } res['fields'].update(dynamic_fields) mod_view = self.add_dynamic_fields(res, dynamic_fields, wiz) # Update result dict from super with modified view res.update({'arch': etree.tostring(mod_view)}) return res