diff options
author | Rogelio Mita <rogeliomita@activitycentral.com> | 2013-11-08 17:52:58 (GMT) |
---|---|---|
committer | Rogelio Mita <rogeliomita@activitycentral.com> | 2013-11-08 17:52:58 (GMT) |
commit | 536a79af2009ddf7079c29a5be10eda79516268f (patch) | |
tree | 3a61901a62da4505d4ee2e150e711347a4bc41d7 | |
parent | c3bf0f9d2c734a04d628c255d3cce5bdc6065198 (diff) | |
parent | 1d58500545dc5248f5636a8b1c0d0718f62b1995 (diff) |
Issue 4843: Fixed
-rw-r--r-- | CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py | 86 | ||||
-rw-r--r-- | CeibalEncuesta/gtk2/CeibalEncuesta/Globales.py | 3 | ||||
-rw-r--r-- | CeibalEncuesta/gtk2/CeibalEncuesta/tests.py | 9 |
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() |