summaryrefslogtreecommitdiff
path: root/webtest/forms.py
diff options
context:
space:
mode:
authorYannick Chabbert <yannick.chabbert@makina-corpus.com>2015-05-29 16:43:44 +0200
committerYannick Chabbert <yannick.chabbert@makina-corpus.com>2015-05-29 16:43:44 +0200
commit75489af8324dc4c33d1c6a3dde8ce29a9a034e08 (patch)
treee54f6ab6479a6d271e8dfb1b79d7d0cb76689230 /webtest/forms.py
parentc1ac9d3c8c7b6297b9bba8644984ebfccdf1cb06 (diff)
downloadwebtest-75489af8324dc4c33d1c6a3dde8ce29a9a034e08.tar.gz
reset values of select multiple
Diffstat (limited to 'webtest/forms.py')
-rw-r--r--webtest/forms.py19
1 files changed, 7 insertions, 12 deletions
diff --git a/webtest/forms.py b/webtest/forms.py
index d444229..e64c6f7 100644
--- a/webtest/forms.py
+++ b/webtest/forms.py
@@ -167,7 +167,7 @@ class MultipleSelect(Field):
self.options = []
# Undetermined yet:
self.selectedIndices = []
- self._forced_values = []
+ self._forced_values = NoValue
def force_value(self, values):
"""Like setting a value, except forces it (even for, say, hidden
@@ -215,21 +215,16 @@ class MultipleSelect(Field):
', '.join([repr(o) for o, c, t in self.options])))
def value__get(self):
- selected_values = []
- if self.selectedIndices:
- selected_values = [self.options[i][0]
- for i in self.selectedIndices]
- elif not self._forced_values:
+ if self._forced_values is not NoValue:
+ return self._forced_values
+ elif self.selectedIndices:
+ return [self.options[i][0] for i in self.selectedIndices]
+ else:
selected_values = []
for option, checked, text in self.options:
if checked:
selected_values.append(option)
- if self._forced_values:
- selected_values += self._forced_values
-
- if self.options and (not selected_values):
- selected_values = None
- return selected_values
+ return selected_values if selected_values else None
value = property(value__get, value__set)