J'ai un bouton intelligent qui devrait ouvrir une vue spécifique avec un search_view spécifique. J'ai créé une action en xml pour le bouton intelligent avec view_id et search_view_id:

<button class="oe_stat_button" type="action" name="%(action_expert_positions)d" icon="fa-list-ol">
  <field string="Positions" name="positions_count" widget="statinfo"/>
</button>

<record id="action_expert_positions" model="ir.actions.act_window">
  <field name="name">Positions</field>
  <field name="res_model">expert.position</field>
  <field name="type">ir.actions.act_window</field>
  <field name="view_mode">tree</field>
  <field name="view_id" ref="project_expert_position_tree"/>
  <field name="domain">[("project_id", "=", active_id)]</field>
  <field name="search_view_id" ref="project_expert_position_tree_search"/>
  <field name="context">{'default_project_id': active_id, 'search_default_project_phase_closed': 1}</field>
</record>

Cela fonctionne très bien. Il montre la vue spécifique et également la vue de recherche avec un filtre spécifique.

Maintenant, le filtre (search_default _...) doit être activé dynamiquement en fonction d'un champ dans l'objet parent. Pour cela, j'ai changé le bouton intelligent et l'action xml en une fonction qui crée l'action afin que je puisse ajouter la dynamique plus tard:

<button class="oe_stat_button" type="object" name="get_positions" icon="fa-list-ol">
  <field string="Positions" name="positions_count" widget="statinfo"/>
</button>

def get_positions(self):
  self.ensure_one()
  return {
    'name': 'Positions',
    'res_model': 'expert.position',
    'type': 'ir.actions.act_window',
    'view_mode': 'tree',
    'view_id': self.env.ref('my_project.project_expert_position_tree').id,
    'domain': [('project_id', '=', self.id)],
    'search_view_id': self.env.ref('my_project.project_expert_position_tree_search').id,
    'context': "{'default_project_id': active_id, 'search_default_project_phase_closed': 1}"
  }

Maintenant, la vue est correcte mais le search_view n'est pas le spécifique, c'est le search_view par défaut. J'ai débogué la fonction et je peux confirmer que l'id de la vue de recherche est correctement ajouté dans le json renvoyé.

Quelqu'un peut-il m'aider?

0
Jacob 10 févr. 2021 à 10:59

1 réponse

Meilleure réponse

J'ai une solution pour cela dans mon post github:

https://github.com/odoo/odoo/issues/66147

'search_view_id': (self.env.ref ('mon_projet.project_expert_position_tree_search'). id,),

Le document dit "(id, name) pair, id est l'identifiant de base de données d'une vue de recherche spécifique à charger" https: // www. odoo.com/documentation/12.0/reference/actions.html#window-actions-ir-actions-act-window

Merci pour ça!

0
Jacob 10 mars 2021 à 08:32