Adding a field in the Signup form website
Menambahkan field dalam form Sign Up website

Assalamu'alaikum Warahmatullahi Wabarakatuh,

Bawaan tampilan form pendaftaran / signup di website odoo hanya terdiri dari 4 fields, yaitu Nama, Email, Password, dan Confirm Password. Disini saya akan berbagi bagaimana caranya menambahkan field baru baik itu berupa input atau selection. Here we go.....


Sebagai developer odoo kita dituntut untuk memenuhi kebutuhan user/client, tampilan form signup yang sederhana kadang membuat user/client ingin menambahkan beberapa kolom baru sesuai kebutuhan mereka. Begini caranya:

Inherit Controller (file controller ini ada di module auth_signup yang ada di file original odoo)



class AuthSignupHome(AuthSignupHome):
def do_signup(selfqcontext):
""" Shared helper that creates a res.partner out of a token """
values = {keyqcontext.get(keyfor key in ('login''name''password''phone'
'company_name')}
# values.update({'country_id': int(qcontext.get('country_id'))})
if not values:
raise UserError(_("The form was not properly filled in."))
if values.get('password') != qcontext.get('confirm_password'):
raise UserError(_("Passwords do not match; please retype them."))
supported_lang_codes = [code for code_ in request.env['res.lang'].get_installed()]
lang = request.context.get('lang''').split('_')[0]
if lang in supported_lang_codes:
values['lang'] = lang
self._signup_with_values(qcontext.get('token'), values)
  request.env.cr.commit()

@http.route('/web/signup'type='http'auth='public'website=Truesitemap=False)
def web_auth_signup(self, *args, **kw):
qcontext = self.get_auth_signup_qcontext()
qcontext['partner'] = request.env['res.partner'].sudo().search([
('company_type''=''company'), ('customer_rank''>'0)])
qcontext['phone'] = request.params.get('phone')
qcontext['company_name'] = request.params.get('company_name')

Di dalam method do_signup tambahkan values baru, contoh disini saya tambahkan "phone" dan "company_name". Kemudian di method web_auth_signup tambahkan qcontext baru ( qcontext['partner'], qcontext['phone'], qcontext['company_name']) sesuai dengan values yang ditambahkan di method do_signup. 

Ket :

qcontext['partner'] untuk menampilkan data dari res.partner yang company_type = company dan customer_rank > 0

qcontext['phone'] dan qcontext['company_name'] untuk menampung data yang sudah dipilih dan diinput di form signup supaya langsung terisi di profile user ketika otomatis masuk setelah signup. Terakhir inherit template form signup seperti dibawah ini:

Inherit template auth_signup.fields


    <template id="custom_auth_signup_fields_extend" inherit_id="auth_signup.fields">
<xpath expr="//div[hasclass('field-password')]" position="before">
<div class="form-group field-phone">
<label for="phone" class="control-label">Mobile (connected Whatsapp)</label>
<input type="text" name="phone" t-set="phone" t-value="phone"
            t-att-value="phone" id="phone" class="form-control form-control-sm"
            t-att-readonly="'readonly' if only_passwords else None"
            t-att-autofocus="'autofocus' if login and not only_passwords else None"/>
</div>
<div class="form-group field-country">
<label for="company_name" class="control-label">Corporate</label>
<select name="company_name" class="form-control"
            t-att-readonly="'readonly' if only_passwords else None"
            t-att-autofocus="'autofocus' if login and not only_passwords else None">
<option value="">Selection</option>
<t t-foreach="partner or []" t-as="partner">
<option t-att-value="partner.name">
<t t-esc="partner.name"/>
</option>
</t>
</select>
</div>
</xpath>
</template>

 
Hide Action Server Options From Dropdown Action
Menyembunyikan pilihan atau tombol action server dari dropdown action