Tutorial Odoo 9.0 Part 12 : Wizards
จาก Morange Wiki
เนื้อหา
Wizards
แก้ไขไฟล์ดังนี้
openacademy/__init__.py
# -*- coding: utf-8 -*- import controllers import models import partner import wizard
openacademy/wizard/wizard.py
# -*- coding: utf-8 -*- from openerp import models, fields, api class Wizard(models.TransientModel): _name = 'openacademy.wizard' session_id = fields.Many2one('openacademy.session', string="Session", required=True) attendee_ids = fields.Many2many('res.partner', string="Attendees")
Launching wizards
แก้ไขไฟล์ดังนี้
openacademy/wizard/wizard.py
class Wizard(models.TransientModel): _name = 'openacademy.wizard' def _default_session(self): return self.env['openacademy.session'].browse(self._context.get('active_id')) session_id = fields.Many2one('openacademy.session', string="Session", required=True, default=_default_session) attendee_ids = fields.Many2many('res.partner', string="Attendees")
openacademy/views/openacademy.xml
parent="openacademy_menu" action="session_list_action"/> <record model="ir.ui.view" id="wizard_form_view"> <field name="name">wizard.form</field> <field name="model">openacademy.wizard</field> <field name="arch" type="xml"> <form string="Add Attendees"> <group> <field name="session_id"/> <field name="attendee_ids"/> </group> </form> </field> </record> <act_window id="launch_session_wizard" name="Add Attendees" src_model="openacademy.session" res_model="openacademy.wizard" view_mode="form" target="new" key2="client_action_multi"/> </data> </openerp>
จากการแก้ไขโค้ดข้างต้น จะได้ผลลัพธ์ดังภาพ
และเมื่อคลิกที่ Add attendees จะปรากฏหน้าต่างดังภาพ
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
Continue Launching wizards
แก้ไขไฟล์ดังนี้
openacademy/views/openacademy.xml
<field name="attendee_ids"/> </group> <footer> <button name="subscribe" type="object" string="Subscribe" class="oe_highlight"/> or <button special="cancel" string="Cancel"/> </footer> </form> </field> </record>
openacademy/wizard.py
session_id = fields.Many2one('openacademy.session', string="Session", required=True, default=_default_session) attendee_ids = fields.Many2many('res.partner', string="Attendees") @api.multi def subscribe(self): self.session_id.attendee_ids |= self.attendee_ids return {}
จากโค้ดข้างต้น เป็นการเพิ่ม footer และเพิ่มการ subscribe session (ต้องเป็น session อื่นที่ไม่เป็น session ที่กำลังแก้ไขอยู่)
ดังภาพ
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
Continue Launching wizards
แก้ไขไฟล์ดังนี้
openacademy/views/openacademy.xml
<form string="Add Attendees"> <group> <field name="session_ids"/> <field name="attendee_ids"/> </group> <footer> <button name="subscribe" type="object"
openacademy/wizard.py
class Wizard(models.TransientModel): _name = 'openacademy.wizard' def _default_sessions(self): return self.env['openacademy.session'].browse(self._context.get('active_ids')) session_ids = fields.Many2many('openacademy.session', string="Sessions", required=True, default=_default_sessions) attendee_ids = fields.Many2many('res.partner', string="Attendees") @api.multi def subscribe(self): for session in self.session_ids: session.attendee_ids |= self.attendee_ids return {}
จากโค้ดข้างต้น จะได้ผลลัพธ์ดังภาพ
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
หัวข้อถัดไป Tutorial Odoo 9.0 Part 13 : Internationalization