Beispiel #1
0
    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)
Beispiel #2
0
    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