ผลต่างระหว่างรุ่นของ "Tutorial Odoo 9.0 Part 12 : Wizards"

จาก Morange Wiki
แถว 74: แถว 74:
 
<br/>
 
<br/>
 
และเมื่อคลิกที่ Add attendees จะปรากฏหน้าต่างดังภาพ
 
และเมื่อคลิกที่ Add attendees จะปรากฏหน้าต่างดังภาพ
[[ไฟล์:Odoo12-2.png]]
+
[[ไฟล์: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 ที่กำลังแก้ไขอยู่
 +
<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]]

รุ่นแก้ไขเมื่อ 10:46, 19 กรกฎาคม 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>


จากการแก้ไขโค้ดข้างต้น จะได้ผลลัพธ์ดังภาพ Odoo12-1.png
และเมื่อคลิกที่ 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 ที่กำลังแก้ไขอยู่

ดังภาพ

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย



  • 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