Cara Membuat 'CRUD' Pada Website Odoo Part 2

Assalamualaikum teman teman, okeee mari kita lanjutin penjelasan yang kemarin yaaa, saya overview sedikit. jadi kemarin saya sudah membuat untuk step read (tarik data dari product.product) nah untuk kali ini saya akan menjelaskan lagi, namun lebih detail, yakni ketika kita klik 1 product nya, maka akan merender tampilan product tersebut, tantangannya adalah tiap product pasti beda id, jadi nanti yang kita render adalah id dari masing masing product tersebut, sebenarnya pada part sebelumnya saya sudah membuatkannya jika teman teman sadar, di xml nya sudah ada namun saya memang tidak menjelaskan bagaimana di kontrollernya. okee mari kita simak.


teman teman pasti sadar ada bagian ini pada kodingan yang saya share sebelumnya, yaaa memang tujuannya adalah ituuu, inilah yang membuat sebuah product bisa di klik


bisa dilihat bahwa name dari product menjadi biru seperti link, itulah yang saya lakukan karena saya memberikan href dan setelahnya tinggal di tujukan  ke product yang terkait.

@http.route(['/my/tes_product/<model("product.product"):product_id>'], type='http', website=True)
def tes_product_form(self, product_id, **kw):
         vals = {'products':product_id,  'page_name':'view_form_product'}
         return request.render('rm_web_test.view_form_tes_product', vals)

nah inilah yang akan merender masing masing dari id product, namun lagi lagi kita harus membuat tampilan dasar untuk detail dari productnya, makanya saya return view_form_tes_product.

<template id="view_form_tes_product" name="Detail Product">
        <t t-call="website.layout">
            <t t-if="page_name == 'view_form_product'">
                <div>
                    <a t-attf-href="/my/tes_product/">
                        <button type="button" class="btn btn-success">Back</button>
                    </a>
                </div>
                <section style="background-color: #eee;">
                    <div class="row">
                        <t t-foreach="products" t-as="product">
                            <div class="col-lg-4">
                                <div class="card mb-4">
                                    <div class="card-body text-center">
                                        <img t-if="product.image_1920" t-att-src="image_data_uri(product.image_1920)" alt="avatar" style="width: 135px;"/>
                                        <h5 class="my-3">
                                            <t t-esc="product.name"/>
                                        </h5>
                                        <div class="d-flex justify-content-center mb-2">
                                            <!-- <button type="button" class="btn btn-primary">Edit</button> -->
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="col-lg-8">
                                <div class="card mb-4">
                                    <div class="card-body">
                                        <div class="row">
                                            <div class="col-sm-3">
                                                <p class="mb-0">Product</p>
                                            </div>
                                            <div class="col-sm-9">
                                                <p class="text-muted mb-0">
                                                    <t t-esc="product.name"/>
                                                </p>
                                            </div>
                                        </div>
                                        <hr>
                                            <div class="row">
                                                <div class="col-sm-3">
                                                    <p class="mb-0">Barcode</p>
                                                </div>
                                                <div class="col-sm-9">
                                                    <p class="text-muted mb-0">
                                                        <t t-esc="product.barcode"/>
                                                    </p>
                                                </div>
                                            </div>
                                        </hr>
                                        <hr>
                                            <div class="row">
                                                <div class="col-sm-3">
                                                    <p class="mb-0">Internal Reference</p>
                                                </div>
                                                <div class="col-sm-9">
                                                    <p class="text-muted mb-0">
                                                        <t t-esc="product.default_code"/>
                                                    </p>
                                                </div>
                                            </div>
                                        </hr>
                                        <hr>
                                            <div class="row">
                                                <div class="col-sm-3">
                                                    <p class="mb-0">Price</p>
                                                </div>
                                                <div class="col-sm-9">
                                                    <p class="text-muted mb-0">
                                                        <t t-esc="product.lst_price"/>
                                                    </p>
                                                </div>
                                            </div>
                                        </hr>
                                    </div>
                                </div>
                            </div>
                        </t>
                    </div>
                </section>
            </t>
        </t>
    </template>

untuk output dari tampilannya akan menjadi berikut ini.


okeee, sekarang kita sudah menarik data dari objek product dan membungkusnya menjadi card, dan kita pun sudah bisa melihat detail detail dari tiap product tersebut dengan mengklik name pada card nya, untuk part ini saya sudahi dulu karena di next part kita akan belajar bagaimana cara membuat product baru di sini di website dan kita akan menyimpannya kedalam penyimpanan database odoo, dan kita akan parsing data dari depan ke belakang dengan menggunakan jsonrpc, terimakasih Assalamualaikum




Cara Membuat 'CRUD' Pada Website Odoo Part 1