This question has been flagged
2 Replies
4779 Views

Hi,

I want to list categories at the shop page but I am having this error while i am trying to display page.

Traceback (most recent call last):
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\qweb.py", line 346, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "<template>", line 1, in template_website_sale_search_44
TypeError: 'NoneType' object is not callable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\ir_http.py", line 203, in _dispatch
    result = request.dispatch()
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 835, in dispatch
    r = self._call_function(**self.params)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 346, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\service\model.py", line 97, in wrapper
    return f(dbname, *args, **kwargs)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 342, in checked_call
    result.flatten()
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 1270, in flatten
    self.response.append(self.render())
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 1263, in render
    return env["ir.ui.view"].render_template(self.template, self.qcontext)
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\ir_ui_view.py", line 1284, in render_template
    return self.browse(self.get_view_id(template)).render(values, engine)
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\website\models\ir_ui_view.py", line 319, in render
    return super(View, self).render(values, engine=engine, minimal_qcontext=minimal_qcontext)
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\web_editor\models\ir_ui_view.py", line 27, in render
    return super(IrUiView, self).render(values=values, engine=engine, minimal_qcontext=minimal_qcontext)
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\ir_ui_view.py", line 1293, in render
    return self.env[engine].render(self.id, qcontext)
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\ir_qweb.py", line 59, in render
    result = super(IrQWeb, self).render(id_or_xml_id, values=values, **context)
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\qweb.py", line 274, in render
    self.compile(template, options)(self, body.append, values or {})
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\qweb.py", line 348, in _compiled_fn
    raise e
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\qweb.py", line 346, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "<template>", line 1, in template_1932_39
  File "<template>", line 2, in body_call_content_38
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\qweb.py", line 353, in _compiled_fn
    raise QWebException("Error to render compiling AST", e, path, node and etree.tostring(node[0], encoding='unicode'), name)
odoo.addons.base.models.qweb.QWebException: 'NoneType' object is not callable
Traceback (most recent call last):
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\qweb.py", line 346, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "<template>", line 1, in template_website_sale_search_44
TypeError: 'NoneType' object is not callable

Error to render compiling AST
TypeError: 'NoneType' object is not callable
Template: website_sale.search
Path: /templates/t/form
Node: <form t-att-action="keep('/shop'+ ('/category/'+slug(category)) if category else None, search=0)" method="get" t-att-class="_classes">
            <t t-if="attrib_values">
                <t t-foreach="attrib_values" t-as="a">
                    <input type="hidden" name="attrib" t-att-value="'%s-%s' % (a[0], a[1])" data-oe-model="ir.ui.view" data-oe-id="1877" data-oe-field="arch" data-oe-xpath="/t[1]/form[1]/t[1]/t[1]/input[1]"/>
                </t>
            </t>
            <t t-call="website.website_search_box"/>
        </form>

Here my controller

@http.route([
'''/shop''',
'''/shop/page/''',
'''/shop/category/''',
'''/shop/category//page/'''
], type='http', auth="public", website=True)
def custom_filter(self, **post):
categories = request.env['product.public.category']
vals = {
'categs': categories.search([]),
}
return request.render("custom_filtering.custom_filtering", vals)

How can I display categories at the shop page.?

Avatar
Discard
Author Best Answer

Can you explain a little bit detailed I'm new to Odoo so I can't say that I understand.

Avatar
Discard

The variables used in the template must be defined and passed from controller

Best Answer
You define rendered values as:

vals = {
'categs': categories.search([]),
}

but in template you use names:

category - ...+slug(category)...
attrib_values - ...t-foreach="attrib_values"...


Avatar
Discard