diff options
| author | Richard Mathot (OpenERP) <rim@openerp.com> | 2014-04-09 15:56:59 +0200 |
|---|---|---|
| committer | Richard Mathot (OpenERP) <rim@openerp.com> | 2014-04-09 15:56:59 +0200 |
| commit | efd4e33c0b73808114d8d3a4b72fc65a8de7aa3a (patch) | |
| tree | 2de4592b2533f279cf42b75673a8c8fe62a8d339 | |
| parent | fbfd9a6197ae854c7edf379aa7e485576f70180a (diff) | |
[FIX] bugs in questions validation
bzr revid: rim@openerp.com-20140409135659-9m9jqbmcefk5uaou
| -rw-r--r-- | addons/survey/survey.py | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/addons/survey/survey.py b/addons/survey/survey.py index 14e8fae1dfc..673b6eac86f 100644 --- a/addons/survey/survey.py +++ b/addons/survey/survey.py @@ -26,7 +26,6 @@ from openerp.addons.website.models.website import slug from urlparse import urljoin from itertools import product from collections import Counter -from datetime import datetime import datetime import logging @@ -700,10 +699,14 @@ class survey_question(osv.Model): except ValueError: errors.update({answer_tag: _('This is not a number')}) # Answer validation (if properly defined) - if answer and floatanswer and question.validation_required: + if answer and question.validation_required: # Answer is not in the right range - if not (question.validation_min_float_value <= floatanswer <= question.validation_max_float_value): - errors.update({answer_tag: question.validation_error_msg}) + try: + floatanswer = float(answer) # check that it is a float has been done hereunder + if not (question.validation_min_float_value <= floatanswer <= question.validation_max_float_value): + errors.update({answer_tag: question.validation_error_msg}) + except ValueError: + pass return errors def validate_datetime(self, cr, uid, question, post, answer_tag, context=None): @@ -715,14 +718,19 @@ class survey_question(osv.Model): # Checks if user input is a datetime if answer: try: - dateanswer = datetime.strptime(answer, DF) + dateanswer = datetime.datetime.strptime(answer, DF) except ValueError: errors.update({answer_tag: _('This is not a date/time')}) + return errors # Answer validation (if properly defined) - if answer and dateanswer and question.validation_required: + if answer and question.validation_required: # Answer is not in the right range - if not (datetime.strptime(question.validation_min_date, DF) <= dateanswer <= datetime.strptime(question.validation_max_date, DF)): - errors.update({answer_tag: question.validation_error_msg}) + try: + dateanswer = datetime.datetime.strptime(answer, DF) + if not (datetime.datetime.strptime(question.validation_min_date, DF) <= dateanswer <= datetime.datetime.strptime(question.validation_max_date, DF)): + errors.update({answer_tag: question.validation_error_msg}) + except ValueError: # check that it is a datetime has been done hereunder + pass return errors def validate_simple_choice(self, cr, uid, question, post, answer_tag, context=None): @@ -925,7 +933,7 @@ class survey_user_input_line(osv.Model): # 'bool()' is required in order to make '!=' act as XOR with objects return bool(uil.value_text) elif uil.answer_type == 'number': - return uil.value_number != False + return (uil.value_number == 0) or (uil.value_number != False) elif uil.answer_type == 'date': return bool(uil.value_date) elif uil.answer_type == 'free_text': |
