Search code examples
python-2.7odoo-9

How can'i controle the input format for a field?


I use odoo 9 is I noticed that it does not have a control for the input format for example for the email field I can enter any character and it will consider it as an email address. So I wanted to know how I can control the input format for a field for example for the email field the presence of "@ and the" are mandatory or for the code field VAT for partners the presence of "/" is mandatory .

template.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>

    <template id="assets_backend" name="stock assets mask ext" inherit_id="web.assets_backend">
        <xpath expr="." position="inside">
            <link rel="stylesheet" href="/field_mask/static/src/css/mask.css"/>
            <script type="text/javascript" src="/field_mask/static/src/js/widgets.js"></script>
            <script type="text/javascript" src="/field_mask/static/src/lib/jquery.inputmask.bundle.js"></script>
        </xpath>
    </template>
</data>

partner_view.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
   <record id="res_partner_view_purchase_buttons_TVA_RC" model="ir.ui.view">
        <field name="name">num.TVA.RC.res.partner.view.purchase.</field>
        <field name="model">res.partner</field>
        <field name="inherit_id" ref="base.view_partner_form"/>
        <field name="arch" type="xml">
            <xpath expr="//field[@name='website']" position="after">
                        <field name="CodeTVA" select="1" placeholder="Code TVA" widget="mask" data-inputmask-mask="9999999/A/A/A/999" />
                        <field name="RC" select="1" placeholder="Num RC"/>
            </xpath>
        </field>
   </record>
</data>

widgets.js

function openerp_field_mask_widgets(instance) {



    instance.web.form.FieldMask = instance.web.form.FieldChar.extend({
    template : "FieldMask",


    render_value: function() {

        var show_value = this.get_value();
        var field = this;
        if (!field.get("effective_readonly")) {

            field.$el.find('input').val(show_value);

            var mask = field.node.attrs.mask;
            field.$el.find('input').inputmask(mask);


        } else {

              field.$(".oe_form_char_content").text(show_value);

        }


    },


    get_value: function() {
        val = this.get('value');
        if (!val) {
            return '';
        }

        return  val;
    },

});

instance.web.form.widgets.add('mask', 'instance.web.form.FieldMask');
 }

  openerp.field_mask = function(openerp) {
openerp.field_mask = openerp.field_mask || {};
openerp_field_mask_widgets(openerp);
 }

Solution

  • You can make your own widget with inputMask by inheriting FieldChar and you can find usefull mudules at odoowidgets or field_mask