odoo, how to create a correct xpath expression - xpath

I'm doing the odoo getting started tutorial. And I need to create a xpath expression. I need to inherit the base.view_users_form view and add page to display a list of properties.
This page should go after the preferences page, so I created this expresssion.
<record id="inherited_res_user_view_form" model="ir.ui.view">
<field name="name">res.users.extended.form</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<xpath expr="//page[#name='preferences']" position="after">
<field name="property_ids"/>
</xpath>
</field>
</record>
and the error:
Element '<xpath expr="//page[#name='preferences']">' cannot be located in parent view
So I know my expression is incorrect, but I dont know what it should be.
I also don't know how I can find out. I read a bit about how it works, and I think I understand sufficiently. But I think I need to see the source code of base.view_users_form to find how they name their elements so that I can properly use xpath. But I can't find the source code also.

If you look carefully in the view_users_form code, you will see that the page is named references and not preferences.
Try the following XPath:
<xpath expr="//page[#name='references']" position="after">
<page string="Properties" name="property_ids">
<field name="property_ids"/>
</page>
</xpath>

Related

Hide Create and Export All button but show Import button in Odoo13 tree view

By default Tree view in Odoo has Create, Import and Export All button showing on top.
How do I hide them based on User groups?
Also I should be able to hide Create button but without hiding Import button.
You can hide the buttons like so:
<tree create="false" edit="false" delete="false" duplicate="false">
To do this per user group, create an inherited view and specify the group in the inherit view like so:
<record model="ir.ui.view" id="view_model_name_tree_inherit">
<field name="name">model.name.tree.inherit</field>
<field name="model">model.name</field>
<field name="type">tree</field>
<field name="inherit_id" ref="module_name.tree_name" />
<field name="groups_id" eval="[(4, ref('module_name.group_name'))]"/>
<field name="arch" type="xml">
<tree position="attributes">
<attribute name="create">false</attribute>
<attribute name="edit">false</attribute>
<attribute name="delete">false</attribute>
<attribute name="duplicate">false</attribute>
</tree>
</field>
</record>
Unfortunately the Create and Import buttons are both linked to the create attribute.
To disable the "Export" button, you will need to install a module as this is not supported on Odoo default. See this module
You can check following link for solution of your problem. web_disable_export_group
If you want to hide Export All button on the top-up header and next to the create method for some views only then follow below step.
<tree string="Account" export_xlsx="false" create="false">
But if you're using the web_disable_export_group and Did you uncheck the Export Button security group then for that user they are not able to see that Export All button for any views.Reference

why xml files are not updated after modification in odoo11

This is the actual code. Here i am adding filter for domain_force
<record id="sale_order_personal_rule" model="ir.rule">
<field name="name">Personal Orders</field>
<field ref="model_sale_order" name="model_id"/>
<field name="domain_force"></field>
<field name="groups" eval="[(4, ref('sales_team.group_sale_salesman'))]"/>
</record>
I'm trying to update xml file after adding filter for view as fallows.
<record id="sale_order_personal_rule" model="ir.rule">
<field name="name">Personal Orders</field>
<field ref="model_sale_order" name="model_id"/>
<field name="domain_force">['|',('user_id','=',user.id),('user_id','=',False)]</field>
<field name="groups" eval="[(4, ref('sales_team.group_sale_salesman'))]"/>
</record>
I tried updating apps, upgrading module, and restarting server, But i didn't get solution to update view. Why its happening.
There is only one reason xml is not updated is that you put all this code in data noupdate=1.In no update=True it didnot update our data in an external id if that id is not present in our system it will create it if id is present it didnot update its attributes.

Problem with adding a new field to the res partner model

I try to add a radio button to my vendor view, after installing my module there are no changes in my view.
I wish you can help me
1/ my file.py
# -*- coding: utf-8 -*-
from odoo import fields, models, api
class Vendor(models.Model):
_inherit = 'res.partner'
type = fields.selection([('internal', 'Internal'), ('external', 'External')], 'Type')
2/ My Xml file:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_order_form_inherit" model="ir.ui.view">
<field name="name">sale.order.form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<data>
<field name="payment_term_id" position="after">
<field name="type" widget="radio"/>
</field>
</data>
</field>
</record>
</odoo>
Here is two possibility:
If you want to see field on res.partner form view, then change field name and upgrade res.partner form view.
type field is already introduce by Odoo base core module.
In these case, you can change your field from type to partner_type. And same with xml side.
If you want to see field on sale.order form view, then inherit sale.order object and upgrade it.
Afterwards, Upgrade your module and check output.
1/ remove the file of res.partner object from init file
2/ uninstall your module
3/ add the file of res.partner object to init file again
4/ restart the server and reinstall your module

