Exemple #1
0
 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)
Exemple #4
0
    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)
Exemple #5
0
 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]
Exemple #6
0
 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