Se rendre au contenu
Odoo Menu
  • Se connecter
  • Essai gratuit
  • Applications
    Finance
    • Comptabilité
    • Facturation
    • Notes de frais
    • Feuilles de calcul (BI)
    • Documents
    • Signature
    Ventes
    • CRM
    • Ventes
    • PdV Boutique
    • PdV Restaurant
    • Abonnements
    • Location
    Sites web
    • Site Web
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Chaîne d'approvisionnement
    • Inventaire
    • Fabrication
    • PLM
    • Achats
    • Maintenance
    • Qualité
    Ressources Humaines
    • Employés
    • Recrutement
    • Congés
    • Évaluations
    • Recommandations
    • Parc automobile
    Marketing
    • Marketing Social
    • E-mail Marketing
    • SMS Marketing
    • Événements
    • Marketing Automation
    • Sondages
    Services
    • Projet
    • Feuilles de temps
    • Services sur Site
    • Assistance
    • Planification
    • Rendez-vous
    Productivité
    • Discussion
    • Validations
    • Internet des Objets
    • VoIP
    • Connaissances
    • WhatsApp
    Applications tierces Odoo Studio Plateforme Cloud d'Odoo
  • Industries
    Commerce de détail
    • Librairie
    • Magasin de vêtements
    • Magasin de meubles
    • Épicerie
    • Quincaillerie
    • Magasin de jouets
    Food & Hospitality
    • Bar et Pub
    • Restaurant
    • Fast-food
    • Maison d’hôtes
    • Distributeur de boissons
    • Hôtel
    Immobilier
    • Agence immobilière
    • Cabinet d'architecture
    • Construction
    • Gestion immobilière
    • Jardinage
    • Association de copropriétaires
    Consultance
    • Cabinet d'expertise comptable
    • Partenaire Odoo
    • Agence Marketing
    • Cabinet d'avocats
    • Aquisition de talents
    • Audit & Certification
    Fabrication
    • Textile
    • Métal
    • Meubles
    • Alimentation
    • Brewery
    • Cadeaux d'entreprise
    Santé & Fitness
    • Club de sports
    • Opticien
    • Salle de fitness
    • Praticiens bien-être
    • Pharmacie
    • Salon de coiffure
    Trades
    • Bricoleur
    • Matériel informatique et support
    • Systèmes photovoltaïques
    • Cordonnier
    • Services de nettoyage
    • Services CVC
    Autres
    • Organisation à but non lucratif
    • Agence environnementale
    • Location de panneaux d'affichage
    • Photographie
    • Leasing de vélos
    • Revendeur de logiciel
    Browse all Industries
  • Communauté
    Apprenez
    • Tutoriels
    • Documentation
    • Certifications
    • Formation
    • Blog
    • Podcast
    Renforcer l'éducation
    • Programme éducatif
    • Business Game Scale-Up!
    • Rendez-nous visite
    Obtenir le logiciel
    • Téléchargement
    • Comparez les éditions
    • Versions
    Collaborer
    • Github
    • Forum
    • Événements
    • Traductions
    • Devenez partenaire
    • Services for Partners
    • Enregistrer votre cabinet comptable
    Nos Services
    • Trouver un partenaire
    • Trouver un comptable
    • Rencontrer un conseiller
    • Services de mise en œuvre
    • Références clients
    • Assistance
    • Mises à niveau
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Obtenir une démonstration
  • Tarification
  • Aide

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Comptabilité
  • Inventaire
  • PoS
  • Projet
  • MRP
All apps
Vous devez être inscrit pour interagir avec la communauté.
Toutes les publications Personnes Badges
Étiquettes (Voir toutl)
odoo accounting v14 pos v15
À propos de ce forum
Vous devez être inscrit pour interagir avec la communauté.
Toutes les publications Personnes Badges
Étiquettes (Voir toutl)
odoo accounting v14 pos v15
À propos de ce forum
Aide

How to check the size of a field

S'inscrire

Recevez une notification lorsqu'il y a de l'activité sur ce poste

Cette question a été signalée
fieldscharactersodooV8
5 Réponses
15876 Vues
Avatar
Uillino

I know that the tag 'size' sets the maximum size of values stored for a field.

For example, in such way:

 name_of_field =  fields.Char('name of field', size=2)

I could write a maximum of two characters for 'name_of_field': one or two characters are allowed.

How can I prevent to write only one character?


-----------------------------------

This is the right xml file:

<field name="scode" on_change="on_change_length_id(scode)"/> 

and this is the right .py file:

# -*- encoding: utf-8 -*-
from openerp import models, fields
from openerp.osv import osv

class myclass(models.Model):
_name = 'tbl
_description = 'Write into db'

scode= fields.Char('Code', size=3 required=True)

def get_lenght(self, cr, uid, ids, scode, context=None):
if scode and len(scode) != 3:
My_error_Msg = 'Wrong size'
raise osv.except_osv(("Warning!"), (My_error_Msg))
return

