İçereği Atla
Menü
Bu soru işaretlendi
3 Cevaplar
9289 Görünümler

I needed to change some attributes of the 'stock.move' popup screen that opened when one need to add a product in a delivery order screen, I added the following code


    def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
        if context is None:
            context = {}
        res = super(stock_move, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
        if context.get('picking_type') and context['picking_type']=='out':
            doc = etree.XML(res['arch'])
            domain ="[('use_type','=','finished')]"
            nodes = doc.xpath("//field[@name='product_id']")
            for node in nodes:
                node.set('domain', domain)
                node.set('string', 'Finished Product')
            nodes2 = doc.xpath("//field[@name='prodlot_id']")
            for node in nodes2:
                node.set('readonly',"1")
                node.set('invisible',"1")
                node.set('string',"1==================") res['arch'] = etree.tostring(doc)

The first nodes loop worked ok, the second one, nodes2, didn't work, i.e, the field still available and editable. I added the last line for test and for surprise it worked. Any idea is appreciated


Avatar
Vazgeç

try node.set('readonly', '1')

Üretici

No difference. Any more suggestions??

En İyi Yanıt

Hi,

You can make apply any modifier as like below.


from openerp.osv.orm import setup_modifiers
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
if context is None:
context = {}
res = super(stock_move, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
if context.get('picking_type') and context['picking_type']=='out':
doc = etree.XML(res['arch'])
domain ="[('use_type','=','finished')]"
nodes = doc.xpath("//field[@name='product_id']")
for node in nodes:
node.set('domain', domain)
node.set('string', 'Finished Product')
setup_modifiers(node, res['fields']['product_id'])
nodes2 = doc.xpath("//field[@name='prodlot_id']")
for node in nodes2:
node.set('readonly',"1")
node.set('invisible',"1")
node.set('string',"1==================")
setup_modifiers(node, res['fields']['prodlot_id'])
res['arch'] = etree.tostring(doc)


I hope it will help you a lot.

Thanks.

Avatar
Vazgeç
Üretici

Thank you 'Emipro' and thank to the site and the community that gave me this chance to get information by asking and receiving replies. You helped me before.

Üretici

I tried your suggestion and it worked well. I now need to disable the 'split' button on the popup screen, I added this code nodes = doc.xpath("//button[@string='Split']") for node in nodes: node.set('readonly','1') I checked the 'res' dictionary to find how to apply this function and didn't get a clue, pls help me again. If this requires adding this in a new question pls post a comment to me to do so. Thx again

It is good that we can manage this as new question. Thanks.

Üretici

I posted the question https://www.odoo.com/nl_NL/forum/help-1/question/i-unable-to-change-the-readonly-proprety-of-a-button-from-within-fields-view-get-method-89309 pls check

İlgili Gönderiler Cevaplar Görünümler Aktivite
1
Ara 17
7679
2
Kas 16
6488
1
Eyl 15
5150
1
Tem 15
8687
1
Mar 15
5854