Отображать динамические значения в odoo View? - PullRequest
0 голосов
/ 07 сентября 2018

Я использую odoo9, у меня есть всплывающее окно с подтверждением, и я хочу отобразить в нем динамическое значение? Как я могу это сделать? Пожалуйста, посмотрите на снимок экрана enter image description here

Я хочу заменить Current Contact именем пользователя, которое будет иметь какое-то динамическое значение. Как я могу это сделать? Ниже код моего взгляда.

        <record id="view_dialog_temp_login_confirmation" model="ir.ui.view">
        <field name="name">Temp Login Confirmation</field>
        <field name="model">olims.message_dialog_box</field>
        <field name="arch" type="xml">
            <form string="Client User Confirmation">
                <p class="o_dialog_warning">
                   Current Contact user will be deleted.</p>
                <p>Do you really want to replace Contact User? </p>
                <field name="title" invisible="1"/>
                <footer>
                     <button name="create_temp_login" string="Yes" type="object" class="btn-primary"/>
                     <button string="No" class="btn-default" special="cancel"/>
                </footer>
            </form>
        </field>
    </record>

Открытый код мастера:

     @api.multi
     def open_temp_login_confirm_dialog(self, **kw):
    view_id = self.env['ir.ui.view'].search([('name', '=', 'Temp Login Confirmation')])

    return {
        'name': ('Confirmation'),
        'view_mode': 'form',
        'view_type': 'form',
        'res_model': 'olims.message_dialog_box',
        'view_id': [view_id.id],
        'target': 'new',
        'type': 'ir.actions.act_window',
        'context': context,
    }

1 Ответ

0 голосов
/ 07 сентября 2018

Вы можете добавить Many2one для отношения res.partner в вашей модели мастера olims.message_dialog_box, а затем расширить метод open_ для этого мастера значением по умолчанию или просто создать запись мастера перед открытием.

partner_id = fields.Many2one(comodel_name="res.partner")

Вариант 1 со значением по умолчанию:

@api.multi
def open_temp_login_confirm_dialog(self):
    view_id = self.env['ir.ui.view'].search(
        [('name', '=', 'Temp Login Confirmation')])
    context = dict(self.env.context)
    context['default_partner_id'] = self.env.context.get('active_id')
    return {
        'name': ('Confirmation'),
        'view_mode': 'form',
        'view_type': 'form',
        'res_model': 'olims.message_dialog_box',
        'view_id': [view_id.id],
        'target': 'new',
        'type': 'ir.actions.act_window',
        'context': context,
    }

И вариант 2 с созданием мастера и его открытием

@api.multi
def open_temp_login_confirm_dialog(self):
    view_id = self.env['ir.ui.view'].search(
        [('name', '=', 'Temp Login Confirmation')])
    wizard = self.env['olims.message_dialog_box'].create({
        'partner_id': self.env.context.get('active_id')}) 
    return {
        'name': ('Confirmation'),
        'view_mode': 'form',
        'view_type': 'form',
        'res_model': 'olims.message_dialog_box',
        'view_id': [view_id.id],
        'target': 'new',
        'type': 'ir.actions.act_window',
        'res_id': wizard.id
    }
...