Поле функции не вызывается из мастера

В openerp v7 я пытаюсь добавить поле в мастер просмотра частичного выбора запасов в списке продуктов. Этот мастер отображается, когда вы получаете движение запаса.

Однако моя функция даже не вызывается, хотя появляется строка поля. Оператор регистрации никогда не отображается в журнале сервера. Это ошибка?

class stock_partial_picking_line(osv.TransientModel):
    _inherit = "stock.partial.picking.line"

    def _product_description(self, cr, user, ids, name, arg, context=None):

        _logger.info("inside _product_description")

        res = {}
        for line in self.browse(cr, user, ids, context=context):
            res[line.id] = line.product_id.x_short_description
        return res

    _columns = {
        'product_description': fields.function(_product_description, string='Description', type='char', method=True),
    }

Мастер получения продуктов


person frodo2975    schedule 06.08.2014    source источник
comment
Вы уверены, что добавили ссылку на этот файл в файл инициализации? Потому что код кажется мне хорошим.   -  person sjpatel    schedule 11.08.2014
comment
Да, это там. Спасибо, что посмотрели   -  person frodo2975    schedule 13.08.2014
comment
Я вижу это. Можете ли вы удалить редактируемый код представления дерева и добавить детали из простого интерфейса формы и попробовать.   -  person sjpatel    schedule 14.08.2014


Ответы (1)


Поэтому я так и не понял, почему функция не вызывалась, но мне удалось заставить ее работать.

Похоже, что данные на самом деле передаются мастеру в _partial_move_for, который находится внутри stock_partial_picking.py. Переопределив его, я смог нормализовать поля внутри мастера.

def _partial_move_for(self, cr, uid, move):
    partial_move = {
        'product_id' : move.product_id.id,

        # Add product description
        'product_description' : move.name,

        'quantity' : move.product_qty if move.state in ('assigned','draft','confirmed') else 0,
        'product_uom' : move.product_uom.id,
        'prodlot_id' : move.prodlot_id.id,
        'move_id' : move.id,
        'location_id' : move.location_id.id,
        'location_dest_id' : move.location_dest_id.id,
    }
    return partial_move

# Add the product description to the wizard.
# The values get filled in from stock_partial_picking._partial_move_for
class stock_partial_picking_line(osv.TransientModel):
    _inherit = "stock.partial.picking.line"

    _columns = {
        'product_description': fields.char('Description'),
    }
person frodo2975    schedule 19.08.2014