def run(self, external_id, binding, mapper=None): self.external_id = external_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 is None: mapper = self.mapper else: mapper = self.component_by_name(mapper) for storeview in lang_storeviews: lang_record = self._get_magento_data(storeview.external_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 fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False): """ Generate view dynamically using attributes stored on the product.template""" 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(self.field_prefix) or k.startswith(self.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