Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRogelio Mita <rogeliomita@activitycentral.com>2013-06-26 19:38:40 (GMT)
committer Rogelio Mita <rogeliomita@activitycentral.com>2013-06-26 20:48:44 (GMT)
commit34a0ae4ae48d6df490eeb581a7f072545b3595d5 (patch)
tree7e3d122543006c25274296368d547546ad9001e7
parente1462211a01709594bb5bed6ffa758380c72ec9a (diff)
BugFix: wrong validation in dependence creation
-rw-r--r--webapp/polls/models.py35
-rw-r--r--webapp/polls/views.py6
2 files changed, 28 insertions, 13 deletions
diff --git a/webapp/polls/models.py b/webapp/polls/models.py
index b264b08..ba8f9a5 100644
--- a/webapp/polls/models.py
+++ b/webapp/polls/models.py
@@ -675,15 +675,23 @@ class Field(AbstractObject, ComponentStructure):
self.widget_type = widget_type
- def __get_field_offset(self, structure):
- field_count = 0
- offset = 0
+ def get_field_offset(self, structure):
+ inc_count = 0
+
+ stop = False
for group in structure.groups:
for field in group.fields:
- offset = field_count + int(field.order)
if field.name == self.name:
- return offset
- field_count = len(group.fields)
+ stop = True
+ break
+ else:
+ inc_count += 1
+
+ if stop:
+ break
+
+ offset = inc_count
+
return offset
def show_dependence(self):
@@ -727,7 +735,7 @@ class Field(AbstractObject, ComponentStructure):
self.dependence.get('values', {}))
if len(options) and has_dependence:
prev_options = []
- field_offset = self.__get_field_offset(temporary_structure)
+ field_offset = self.get_field_offset(temporary_structure)
for i in range(0, field_offset):
prev_options.extend(options.get(str(i), []))
prev_options_ids = [opt.id for opt in prev_options]
@@ -740,7 +748,11 @@ class Field(AbstractObject, ComponentStructure):
# TODO: Replace ('OR', 'AND', '') for CONSTANT
valid_value = value and value not in ('OR', 'AND', '')
if valid_value and value not in prev_options_ids:
- msg.append(str(value))
+ try:
+ msg.append(str(value))
+ except:
+ msg.append(
+ "'%s'" % value.encode('ascii', 'ignore'))
if len(msg):
self.errors += [
@@ -928,13 +940,10 @@ class Structure(AbstractObject, ComponentStructure):
def get_enumerate_options(self, order=None):
options = {}
- field_count = 0
- order = 0
for group in self.groups:
for field in group.fields:
- order = field_count + int(field.order)
- options.update({"%s" % order: field.options})
- field_count = len(group.fields)
+ field_offset = field.get_field_offset(self)
+ options.update({"%s" % field_offset: field.options})
return options
diff --git a/webapp/polls/views.py b/webapp/polls/views.py
index 10ed773..0e62bcd 100644
--- a/webapp/polls/views.py
+++ b/webapp/polls/views.py
@@ -255,6 +255,12 @@ class StructureFormView(TemplateView):
else:
structure.save_image_options(tmp=True)
context.update({'errors': structure.errors})
+ messages.add_message(
+ self.request,
+ messages.ERROR,
+ u'Hubo errores de validaciĆ³n, '
+ 'para guardar asegurese de corregirlos.'
+ )
context.update({'structure': structure})
return self.render_to_response(context)