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 20:23:41 (GMT)
committer Rogelio Mita <rogeliomita@activitycentral.com>2013-11-08 20:23:41 (GMT)
commitf0af66846834fd2bb78238778d1eda83b9bcab50 (patch)
treee305b502810e1d91abb2df1c9c43423fc6367574
parent046953eb2bbac89fc558460eed12085c48c1d6c1 (diff)
parentf74df6d308bbf57467de3210d8e78289053e5721 (diff)
Merge branch 'DEV'v4.26
-rw-r--r--CeibalEncuesta/gtk2/CeibalEncuesta.activity/activity/activity.info2
-rw-r--r--CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py89
-rw-r--r--CeibalEncuesta/gtk2/CeibalEncuesta/Globales.py15
-rw-r--r--CeibalEncuesta/gtk2/CeibalEncuesta/tests.py21
-rw-r--r--CeibalEncuesta/gtk2/installers/CeibalEncuesta-4.26.xobin0 -> 285594 bytes
-rw-r--r--CeibalEncuesta/gtk2/installers/CeibalEncuesta_Gtk2_4.26_Installer.zipbin0 -> 218024 bytes
-rw-r--r--CeibalEncuesta/gtk2/setup.py2
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
new file mode 100644
index 0000000..ce86e80
--- /dev/null
+++ b/CeibalEncuesta/gtk2/installers/CeibalEncuesta-4.26.xo
Binary files differ
diff --git a/CeibalEncuesta/gtk2/installers/CeibalEncuesta_Gtk2_4.26_Installer.zip b/CeibalEncuesta/gtk2/installers/CeibalEncuesta_Gtk2_4.26_Installer.zip
new file mode 100644
index 0000000..16aa003
--- /dev/null
+++ b/CeibalEncuesta/gtk2/installers/CeibalEncuesta_Gtk2_4.26_Installer.zip
Binary files differ
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