senarijit1618
senarijit1618

Reputation: 417

Odoo Add Button that should redirect to my Module View

I am using a module similar to this one: HR Org Chart

I want to open the view by clicking on a button in Profile Section.

I referred here: Reference

I am getting this error:

Odoo Server Error

Traceback (most recent call last):
  File "/home/arijit/Project/odoo/odoo/src/odoo/tools/convert.py", line 678, in _tag_root
    f(rec)
  File "/home/arijit/Project/odoo/odoo/src/odoo/tools/convert.py", line 493, in _tag_record
    model = env[rec_model]
  File "/home/arijit/Project/odoo/odoo/src/odoo/api.py", line 533, in __getitem__
    return self.registry[model_name]._browse(self, (), ())
  File "/home/arijit/Project/odoo/odoo/src/odoo/modules/registry.py", line 177, in __getitem__
    return self.models[model_name]
KeyError: 'ir.ui.client'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/arijit/Project/odoo/odoo/src/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
    result = request.dispatch()
  File "/home/arijit/Project/odoo/odoo/src/odoo/http.py", line 683, in dispatch
    result = self._call_function(**self.params)
  File "/home/arijit/Project/odoo/odoo/src/odoo/http.py", line 359, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/home/arijit/Project/odoo/odoo/src/odoo/service/model.py", line 94, in wrapper
    return f(dbname, *args, **kwargs)
  File "/home/arijit/Project/odoo/odoo/src/odoo/http.py", line 347, in checked_call
    result = self.endpoint(*a, **kw)
  File "/home/arijit/Project/odoo/odoo/src/odoo/http.py", line 912, in __call__
    return self.method(*args, **kw)
  File "/home/arijit/Project/odoo/odoo/src/odoo/http.py", line 531, in response_wrap
    response = f(*args, **kw)
  File "/home/arijit/Project/odoo/odoo/src/addons/web/controllers/main.py", line 1367, in call_button
    action = self._call_kw(model, method, args, kwargs)
  File "/home/arijit/Project/odoo/odoo/src/addons/web/controllers/main.py", line 1355, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/home/arijit/Project/odoo/odoo/src/odoo/api.py", line 456, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "/home/arijit/Project/odoo/odoo/src/odoo/api.py", line 443, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "<decorator-gen-77>", line 2, in button_immediate_upgrade
  File "/home/arijit/Project/odoo/odoo/src/odoo/addons/base/models/ir_module.py", line 73, in check_and_log
    return method(self, *args, **kwargs)
  File "/home/arijit/Project/odoo/odoo/src/odoo/addons/base/models/ir_module.py", line 656, in button_immediate_upgrade
    return self._button_immediate_function(type(self).button_upgrade)
  File "/home/arijit/Project/odoo/odoo/src/odoo/addons/base/models/ir_module.py", line 595, in _button_immediate_function
    modules.registry.Registry.new(self._cr.dbname, update_module=True)
  File "/home/arijit/Project/odoo/odoo/src/odoo/modules/registry.py", line 89, in new
    odoo.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/home/arijit/Project/odoo/odoo/src/odoo/modules/loading.py", line 465, in load_modules
    processed_modules += load_marked_modules(cr, graph,
  File "/home/arijit/Project/odoo/odoo/src/odoo/modules/loading.py", line 362, in load_marked_modules
    loaded, processed = load_module_graph(
  File "/home/arijit/Project/odoo/odoo/src/odoo/modules/loading.py", line 221, in load_module_graph
    load_data(cr, idref, mode, kind='data', package=package)
  File "/home/arijit/Project/odoo/odoo/src/odoo/modules/loading.py", line 69, in load_data
    tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
  File "/home/arijit/Project/odoo/odoo/src/odoo/tools/convert.py", line 734, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate)
  File "/home/arijit/Project/odoo/odoo/src/odoo/tools/convert.py", line 800, in convert_xml_import
    obj.parse(doc.getroot())
  File "/home/arijit/Project/odoo/odoo/src/odoo/tools/convert.py", line 720, in parse
    self._tag_root(de)
  File "/home/arijit/Project/odoo/odoo/src/odoo/tools/convert.py", line 682, in _tag_root
    raise ParseError('while parsing %s:%s, near\n%s' % (
Exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/arijit/Project/odoo/odoo/src/odoo/http.py", line 639, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/home/arijit/Project/odoo/odoo/src/odoo/http.py", line 315, in _handle_exception
    raise exception.with_traceback(None) from new_cause
odoo.tools.convert.ParseError: while parsing /home/arijit/Project/odoo/odoo/src/addons/hr_organizational_chart/views/show_employee_chart.xml:21, near
<record id="action_organizational_chart" model="ir.ui.client">
    
        <field name="inherit_id" ref="hr.view_employee_form"/>
        <field name="arch" type="xml">
            <div id="o_work_employee_main" position="after">
                <div id="o_employee_right">
                    <button name="%(hr_organization_chart.action_organizational_chart)d" type="action" string="Submit"/>
                </div>
            </div>
        </field>
    </record>

I want to add a button in the Employee profile section which should open up the module chart view.

Trying something like this to add the button in my profile section:

<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
    <div id="o_work_employee_main" position="after">
        <div id="o_employee_right">
            <button name="%(hr_organization_chart.action_organizational_chart)d" type="action" string="Submit" />
        </div>
    </div>
</field>

Upvotes: 0

Views: 226

Answers (1)

Randy Tran
Randy Tran

Reputation: 146

The action_organizational_chart you want to reference from button is of type ir.ui.client which is not an action, its a view. You should first create an ir.actions.act_window action that reference to your view, and then reference your button to that action instead of your view.

Upvotes: 1

Related Questions