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-11-08 17:52:58 (GMT)
committer Rogelio Mita <rogeliomita@activitycentral.com>2013-11-08 17:52:58 (GMT)
commit536a79af2009ddf7079c29a5be10eda79516268f (patch)
tree3a61901a62da4505d4ee2e150e711347a4bc41d7
parentc3bf0f9d2c734a04d628c255d3cce5bdc6065198 (diff)
parent1d58500545dc5248f5636a8b1c0d0718f62b1995 (diff)
Issue 4843: Fixed
-rw-r--r--CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py86
-rw-r--r--CeibalEncuesta/gtk2/CeibalEncuesta/Globales.py3
-rw-r--r--CeibalEncuesta/gtk2/CeibalEncuesta/tests.py9
3 files changed, 55 insertions, 43 deletions
diff --git a/CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py b/CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py
index 12897a9..8f898c7 100644
--- a/CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py
+++ b/CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py
@@ -281,22 +281,19 @@ class CeibalEncuesta(gtk.Window):
encuestado = user.strip()
- # Entrada para encuestado
- if not encuestado in self.out_dict.keys():
- self.out_dict[encuestado] = {}
-
# Entrada para grupo
- if not self.out_dict[encuestado].get(indice_grupo, False):
- self.out_dict[encuestado][indice_grupo] = {}
+ encuestado_id = Encuestado(encuestado).get_id()
+ if not self.out_dict[encuestado_id].get(indice_grupo, False):
+ self.out_dict[encuestado_id][indice_grupo] = {}
# Entrada para pregunta
- if not self.out_dict[encuestado][indice_grupo].get("fields", False):
- self.out_dict[encuestado][indice_grupo]["fields"] = {}
+ if not self.out_dict[encuestado_id][indice_grupo].get("fields", False):
+ self.out_dict[encuestado_id][indice_grupo]["fields"] = {}
- self.out_dict[encuestado][indice_grupo]["name"] = grupo_name
+ self.out_dict[encuestado_id][indice_grupo]["name"] = grupo_name
+
+ self.out_dict[encuestado_id][indice_grupo]["fields"][indice_pregunta] = dict_pregunta
- self.out_dict[encuestado][indice_grupo]["fields"][indice_pregunta] = dict_pregunta
-
def save_text(self):
self.__save_json()
@@ -315,22 +312,23 @@ class CeibalEncuesta(gtk.Window):
encuestado = user.strip()
+ encuestado_id = Encuestado(encuestado).get_id()
# Entrada para encuestado
- if not encuestado in self.out_dict.keys():
- self.out_dict[encuestado] = {}
+ if not encuestado_id in self.out_dict.keys():
+ self.out_dict[encuestado_id] = {}
# Entrada para grupo
- if not self.out_dict[encuestado].get(indice_grupo, False):
- self.out_dict[encuestado][indice_grupo] = {}
+ if not self.out_dict[encuestado_id].get(indice_grupo, False):
+ self.out_dict[encuestado_id][indice_grupo] = {}
# Entrada para pregunta
- if not self.out_dict[encuestado][indice_grupo].get("fields", False):
- self.out_dict[encuestado][indice_grupo]["fields"] = {}
+ if not self.out_dict[encuestado_id][indice_grupo].get("fields", False):
+ self.out_dict[encuestado_id][indice_grupo]["fields"] = {}
+
+ self.out_dict[encuestado_id][indice_grupo]["name"] = grupo_name
- self.out_dict[encuestado][indice_grupo]["name"] = grupo_name
+ self.out_dict[encuestado_id][indice_grupo]["fields"][indice_pregunta] = dict_pregunta
- self.out_dict[encuestado][indice_grupo]["fields"][indice_pregunta] = dict_pregunta
-
self.__save_json()
def __new_selection(self, widget, encuestado):
@@ -340,7 +338,8 @@ class CeibalEncuesta(gtk.Window):
grupo = GrupoDeEncuestados()
encuestado_str = encuestado
- tipo = Encuestado(encuestado_str).get_tipo_grupo()
+ encuestado = Encuestado(encuestado_str)
+ tipo = encuestado.get_tipo_grupo()
grupo.set_tipo(int(tipo))
encuesta_actual = Encuesta()
encuesta_actual.set_grupo(grupo)
@@ -355,18 +354,19 @@ class CeibalEncuesta(gtk.Window):
self.out_dict = {}
self.out_dict = enc["groups"]
- if self.out_dict.get(encuestado, False):
- self.panel.update(self.out_dict[encuestado])
+ encuestado_id = encuestado.get_id()
+ if self.out_dict.get(encuestado_id, False):
+ self.panel.update(self.out_dict[encuestado_id])
else:
- self.out_dict[encuestado] = {}
+ self.out_dict[encuestado_id] = {}
self.panel.update({})
self.panel.toolbar_encuesta.encuesta_actual = self.encuesta_actual
self.menu_bar.hide()
self.infowidget.hide()
- self.infowidget.set_encuestado(encuestado)
+ self.infowidget.set_encuestado(encuestado_id)
combo_box = getattr(self.panel.lista, "combo", None)
if combo_box:
@@ -435,13 +435,13 @@ class CeibalEncuesta(gtk.Window):
### Asegurandose de que se haya guardado toda la información.
self.copy_to_Documents()
-
+
import json
import codecs
archivo = codecs.open(self.path, "r", "utf-8")
enc = json.JSONDecoder("utf-8").decode(archivo.read())
-
+
### Cabecera para lista de encuestados.
cabecera = enc["encuestados"][0]
@@ -450,7 +450,7 @@ class CeibalEncuesta(gtk.Window):
### Encuestados.
encuestados = enc["encuestados"][1:]
-
+
### Respuestas
respuestas = enc["groups"]
@@ -481,32 +481,32 @@ class CeibalEncuesta(gtk.Window):
if not answers.get("finalizada", None):
continue
-
+
if answers.get("finalizada", None):
del answers['finalizada']
for group_order, fields in answers.iteritems():
for field_order, field_data in fields['fields'].iteritems():
-
+
if field_data.get('img', False):
del field_data['img']
-
+
selected = field_data.get('default', [])
field_data['answer'] = {}
-
+
if len(selected):
for option_id, value in field_data.get("options", {}).iteritems():
if option_id in selected:
selected_opt = field_data['options'][option_id]
-
+
if "Image" in field_data['widget_type']:
del selected_opt['img']
-
+
elif "TextInput" in field_data['widget_type']:
new_text = value.get("newtext", "")
value['text'] = new_text
del value['newtext']
-
+
field_data['answer'].update({"%s" % option_id: selected_opt})
for key_to_del in ['dependence', 'options', 'default']:
@@ -531,10 +531,10 @@ class CeibalEncuesta(gtk.Window):
poll_id = enc.get("poll_id", "")
hash = int(time.time() * 1000)
path = os.path.join(chosen_path, "%s_%s.poll_result" % (poll_id, hash))
-
+
try:
archivo = open(path, "w")
-
+
except IOError, ioe:
dialog = My_Alert_Dialog(
parent_window = self,
@@ -568,7 +568,7 @@ class CeibalEncuesta(gtk.Window):
dialog = My_Alert_Dialog(
parent_window=self,
label="Encuesta Exportada Correctamente.")
-
+
dialog.run()
dialog.destroy()
@@ -747,21 +747,21 @@ class CeibalEncuesta(gtk.Window):
"poll_id": poll_id,
"pollster_id": pollster_id,
"pollster_username": pollster_username}
-
+
self.poll_id = getattr(self, "poll_id", poll_id)
self.path = os.path.join(os.path.dirname(self.path), "%s.encuesta" % self.poll_id)
import json
archivo = open(self.path, "w")
- archivo.write(json.dumps(salida))
+ archivo.write(json.dumps(salida, indent=4))
archivo.close()
def copy_to_Documents(self):
-
+
self.__save_json()
-
+
final_path = os.path.join(WORKPATH, os.path.basename(self.path))
-
+
import shutil
shutil.copyfile(self.path, final_path)
diff --git a/CeibalEncuesta/gtk2/CeibalEncuesta/Globales.py b/CeibalEncuesta/gtk2/CeibalEncuesta/Globales.py
index 6fe899e..a679c01 100644
--- a/CeibalEncuesta/gtk2/CeibalEncuesta/Globales.py
+++ b/CeibalEncuesta/gtk2/CeibalEncuesta/Globales.py
@@ -184,6 +184,9 @@ class Encuestado(object):
tipo_grupo = second.split()[3]
return int(tipo_grupo)
+ def get_id(self):
+ return self.encuestado_str.decode("utf-8")
+
class GrupoDeEncuestados(object):
diff --git a/CeibalEncuesta/gtk2/CeibalEncuesta/tests.py b/CeibalEncuesta/gtk2/CeibalEncuesta/tests.py
index a589fe9..8b1c972 100644
--- a/CeibalEncuesta/gtk2/CeibalEncuesta/tests.py
+++ b/CeibalEncuesta/gtk2/CeibalEncuesta/tests.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
import unittest
import os
import shutil
@@ -131,6 +132,14 @@ class EncuestadoTests(unittest.TestCase):
tipo_grupo = encuestado.get_tipo_grupo()
self.assertEqual(1, tipo_grupo)
+ def test_get_id(self):
+ encuestado_str = "1101236 Río negro A 236 2 A 1 0"
+
+ encuestado = Encuestado(encuestado_str)
+ encuestado_id = encuestado.get_id()
+
+ expected = encuestado_str
+ self.assertEqual(expected, encuestado_id)
if __name__ == '__main__':
unittest.main()