else:
return scode


def on_change_length_id(self, cr, uid, ids, scode, context=None):
res = {'value': {'scode': self.get_lenght(cr, uid, ids, scode, context=context)}}
return res

0
Avatar
Ignorer
Avatar
Rihene
Meilleure réponse

 Here is the solution:
Python:

from openerp import models, fields

from openerp.osv import osv

class myclass(models.Model):

_name = 'tbl'

_description = 'Insert into db'

scode = fields.Char('Code', size=3, required=True)

def get_lenght(self, cr, uid, ids, scode context=None):

if len(scode) == 3:

return True

else:

My_error_Msg = 'Size uncorrect'

raise osv.except_osv(_("Error!"), _(My_error_Msg))

return False

def on_change_length_id(self, cr, uid, ids, scode, context=None):

res = {'value': {'scode': self.get_lenght(cr, uid, ids, scode, context=context)

}

}

return res

And your XML:

<field name="scode" on_change="on_change_length_id(scode)"/>

Regards.

1
Avatar
Ignorer
Uillino
Auteur

I get this error: 2015-08-10 13:29:10,406 3867 ERROR MyModule werkzeug: Error on request: Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/Werkzeug-0.9-py2.7.egg/werkzeug/serving.py", line 174, in run_wsgi execute(self.server.app) File "/usr/lib/python2.7/site-packages/Werkzeug-0.9-py2.7.egg/werkzeug/serving.py", line 162, in execute application_iter = app(environ, start_response) File "/home/Odoo/openerp/openerp/service/server.py", line 281, in app return self.app(e, s) File "/home/Odoo/openerp/openerp/service/wsgi_server.py", line 216, in application return application_unproxied(environ, start_response) File "/home/Odoo/openerp/openerp/service/wsgi_server.py", line 202, in application_unproxied result = handler(environ, start_response) File "/home/Odoo/openerp/openerp/http.py", line 1280, in __call__ return self.dispatch(environ, start_response) File "/home/Odoo/openerp/openerp/http.py", line 1254, in __call__ return self.app(environ, start_wrapped) File "/usr/lib/python2.7/site-packages/Werkzeug-0.9-py2.7.egg/werkzeug/wsgi.py", line 574, in __call__ return self.app(environ, start_response) File "/home/Odoo/openerp/openerp/http.py", line 1412, in dispatch ir_http = request.registry['ir.http'] File "/home/Odoo/openerp/openerp/http.py", line 339, in registry return openerp.modules.registry.RegistryManager.get(self.db) if self.db else None File "/home/Odoo/openerp/openerp/modules/registry.py", line 335, in get update_module) File "/home/Odoo/openerp/openerp/modules/registry.py", line 366, in new openerp.modules.load_modules(registry._db, force_demo, status, update_module) File "/home/Odoo/openerp/openerp/modules/loading.py", line 351, in load_modules force, status, report, loaded_modules, update_module) File "/home/Odoo/openerp/openerp/modules/loading.py", line 255, in load_marked_modules loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks) File "/home/Odoo/openerp/openerp/modules/loading.py", line 176, in load_module_graph _load_data(cr, module_name, idref, mode, kind='data') File "/home/Odoo/openerp/openerp/modules/loading.py", line 118, in _load_data tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report) File "/home/Odoo/openerp/openerp/tools/convert.py", line 901, in convert_file convert_xml_import(cr, module, fp, idref, mode, noupdate, report) File "/home/Odoo/openerp/openerp/tools/convert.py", line 974, in convert_xml_import doc = etree.parse(xmlfile) File "lxml.etree.pyx", line 3197, in lxml.etree.parse (src/lxml/lxml.etree.c:64816) File "parser.pxi", line 1593, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:92943) File "parser.pxi", line 1624, in lxml.etree._parseFilelikeDocument (src/lxml/lxml.etree.c:93282) File "parser.pxi", line 1506, in lxml.etree._parseDocFromFilelike (src/lxml/lxml.etree.c:92145) File "parser.pxi", line 1069, in lxml.etree._BaseParser._parseDocFromFilelike (src/lxml/lxml.etree.c:89185) File "parser.pxi", line 577, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:84385) File "parser.pxi", line 676, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:85488) File "parser.pxi", line 616, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:84811) XMLSyntaxError: attributes construct error, line 11, column 17

Serpent Consulting Services Pvt. Ltd.

Share the XML file please.

Uillino
Auteur

