Beispiel #1
0
    def field_rountrip_result(self, field, value, expected):
        model = 'website.converter.test'
        Model = self.registry(model)
        id = Model.create(self.cr, self.uid, {field: value})
        [record] = Model.browse(self.cr, self.uid, [id])

        e = etree.Element('span')
        field_value = 'record.%s' % field
        e.set('t-field', field_value)

        rendered = self.registry('website.qweb').render_tag_field(
            e, {'field': field_value}, '',
            ir_qweb.QWebContext(self.cr,
                                self.uid, {
                                    'record': record,
                                },
                                context={'inherit_branding': True}))
        element = html.fromstring(rendered,
                                  parser=html.HTMLParser(encoding='utf-8'))

        converter = self.registry('website.qweb').get_converter_for(
            element.get('data-oe-type'))

        value_back = converter.from_html(self.cr, self.uid, model,
                                         Model._fields[field], element)

        if isinstance(expected, str):
            expected = expected.decode('utf-8')
        self.assertEqual(value_back, expected)
Beispiel #2
0
    def test_m2o(self):
        """ the M2O field conversion (from html) is markedly different from
        others as it directly writes into the m2o and returns nothing at all.
        """
        model = 'website.converter.test'
        field = 'many2one'

        Sub = self.registry('website.converter.test.sub')
        sub_id = Sub.create(self.cr, self.uid, {'name': "Foo"})
        sub2_id = Sub.create(self.cr, self.uid, {'name': "Bar"})

        Model = self.registry(model)
        id = Model.create(self.cr, self.uid, {field: sub_id})
        [record] = Model.browse(self.cr, self.uid, [id])

        e = etree.Element('span')
        field_value = 'record.%s' % field
        e.set('t-field', field_value)

        rendered = self.registry('website.qweb').render_tag_field(
            e, {'field': field_value}, '',
            ir_qweb.QWebContext(self.cr,
                                self.uid, {
                                    'record': record,
                                },
                                context={'inherit_branding': True}))

        element = html.fromstring(rendered,
                                  parser=html.HTMLParser(encoding='utf-8'))
        # emulate edition
        element.set('data-oe-many2one-id', str(sub2_id))
        element.text = "New content"

        converter = self.registry('website.qweb').get_converter_for(
            element.get('data-oe-type'))

        value_back = converter.from_html(self.cr, self.uid, model,
                                         Model._fields[field], element)

        self.assertIsNone(
            value_back,
            "the m2o converter should return None to avoid spurious"
            " or useless writes on the parent record")

        self.assertEqual(
            Sub.browse(self.cr, self.uid, sub_id).name, "Foo",
            "element edition can't change directly the m2o record")
        self.assertEqual(
            Model.browse(self.cr, self.uid, id).many2one.name, "Bar",
            "element edition should have been change the m2o id")
Beispiel #3
0
 def convert(self, obj, dest):
     converter = self.registry('ir.qweb.field.monetary')
     options = {'widget': 'monetary', 'display_currency': 'c2'}
     converted = converter.to_html(
         self.cr, self.uid, 'value', obj, options,
         doc.createElement('span'), {
             'field': 'obj.value',
             'field-options': json.dumps(options)
         }, '',
         ir_qweb.QWebContext(self.cr, self.uid, {
             'obj': obj,
             'c2': dest,
         }))
     return converted
 def context(self, values):
     return ir_qweb.QWebContext(self.cr, self.uid, values)
Beispiel #5
0
 def context(self, values):
     return ir_qweb.QWebContext(self.cr,
                                self.uid,
                                values,
                                context={'inherit_branding': True})