odoo 9 - how to restrict one2many to not show a form view

I have a many2many, which is using the one2many widget.
I set mode="tree" and am using editable="bottom".
This works as expected in edit mode, however when in view mode - if the user clicks on a line it opens the line in a form view - how do i prevent this?
I either want nothing to happen, or to allow user to click on one of the _id items on the line.
Either way, clicking on the line should not open the record in a form view.
<field name="test_ids" widget="one2many" nolabel="1" mode="tree">
<tree editable="bottom">
<field name="partner_id"/>
<field name="another_field"/>
</tree>
</field>

Joomla component not appearing in the menu item types

I just followed the joomla tutorials on how to create the "perfect" MVC joomla component. However, my problem is that I don't know yet how to assign it to a menu. I thought that my component would then just show up when I select a "menu item type", but my component is not on this list. I've made some research on Google, but I cannot find the answer... Do I have to create a metadata.xml file or something similar ?
Thanks in advance for your answers !!
To create "views" for your component, you have to create some xml files.
Inside the templates folder in the frontend part of your component (usually something like /components/com_yourcomponent/views/someview/tmpl), if you had a template named default.php and form.php, you can create a default.xml file and a form.xml file to make these menu items available from the administrator.
You can take a look at other components to see the structure of these xml files, but what you should put inside is:
1) A name and a description for four view
2) The params the user will be able to change from the administrator (it works like module/plugin params)
3) You can also set "hidden" request variables for that menu item. It means that those vars will be added to the request in that particular menu item, but the user won't be able to change its value.
Here's a complete example for a component (Joomla 1.7):
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="COM_AGMTAGS_TAG_VIEW_DEFAULT_TITLE">
<message>COM_AGMTAGS_TAG_VIEW_DEFAULT_DESC</message>
</layout>
<fields name="request" addfieldpath="/administrator/components/com_agmtags/models/fields">
<fieldset name="request">
<field name="tag_id" type="agmtag"
label="COM_AGMTAGS_TAG_FIELD_NAME_LABEL"
description="COM_AGMTAGS_TAG_FIELD_NAME_DESC"
/>
</fieldset>
</fields>
<fields name="params">
<fieldset name="basic" label="COM_AGMTAGS_TAG_OPTIONS">
<field name="layout_type" type="hidden" default="blog" />
<field name="show_tag_name" type="list"
label="COM_AGMTAGS_SHOW_TAG_NAME"
description="COM_AGMTAGS_SHOW_TAG_NAME_DESC"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_tag_description" type="list"
description="COM_AGMTAGS_SHOW_TAG_DESCRIPTION_DESC"
label="COM_AGMTAGS_SHOW_TAG_DESCRIPTION_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="items_per_page" type="text" default="" />
<field name="container_class" type="text" default="agmtags-list" />
</fieldset>
</fields>
</metadata>
I hope it helped!
If you simply want to add the view link to the list create a xml file called default.xml inside the com_yourcomponent/views/yourviewname/tmpl/
The xml code below takes two language strings used to display your menu item link in the list
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="COM_YOURCOMPONENT_FRONPAGE_TITLE">
<message>COM_YOURCOMPONENT_FRONPAGE_MSG</message>
</layout>
</metadata>
save the file and the link should appear in the list of menu items
Apparently, you also need the administration menu tags in your installation XML file.
http://forum.joomla.org/viewtopic.php?p=706714
This worked for me
<administration>
<menu>COM_COMPONET</menu>
<submenu>
etc...
</submenu>
Think this is what Panayiotis was trying to say
Additionally there is also another catch.
In the installation XML file of the component,
in the section, the tags must
be present, even if you do not need the menu.
If these are missing, then you'll never be given
the option to add this component to a menu item,
because the type wont be there :-)
In additional, your alternative view file names MUST NOT be written with underscores.
table_catalog.xml
table_catalog.php
table_catalog_item.php
didn't work - there wasn't new option in "menu item type" list. But
tablecatalog.xml
tablecatalog.php
tablecatalog_item.php
file names work perfectly. I've lost an hour revealing a problem.

Resources