Skip to Content
Menu
This question has been flagged
2 Replies
6239 Rodiniai

[[ repeatIn([line for line in o.order_line if (line.is_option)],'line') ]]

I want to loop on all the lines of an order line wich are options lines (i put a boolean to handle that). The problem is when i don't have option lines in my sale order, i have the error : (<type 'exceptions.assertionerror'="">, AssertionError(), <traceback object="" at="" 0x09064508="">)

Any ideas to handle that problem ? Thanks

Portretas
Atmesti
Best Answer

I don't have any idea how to skip loop iteration when given condition satisfy. But there is an alternate, you can remove content when your condition satisfy.

For example I want to remove row from table when line.is_option is True:

[[ repeatIn([line for line in o.order_line 'line') ]]
<tr><td>
    <para style="terp_default_9">Desc. : [[ (line.name and not line.is_option) or removeParentNode('tr') ]]</para>
</td></tr>

Hope this will help you.

Portretas
Atmesti
Best Answer

You can use python boolean operator to check if a list is full or empty:

[[ repeatIn([line for line in (o.order_line or []) if (line.is_option)],'line') ]]

The code

(o.order_line or [])

return o.order_line if this one is full or an empty list that will not be looped.

Portretas
Atmesti
Related Posts Replies Rodiniai Veikla
1
kov. 15
4992
3
kov. 15
5398
2
kov. 15
5966
1
saus. 24
4154
2
kov. 22
20257