There were few errors in your code. I've tryed in such way: from openerp.osv import osv scode = fields.Char('Code', size=3, required=True) def get_lenght(self, cr, uid, ids, scode, context=None): if len(scode) != 3: My_error_Msg = 'Size uncorrect' raise osv.except_osv(_("Error!"), _(My_error_Msg)) return False else: return True def on_change_length_id(self, cr, uid, ids, scode, context=None): res = {'value': {'scode': self.get_lenght(cr, uid, ids, scode, context=context) } } return res but I get this error: Traceback (most recent call last): File "/home/Odoo/openerp/openerp/http.py", line 530, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/home/Odoo/openerp/openerp/http.py", line 567, in dispatch result = self._call_function(**self.params) File "/home/Odoo/openerp/openerp/http.py", line 303, in _call_function return checked_call(self.db, *args, **kwargs) File "/home/Odoo/openerp/openerp/service/model.py", line 113, in wrapper return f(dbname, *args, **kwargs) File "/home/Odoo/openerp/openerp/http.py", line 300, in checked_call return self.endpoint(*a, **kw) File "/home/Odoo/openerp/openerp/http.py", line 796, in __call__ return self.method(*args, **kw) File "/home/Odoo/openerp/openerp/http.py", line 396, in response_wrap response = f(*args, **kw) File "/home/Odoo/openerp/openerp/addons/web/controllers/main.py", line 949, in call_kw return self._call_kw(model, method, args, kwargs) File "/home/Odoo/openerp/openerp/addons/web/controllers/main.py", line 941, in _call_kw return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) File "/home/Odoo/openerp/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/home/Odoo/openerp/openerp/api.py", line 363, in old_api result = method(recs, *args, **kwargs) File "/home/Odoo/openerp/openerp/models.py", line 5786, in onchange record._onchange_eval(name, field_onchange[name], result) File "/home/Odoo/openerp/openerp/models.py", line 5720, in _onchange_eval method_res = getattr(self._model, method)(*args) File "/home/Odoo/openerp/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/home/Odoo/openerp/openerp/addons/mymodule/macro_sotto.py", line 32, in on_change_length_id res = {'value': {'scode': self.get_lenght(cr, uid, ids, scode_macro_attivita, context=context) File "/home/Odoo/openerp/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/home/Odoo/openerp/openerp/addons/mymodule/macro_sotto.py", line 23, in get_lenght if len(scode) != '3': TypeError: object of type 'bool' has no len()

Rihene

If it works for you friend CHECK it ;)

Uillino
Auteur

Thank you for your help, but I get the same error: TypeError: object of type 'bool' has no len()

Rihene

Try this one please

Uillino
Auteur

The error is the same: TypeError: object of type 'bool' has no len(). I don't understand why!

Uillino
Auteur

I've solved! The problem is that odoo set scode to True by default. So I need to put an 'if scode', Now I'm going to post the right code. Thank you for your help.

Avatar
Uillino
Auteur Meilleure réponse

I get this error:

TypeError: object of type 'bool' has no len() 

using this code:

from openerp import models, fields
from openerp.osv import osv

class myclass(models.Model):
_name = 'tbl'
_description = 'Insert into db'

scode = fields.Char('Code', size=3, required=True)

def get_lenght(self, cr, uid, ids, scode context=None):
if len(scode == 3:
return True
else:
My_error_Msg = 'Size uncorrect'
raise osv.except_osv(_("Error!"), _(My_error_Msg))
return False

def on_change_length_id(self, cr, uid, ids, scode context=None):
res = {'value': {'scode': self.get_lenght(cr, uid, ids, scode context=context)
}
}
return res

and this xml file:

<field name="scode" on_change="on_change_length_id(scode)"/> 

Any idea?

Thanks!

0
Avatar
Ignorer
Vous appréciez la discussion ? Ne vous contentez pas de lire, rejoignez-nous !

Créez un compte dès aujourd'hui pour profiter de fonctionnalités exclusives et échanger avec notre formidable communauté !

S'inscrire
Publications associées Réponses Vues Activité
display field by selected model.
fields odooV8
Avatar
0
mars 16
4059
Retrieving the keys from the selection field
fields odooV8
Avatar
0
déc. 15
5241
What is use of oldname? Résolu
fields openerp7 odooV8
Avatar
Avatar
Avatar
2
août 22
15167
How to let a field stay editable even after save or confirm
fields editable odooV8
Avatar
Avatar
1
avr. 19
5181
How to have more than one many2one field for a method?
fields many2one odooV8
Avatar
Avatar
1
juin 18
4636
Communauté
  • Tutoriels
  • Documentation
  • Forum
Open Source
  • Téléchargement
  • Github
  • Runbot
  • Traductions
Services
  • Hébergement Odoo.sh
  • Assistance
  • Migration
  • Développements personnalisés
  • Éducation
  • Trouver un comptable
  • Trouver un partenaire
  • Devenez partenaire
À propos
  • Notre société
  • Actifs de la marque
  • Contactez-nous
  • Emplois
  • Événements
  • Podcast
  • Blog
  • Clients
  • Informations légales • Confidentialité
  • Sécurité.
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo est une suite d'applications open source couvrant tous les besoins de votre entreprise : CRM, eCommerce, Comptabilité, Inventaire, Point de Vente, Gestion de Projet, etc.

Le positionnement unique d'Odoo est d'être à la fois très facile à utiliser et totalement intégré.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now