From 69629bc99361a3e13e0fbcdcd0c8ceeec5244dc8 Mon Sep 17 00:00:00 2001 From: Rogelio Mita Date: Mon, 08 Jul 2013 21:41:35 +0000 Subject: poll completion behavior --- diff --git a/CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py b/CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py index 0358a28..c375822 100644 --- a/CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py +++ b/CeibalEncuesta/gtk2/CeibalEncuesta/CeibalEncuesta.py @@ -61,6 +61,15 @@ gobject.threads_init() gdk.threads_init() +class Encuesta(object): + + def __init__(self): + self.finalizada = False + + def finalizar(self): + self.finalizada = True + + class CeibalEncuesta(gtk.Window): __gsignals__ = { @@ -332,6 +341,8 @@ class CeibalEncuesta(gtk.Window): self.out_dict[encuestado] = {} self.panel.update({}) + self.panel.toolbar_encuesta.encuesta_actual = Encuesta() + self.menu_bar.hide() self.infowidget.hide() self.infowidget.set_encuestado(encuestado) diff --git a/CeibalEncuesta/gtk2/CeibalEncuesta/Widgets.py b/CeibalEncuesta/gtk2/CeibalEncuesta/Widgets.py index 27df02b..75e37d3 100644 --- a/CeibalEncuesta/gtk2/CeibalEncuesta/Widgets.py +++ b/CeibalEncuesta/gtk2/CeibalEncuesta/Widgets.py @@ -177,10 +177,7 @@ class Panel(gtk.Paned): else: self.toolbar_encuesta.anterior.show_now() - if index_visible == grupos.index(grupos[-1]): - self.toolbar_encuesta.siguiente.hide() - else: - self.toolbar_encuesta.siguiente.show_now() + self.toolbar_encuesta.siguiente.show_now() self.toolbar_encuesta.siguiente.emit("update_status", self) @@ -245,6 +242,23 @@ class Panel(gtk.Paned): self._window.get_vadjustment().set_value(0) elif accion == "Siguiente" and self.toolbar_encuesta.siguiente.active: + if index_visible == len(grupos) - 1: + self.toolbar_encuesta.encuesta_actual.finalizar() + map(self.__hide_groups, grupos) + + self.toolbar_encuesta.anterior.hide() + self.toolbar_encuesta.siguiente.hide() + + align = gtk.Alignment(0.5, 0, 0, 0) + label = gtk.Label("Encuesta finalizada") + pangoFont = pango.FontDescription(QUESTION_FONT_SIZE) + label.modify_font(pangoFont) + align.add(label) + self.box_encuesta.pack_start(align, False, False, 0) + align.show_all() + + return + if index_visible < len(grupos)-1: map(self.__hide_groups, grupos) map(self.__show_groups, [grupos[index_visible + 1]]) @@ -1663,6 +1677,7 @@ class ToolbarEncuesta(gtk.HBox): gtk.HBox.__init__(self) + self.encuesta_actual = None self.anterior = PageButton( "", img=PREV_PAGE_ACTIVE, @@ -1699,7 +1714,7 @@ class ToolbarEncuesta(gtk.HBox): self.emit("accion", widget.accion) panel = self.get_toplevel().panel - if len(panel.visible_questions()) == 0: + if not self.encuesta_actual.finalizada and len(panel.visible_questions()) == 0: self.__button_clicked(widget) diff --git a/CeibalEncuesta/gtk2/CeibalEncuesta/tests.py b/CeibalEncuesta/gtk2/CeibalEncuesta/tests.py index c804742..e88c306 100644 --- a/CeibalEncuesta/gtk2/CeibalEncuesta/tests.py +++ b/CeibalEncuesta/gtk2/CeibalEncuesta/tests.py @@ -3,7 +3,7 @@ import os import shutil import glob -from CeibalEncuesta import CeibalEncuesta +from CeibalEncuesta import CeibalEncuesta, Encuesta WORKPATH = 'test_files' TEMPPATH = os.path.join(WORKPATH, "fixture_enc_simple.encuesta") @@ -71,5 +71,18 @@ class NoBorraTempAlExportarTest(unittest.TestCase): os.remove(WORKPATH + '/' + self.fixture_tmp) +class ComportamientoFinalizar(unittest.TestCase): + """Este test hace referencia al issue #4144""" + + def test_queda_finalizada_al_finalizar(self): + + encuesta = Encuesta() + self.assertFalse(encuesta.finalizada) + + encuesta.finalizar() + + self.assertTrue(encuesta.finalizada) + + if __name__ == '__main__': unittest.main() diff --git a/CeibalEncuesta/gtk3/CeibalEncuesta/CeibalEncuesta.py b/CeibalEncuesta/gtk3/CeibalEncuesta/CeibalEncuesta.py index 3d1fe58..3ef427b 100755 --- a/CeibalEncuesta/gtk3/CeibalEncuesta/CeibalEncuesta.py +++ b/CeibalEncuesta/gtk3/CeibalEncuesta/CeibalEncuesta.py @@ -72,6 +72,16 @@ context.add_provider_for_screen( GObject.threads_init() Gdk.threads_init() + +class Encuesta(object): + + def __init__(self): + self.finalizada = False + + def finalizar(self): + self.finalizada = True + + class CeibalEncuesta(Gtk.Window): def __init__(self): @@ -327,6 +337,8 @@ class CeibalEncuesta(Gtk.Window): self.out_dict[encuestado] = {} self.panel.update({}) + self.panel.toolbar_encuesta.encuesta_actual = Encuesta() + self.menu_bar.hide() self.infowidget.hide() self.infowidget.set_encuestado(encuestado) diff --git a/CeibalEncuesta/gtk3/CeibalEncuesta/Widgets.py b/CeibalEncuesta/gtk3/CeibalEncuesta/Widgets.py index 4e46b24..1ea40a5 100755 --- a/CeibalEncuesta/gtk3/CeibalEncuesta/Widgets.py +++ b/CeibalEncuesta/gtk3/CeibalEncuesta/Widgets.py @@ -179,10 +179,7 @@ class Panel(Gtk.Paned): else: self.toolbar_encuesta.anterior.show_now() - if index_visible == grupos.index(grupos[-1]): - self.toolbar_encuesta.siguiente.hide() - else: - self.toolbar_encuesta.siguiente.show_now() + self.toolbar_encuesta.siguiente.show_now() self.toolbar_encuesta.siguiente.emit("update_status", self) @@ -246,6 +243,24 @@ class Panel(Gtk.Paned): self._window.get_vadjustment().set_value(0) elif accion == "Siguiente" and self.toolbar_encuesta.siguiente.active: + if index_visible == len(grupos) - 1: + self.toolbar_encuesta.encuesta_actual.finalizar() + map(self.__hide_groups, grupos) + + self.toolbar_encuesta.anterior.hide() + self.toolbar_encuesta.siguiente.hide() + + align = Gtk.Alignment() + align.set(0.5, 0, 0, 0) + label = Gtk.Label("Encuesta finalizada") + pangoFont = Pango.FontDescription(QUESTION_FONT_SIZE) + label.modify_font(pangoFont) + align.add(label) + self.box_encuesta.pack_start(align, True, False, 0) + align.show_all() + + return + if index_visible < len(grupos)-1: map(self.__hide_groups, grupos) map(self.__show_groups, [grupos[index_visible + 1]]) @@ -1651,6 +1666,7 @@ class ToolbarEncuesta(Gtk.HBox): Gtk.HBox.__init__(self) + self.encuesta_actual = None self.anterior = PageButton( "", img=PREV_PAGE_ACTIVE, @@ -1688,7 +1704,7 @@ class ToolbarEncuesta(Gtk.HBox): self.emit("accion", widget.accion) panel = self.get_toplevel().panel - if len(panel.visible_questions()) == 0: + if not self.encuesta_actual.finalizada and len(panel.visible_questions()) == 0: self.__button_clicked(widget) diff --git a/CeibalEncuesta/gtk3/CeibalEncuesta/tests.py b/CeibalEncuesta/gtk3/CeibalEncuesta/tests.py index c804742..e88c306 100644 --- a/CeibalEncuesta/gtk3/CeibalEncuesta/tests.py +++ b/CeibalEncuesta/gtk3/CeibalEncuesta/tests.py @@ -3,7 +3,7 @@ import os import shutil import glob -from CeibalEncuesta import CeibalEncuesta +from CeibalEncuesta import CeibalEncuesta, Encuesta WORKPATH = 'test_files' TEMPPATH = os.path.join(WORKPATH, "fixture_enc_simple.encuesta") @@ -71,5 +71,18 @@ class NoBorraTempAlExportarTest(unittest.TestCase): os.remove(WORKPATH + '/' + self.fixture_tmp) +class ComportamientoFinalizar(unittest.TestCase): + """Este test hace referencia al issue #4144""" + + def test_queda_finalizada_al_finalizar(self): + + encuesta = Encuesta() + self.assertFalse(encuesta.finalizada) + + encuesta.finalizar() + + self.assertTrue(encuesta.finalizada) + + if __name__ == '__main__': unittest.main() -- cgit v0.9.1