Je suis en train de fouiller dans le web d'OpenERP pour trouver comment je peux supprimer l'exception de la date. Par exemple, je veux insérer une date comme suit 12/12/1523
. avec la fonctionnalité actuelle, un message d'erreur s'affiche si je saisis une date inférieure à 1900
. Je l'ai vérifié avec _calendar.py, format.py, validates.py. mais je n'ai pas réussi. Si quelqu'un ici peut m'aider à travers Il sera hautement apprécié.
Réponses
Trop de publicités?J'ai trouvé deux problèmes dans openerp-web :
1 - Le calendrier de contrôle de la date est restreint et ne peut pas aller en dessous de
01/01/1900
2 - Il y a des erreurs de validation soulevées par openerp/i18n/format.py
quand en essayant d'économiser
Point 1 le widget javascript peut être facilement corrigé en
openerp/static/calandar/calendar.js
=> find:
param_default("range",[1900,2999])
=> and replace with:
param_default("range",[1,2999])
Point 2, remplacer dans
openerp/i18n/format.py
=> find the two occurances of:
return time.strftime(server_format, value)
=> and replace with:
return mx.DateTime.Date(value[0],value[1],value[2],value[3],value[4],value[5]).strftime(server_format)
Le message d'erreur que je reçois lorsque je saisis une date en 1523 est le suivant :
Valeur de date invalide ! L'année doit être supérieure à 1899 !
Si vous cherchez ce message d'erreur dans le code client, vous trouverez ceci dans client/bin/widget/view/form_gtk/calendar.py
:
try:
return date.strftime(DHM_FORMAT)
except ValueError:
common.message(_('Invalid datetime value! Year must be greater than 1899 !'))
Si vous regardez la documentation pour date.strftime()
vous verrez ce qui suit :
La plage exacte d'années pour laquelle strftime() fonctionne varie également selon les plateformes. Quelle que soit la plate-forme, les années antérieures à 1900 ne peuvent pas être utilisées.
En interrogeant M. Google sur "python strftime 1900", on trouve un problème avec un patch et beaucoup de discussions. Il semble que vous ayez quelques options :
- N'utilisez pas de dates antérieures à 1900.
- Modifier le module de calendrier pour mettre en œuvre votre propre routine de formatage au lieu de
strftime()
. - Passez à la version 3.2 ou 3.3 de Python (consultez le rapport de problème pour obtenir des détails sur les corrections apportées à chaque version).
- Appliquez le correctif à votre propre version de Python.