ผลต่างระหว่างรุ่นของ "Tutorial Odoo 9.0 Part 12 : Wizards"
จาก Morange Wiki
Sirawich (คุย | มีส่วนร่วม) |
Sirawich (คุย | มีส่วนร่วม) ล |
||
(ไม่แสดง 1 รุ่นระหว่างกลางโดยผู้ใช้คนเดียวกัน) | |||
แถว 74: | แถว 74: | ||
<br/> | <br/> | ||
และเมื่อคลิกที่ Add attendees จะปรากฏหน้าต่างดังภาพ | และเมื่อคลิกที่ Add attendees จะปรากฏหน้าต่างดังภาพ | ||
− | [[ไฟล์:Odoo12- | + | [[ไฟล์:Fix-odoo12-2.png|800px]] |
+ | <br/><br/> | ||
+ | * <h3>Continue Launching wizards</h3> | ||
+ | แก้ไขไฟล์ดังนี้ | ||
+ | <br/><br/> | ||
+ | openacademy/views/openacademy.xml | ||
+ | <pre> | ||
+ | <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> | ||
+ | </pre> | ||
+ | <br/> | ||
+ | openacademy/wizard.py | ||
+ | <pre> | ||
+ | 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 {} | ||
+ | </pre> | ||
+ | <br/> | ||
+ | จากโค้ดข้างต้น เป็นการเพิ่ม footer และเพิ่มการ subscribe session (ต้องเป็น session อื่นที่ไม่เป็น session ที่กำลังแก้ไขอยู่) | ||
+ | <br/><br/> | ||
+ | ดังภาพ | ||
+ | <br/> | ||
+ | [[ไฟล์:Odoo12-3.png|800px]] | ||
+ | <br/><br/> | ||
+ | * <h3>Continue Launching wizards</h3> | ||
+ | แก้ไขไฟล์ดังนี้ | ||
+ | <br/><br/> | ||
+ | openacademy/views/openacademy.xml | ||
+ | <pre> | ||
+ | <form string="Add Attendees"> | ||
+ | <group> | ||
+ | <field name="session_ids"/> | ||
+ | <field name="attendee_ids"/> | ||
+ | </group> | ||
+ | <footer> | ||
+ | <button name="subscribe" type="object" | ||
+ | </pre> | ||
+ | <br/> | ||
+ | openacademy/wizard.py | ||
+ | <pre> | ||
+ | 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 {} | ||
+ | </pre> | ||
+ | <br/> | ||
+ | จากโค้ดข้างต้น จะได้ผลลัพธ์ดังภาพ | ||
+ | <br/> | ||
+ | [[ไฟล์:Odoo12-4.png|800px]] | ||
+ | <br/><br/> | ||
+ | หัวข้อถัดไป [[Tutorial Odoo 9.0 Part 13 : Internationalization]] |
รุ่นแก้ไขปัจจุบันเมื่อ 05:28, 25 กรกฎาคม 2559
เนื้อหา
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