This question has been flagged
2 Replies
4831 Views

Is there a way to toggle a <field> visible/invisible, e.g. by using a marker filter?

The goal is to be able to turn on/off m2o field's auto-completion/auto-suggestion on demand, ideally using another dummy filter for that.

Avatar
Discard
Best Answer

Why don't you define domain in the field to filter record in auto-completion.
 

Avatar
Discard
Author Best Answer

Hey Ben,
Many thanks for the hint!

Although using domain to completely disable search field was not quite an intuitive solution (more of a hack), it worked like a charm, indeed! While neither <code>invisible</code>, nor <code>attrs</code> attributes could fetch the changed context, <code>domain</code> attribute was indeed the only one that could access the context.

Here is the complete solution, in case somebody will need it in the future:

XML, search view:
<pre><code>
  <filter string="Disable Autocomplete" name="perm_speedup" context="{'disable_autocomplete': '='}"/>
  <field name="product_id" position="attributes">
      <attribute name="domain">[('id', context.get('disable_autocomplete', '!='), 0)]</attribute>
  </field>
  <field name="product_code" string="Product Exact" filter_domain="[('product_code', '=', self)]"/>
  <field name="product_code"/>
</code></pre>

Python:
<pre><code>
  'product_code': fields.related('product_id', 'default_code', string='Product', type='char', readonly=True),
</code></pre>

Description:
'Disable Autocomplete' filter is turned on by default (in act_window, context={'search_default_perm_speedup':1}).
This allows to quickly type in the desired product code, without waiting for the suggestions to load.
'Product Exact' is used with copy-paste codes or with barcode scanner.
'Product' (default) is used to search for partial codes.
Of course, 'Disable Autocomplete' marker-filter can be turned off when needed.

Avatar
Discard