int_tow
int_tow

Reputation: 73

How can i add the same attribute to all matched items of an odoo xpath query (not only to the first)?

I want add the same attribute to all matched items of an odoo xpath query inside a inherited qweb report template.

My code only change the colour of "1. aaa" to red. (the first matched item)

I can use "/*[@class='test_class'][2]" for the second item, but this is not a solution there are to many items with "test_class" inside the inherited report.

<template id="test_report_document_raw">

 <h2 class="test_class">1. aaa</h2>

 <h2 class="test_class">2. bbb</h2>

 <h2 class="test_class">3. ccc</h2>

 ...

</template>

<template id="test_report_document" inherit_id="test.test_report_document_raw" primary="True">

 <xpath expr="//*[@class='test_class']" position="attributes">

      <attribute name="style">color: red;</attribute>

   </xpath>

</template

Upvotes: 0

Views: 987

Answers (2)

OmaL
OmaL

Reputation: 5044

As you said you can use the xpath expressions "/*[@class='test_class'][2]","/*[@class='test_class'][3]",..,"/*[@class='test_class'][2]" and so on and update the style.

Other solution is to update the css class with your new style. So all where ever you are using this class 'test_class' there all this change will affect.

Upvotes: 0

Alessandro Ruffolo
Alessandro Ruffolo

Reputation: 1575

AFAIK it is an Openerp bug which doesn't consider multiple xpath corrispondances.

In alternative you could override fields_view_get and use xpath through lxml library.

Upvotes: 2

Related Questions