diff options
author | Rogelio Mita <rogeliomita@activitycentral.com> | 2013-11-08 20:23:41 (GMT) |
---|---|---|
committer | Rogelio Mita <rogeliomita@activitycentral.com> | 2013-11-08 20:23:41 (GMT) |
commit | f0af66846834fd2bb78238778d1eda83b9bcab50 (patch) | |
tree | e305b502810e1d91abb2df1c9c43423fc6367574 | |
parent | 046953eb2bbac89fc558460eed12085c48c1d6c1 (diff) | |
parent | f74df6d308bbf57467de3210d8e78289053e5721 (diff) |
Merge branch 'DEV'v4.26
-rw-r--r-- | CeibalEncuesta/gtk2/CeibalEncuesta.activity/activity/activity.info | 2 | ||||
-rw-r--r-- | CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py | 89 | ||||
-rw-r--r-- | CeibalEncuesta/gtk2/CeibalEncuesta/Globales.py | 15 | ||||
-rw-r--r-- | CeibalEncuesta/gtk2/CeibalEncuesta/tests.py | 21 | ||||
-rw-r--r-- | CeibalEncuesta/gtk2/installers/CeibalEncuesta-4.26.xo | bin | 0 -> 285594 bytes | |||
-rw-r--r-- | CeibalEncuesta/gtk2/installers/CeibalEncuesta_Gtk2_4.26_Installer.zip | bin | 0 -> 218024 bytes | |||
-rw-r--r-- | CeibalEncuesta/gtk2/setup.py | 2 |
7 files changed, 82 insertions, 47 deletions
diff --git a/CeibalEncuesta/gtk2/CeibalEncuesta.activity/activity/activity.info b/CeibalEncuesta/gtk2/CeibalEncuesta.activity/activity/activity.info index cc7f54e..95d42e5 100644 --- a/CeibalEncuesta/gtk2/CeibalEncuesta.activity/activity/activity.info +++ b/CeibalEncuesta/gtk2/CeibalEncuesta.activity/activity/activity.info @@ -3,6 +3,6 @@ name = CeibalEncuesta license = GPLv2+ icon = ceibal exec = sugar-activity CeibalEncuestaActivity.CeibalEncuesta -activity_version = 4.24 +activity_version = 4.26 bundle_id = org.laptop.CeibalEncuesta diff --git a/CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py b/CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py index 50f0aa2..8f898c7 100644 --- a/CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py +++ b/CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py @@ -37,7 +37,7 @@ from Widgets import My_FileChooser from Widgets import My_Alert_Dialog, My_Alert_Dialog3 from Widgets import Wizard -from Globales import Encuesta, GrupoDeEncuestados +from Globales import Encuesta, GrupoDeEncuestados, Encuestado import Globales as G HOME = os.environ["HOME"] @@ -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): @@ -339,7 +337,9 @@ class CeibalEncuesta(gtk.Window): """ grupo = GrupoDeEncuestados() - tipo = encuestado.split()[5] + encuestado_str = encuestado + encuestado = Encuestado(encuestado_str) + tipo = encuestado.get_tipo_grupo() grupo.set_tipo(int(tipo)) encuesta_actual = Encuesta() encuesta_actual.set_grupo(grupo) @@ -354,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: @@ -434,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] @@ -449,7 +450,7 @@ class CeibalEncuesta(gtk.Window): ### Encuestados. encuestados = enc["encuestados"][1:] - + ### Respuestas respuestas = enc["groups"] @@ -480,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']: @@ -530,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, @@ -567,7 +568,7 @@ class CeibalEncuesta(gtk.Window): dialog = My_Alert_Dialog( parent_window=self, label="Encuesta Exportada Correctamente.") - + dialog.run() dialog.destroy() @@ -746,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 4e3a259..a679c01 100644 --- a/CeibalEncuesta/gtk2/CeibalEncuesta/Globales.py +++ b/CeibalEncuesta/gtk2/CeibalEncuesta/Globales.py @@ -173,6 +173,21 @@ class Encuesta(object): self.grupo = grupo +class Encuestado(object): + + def __init__(self, encuestado_str): + self.encuestado_str = encuestado_str + + def get_tipo_grupo(self): + first = self.encuestado_str.split()[:-5] + second = self.encuestado_str[len(" ".join(first)) + 1:] + tipo_grupo = second.split()[3] + return int(tipo_grupo) + + def get_id(self): + return self.encuestado_str.decode("utf-8") + + class GrupoDeEncuestados(object): TIPO_SUSTITUTO = 2 diff --git a/CeibalEncuesta/gtk2/CeibalEncuesta/tests.py b/CeibalEncuesta/gtk2/CeibalEncuesta/tests.py index 8e985ed..8b1c972 100644 --- a/CeibalEncuesta/gtk2/CeibalEncuesta/tests.py +++ b/CeibalEncuesta/gtk2/CeibalEncuesta/tests.py @@ -1,10 +1,11 @@ +# -*- coding: utf-8 -*- import unittest import os import shutil import glob from CeibalEncuesta import CeibalEncuesta -from Globales import Encuesta, GrupoDeEncuestados +from Globales import Encuesta, GrupoDeEncuestados, Encuestado WORKPATH = 'test_files' TEMPPATH = os.path.join(WORKPATH, "fixture_enc_simple.encuesta") @@ -122,5 +123,23 @@ class EncuestaTests(unittest.TestCase): self.assertEqual(encuesta.grupo.get_tipo(), 'original') +class EncuestadoTests(unittest.TestCase): + + def test_get_tipo_grupo(self): + encuestado_str = "1101236 MONTEVIDEO A 236 2 A 1 0" + + encuestado = Encuestado(encuestado_str) + 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() diff --git a/CeibalEncuesta/gtk2/installers/CeibalEncuesta-4.26.xo b/CeibalEncuesta/gtk2/installers/CeibalEncuesta-4.26.xo Binary files differnew file mode 100644 index 0000000..ce86e80 --- /dev/null +++ b/CeibalEncuesta/gtk2/installers/CeibalEncuesta-4.26.xo diff --git a/CeibalEncuesta/gtk2/installers/CeibalEncuesta_Gtk2_4.26_Installer.zip b/CeibalEncuesta/gtk2/installers/CeibalEncuesta_Gtk2_4.26_Installer.zip Binary files differnew file mode 100644 index 0000000..16aa003 --- /dev/null +++ b/CeibalEncuesta/gtk2/installers/CeibalEncuesta_Gtk2_4.26_Installer.zip diff --git a/CeibalEncuesta/gtk2/setup.py b/CeibalEncuesta/gtk2/setup.py index 6fc938a..665c916 100644 --- a/CeibalEncuesta/gtk2/setup.py +++ b/CeibalEncuesta/gtk2/setup.py @@ -7,7 +7,7 @@ import commands from distutils.core import setup -APP_VERSION = "4.24" +APP_VERSION = "4.26" USER_BASE = site.USER_BASE |