premessa: si, vi scrivo dal passato, ancora è in giro la versione 8
detto questo, sto realizzando un piccolo wizard che mi permetta di inserire un prodotto diretamente in una Richiesta d'acquisto.
al model product.template ho inserito il mio button:
<field name="name">insert_product_to_purchase_request</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view"/>
<field name="arch" type="xml">
<xpath expr="/form/*" position="before">
<header>
<button name="action_insert_product_to_purchase_request"
string="Inserisci in RdA" type="object" class="oe_highlight"
groups="purchase_request.group_purchase_request_user,purchase_request.group_purchase_request_manager"
attrs="{'invisible':[('purchase_ok','=', False)]}"
/>
</header>
</xpath>
</field>
</record>
il relativo metodo apre (o almeno dovrebbe) la view del mio TransientModel in questo modo:
def action_insert_product_to_purchase_request(self):
view = self.env.ref('ies_variazioni_rda.view_wiz_import_product_pr')
wiz = self.env['wiz_import_product_pr'].create(
{
'my_product': self.id,
'my_product_qty': 1,
#'my_rda': None
}
)
return {
'name': 'Inserimento prodotto in RdA',
'type': 'ir.actions.act_window',
'view_mode': 'form',
'view_type': 'form',
'res_model': 'ies_variazioni_rda.wiz_import_product_pr',
'views': [(view.id, 'form')],
'view_id': view.id,
'target': 'new',
'res_id': wiz.id,
'context': self.env.context,
}
Action e form view sono definite in questo modo
<act_window name="Inserimento Prodotto in Richiesta d'Acquisto"res_model="wiz_import_product_pr"
src_model="wiz_import_product_pr"
view_mode="form"
target="new"
multi="True"
id="action_insert_product_to_purchase_request"/>
<record id="view_wiz_import_product_pr" model="ir.ui.view">
<field name="name">Inserimento Prodotto in RdA</field>
<field name="model">wiz_import_product_pr</field>
<field name="arch" type="xml">
<form>
<group>
<field name="my_rda"/>
<field name="my_product" readonly="True"/>
<field name="my_product_qty"/>
</group>
<footer>
<button name="go_insert_product_in_rda" string="Salva" type="object" class="oe_highlight"/>
<button special="cancel" string="Annulla" class="oe_right"/>
</footer>
</form>
</field>
</record>
<record id="action_insert_product_to_purchase_request" model="ir.actions.act_window">
<field name="name">Inserimento Prodotto in Richiesta d'Acquisto</field>
<field name="res_model">wiz_import_product_pr</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="view_id" ref="view_wiz_import_product_pr"/>
</record>
Tutto sembrerebbe funzionare, il pulsante chiama la action che prova ad aprire il form (ho dei metodi per i domain che vengono invocati come mi aspetto). Però a fine apertura ricevo questo errore:
Traceback (most recent call last): File "/opt/odoo/buildout/parts/odoo/openerp/http.py", line 546, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/opt/odoo/buildout/parts/odoo/openerp/http.py", line 583, in dispatch result = self._call_function(**self.params) File "/opt/odoo/buildout/parts/odoo/openerp/http.py", line 319, in _call_function return checked_call(self.db, *args, **kwargs) File "/opt/odoo/buildout/parts/odoo/openerp/service/model.py", line 118, in wrapper return f(dbname, *args, **kwargs) File "/opt/odoo/buildout/parts/odoo/openerp/http.py", line 316, in checked_call return self.endpoint(*a, **kw) File "/opt/odoo/buildout/parts/odoo/openerp/http.py", line 812, in __call__ return self.method(*args, **kw) File "/opt/odoo/buildout/parts/odoo/openerp/http.py", line 412, in response_wrap response = f(*args, **kw) File "/opt/odoo/buildout/parts/odoo/addons/web/controllers/main.py", line 944, in call_kw return self._call_kw(model, method, args, kwargs) File "/opt/odoo/buildout/parts/odoo/addons/web/controllers/main.py", line 936, in _call_kw return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) AttributeError: 'NoneType' object has no attribute 'fields_view_get'
Sono bloccato come un somaro davanti ad un muro.
Vedete voi quello che io non vedo???