chartManD commited on
Commit
3f5ed5b
·
1 Parent(s): b46f835

Refacotizacion de admin sesion y vista de informacion basica ne detalles para Sort

Browse files
Files changed (14) hide show
  1. tecnicas/controllers/__init__.py +11 -10
  2. tecnicas/controllers/views_controller/session_management/{details_cata_controller.py → details/details_cata_controller.py} +0 -0
  3. tecnicas/controllers/views_controller/session_management/{details_controller.py → details/details_controller.py} +0 -0
  4. tecnicas/controllers/views_controller/session_management/{details_escala_controller.py → details/details_escala_controller.py} +3 -6
  5. tecnicas/controllers/views_controller/session_management/{details_pf_controller.py → details/details_pf_controller.py} +2 -7
  6. tecnicas/controllers/views_controller/session_management/{details_rata_controller.py → details/details_rata_controller.py} +0 -5
  7. tecnicas/controllers/views_controller/session_management/details/details_sort_controller.py +32 -0
  8. tecnicas/controllers/views_controller/session_management/{monitor_controller.py → monitor/monitor_controller.py} +1 -2
  9. tecnicas/controllers/views_controller/session_management/{monitor_escalas_controller.py → monitor/monitor_escalas_controller.py} +0 -0
  10. tecnicas/controllers/views_controller/session_management/{monitor_pf_controller.py → monitor/monitor_pf_controller.py} +0 -3
  11. tecnicas/controllers/views_controller/session_management/{monitor_rata_controller.py → monitor/monitor_rata_controller.py} +0 -0
  12. tecnicas/templates/tecnicas/manage_sesions/details-session-cata.html +4 -3
  13. tecnicas/templates/tecnicas/manage_sesions/details-session-sort.html +202 -0
  14. tecnicas/views/sessions_management/session_details.py +7 -2
tecnicas/controllers/__init__.py CHANGED
@@ -23,16 +23,17 @@ from .views_controller.create_session.panels_create.panel_create_cata_controller
23
  from .views_controller.create_session.panels_create.panel_create_pf_controller import PanelCreatePFController
24
  from .views_controller.create_session.panels_create.panel_create_sort_controller import PanelCreateSortController
25
 
26
- from .views_controller.session_management.details_controller import DetallesController
27
- from .views_controller.session_management.details_escala_controller import DetallesEscalasController
28
- from .views_controller.session_management.details_rata_controller import DetallesRATAController
29
- from .views_controller.session_management.details_cata_controller import DetallesCATAController
30
- from .views_controller.session_management.details_pf_controller import DetallesPFController
31
-
32
- from .views_controller.session_management.monitor_controller import MonitorController
33
- from .views_controller.session_management.monitor_escalas_controller import MonitorEscalasController
34
- from .views_controller.session_management.monitor_rata_controller import MonitorRATAController
35
- from .views_controller.session_management.monitor_pf_controller import MonitorPFController
 
36
 
37
  from .views_controller.sessions_tester.login_session_tester_controller import LoginSessionTesterController
38
  from .views_controller.sessions_tester.list_sessions_tester_controller import ListSessionsTesterController
 
23
  from .views_controller.create_session.panels_create.panel_create_pf_controller import PanelCreatePFController
24
  from .views_controller.create_session.panels_create.panel_create_sort_controller import PanelCreateSortController
25
 
26
+
27
+ from .views_controller.session_management.details.details_controller import DetallesController
28
+ from .views_controller.session_management.details.details_escala_controller import DetallesEscalasController
29
+ from .views_controller.session_management.details.details_rata_controller import DetallesRATAController
30
+ from .views_controller.session_management.details.details_cata_controller import DetallesCATAController
31
+ from .views_controller.session_management.details.details_pf_controller import DetallesPFController
32
+ from .views_controller.session_management.details.details_sort_controller import DetallesSortController
33
+
34
+ from .views_controller.session_management.monitor.monitor_escalas_controller import MonitorEscalasController
35
+ from .views_controller.session_management.monitor.monitor_rata_controller import MonitorRATAController
36
+ from .views_controller.session_management.monitor.monitor_pf_controller import MonitorPFController
37
 
38
  from .views_controller.sessions_tester.login_session_tester_controller import LoginSessionTesterController
39
  from .views_controller.sessions_tester.list_sessions_tester_controller import ListSessionsTesterController
tecnicas/controllers/views_controller/session_management/{details_cata_controller.py → details/details_cata_controller.py} RENAMED
File without changes
tecnicas/controllers/views_controller/session_management/{details_controller.py → details/details_controller.py} RENAMED
File without changes
tecnicas/controllers/views_controller/session_management/{details_escala_controller.py → details/details_escala_controller.py} RENAMED
@@ -11,13 +11,10 @@ Encabezados de como deben de aparecer los datos juntos
11
  | Repeticion | Codigo Producto | Catador | P1 | P2 | P3 | Pn |
12
 
13
  '''
14
- from django.http import HttpRequest
15
- from django.shortcuts import render, redirect
16
- from django.urls import reverse
17
- from tecnicas.models import SesionSensorial, Presentador, Participacion, Calificacion, Escala
18
- from tecnicas.controllers import DatoController, PalabrasController, ParticipacionController
19
  from .details_controller import DetallesController
20
- from tecnicas.utils import defaultdict_to_dict, controller_error
21
  from collections import defaultdict
22
 
23
 
 
11
  | Repeticion | Codigo Producto | Catador | P1 | P2 | P3 | Pn |
12
 
13
  '''
14
+ from tecnicas.models import SesionSensorial, Calificacion, Escala
15
+ from tecnicas.controllers import DatoController, PalabrasController
 
 
 
16
  from .details_controller import DetallesController
17
+ from tecnicas.utils import defaultdict_to_dict
18
  from collections import defaultdict
19
 
20
 
tecnicas/controllers/views_controller/session_management/{details_pf_controller.py → details/details_pf_controller.py} RENAMED
@@ -1,8 +1,5 @@
1
- from django.http import HttpRequest
2
- from django.shortcuts import redirect
3
- from django.urls import reverse
4
- from tecnicas.models import SesionSensorial, Presentador, Participacion, ListaPalabras, Calificacion, Catador
5
- from tecnicas.controllers import ParticipacionController, DatoController
6
  from tecnicas.utils import defaultdict_to_dict
7
  from .details_controller import DetallesController
8
  from collections import defaultdict
@@ -20,9 +17,7 @@ class DetallesPFController(DetallesController):
20
  self.context = {
21
  "sesion": self.session,
22
  "use_technique": technique,
23
- "existen_calificaciones": False,
24
  "tipo_escala": technique.escala_tecnica.id_tipo_escala.nombre_escala,
25
- "valor_max": technique.escala_tecnica.longitud,
26
  "repeticiones_max": technique.repeticiones_max - 2
27
  }
28
 
 
1
+ from tecnicas.models import SesionSensorial, ListaPalabras, Calificacion, Catador
2
+ from tecnicas.controllers import DatoController
 
 
 
3
  from tecnicas.utils import defaultdict_to_dict
4
  from .details_controller import DetallesController
5
  from collections import defaultdict
 
17
  self.context = {
18
  "sesion": self.session,
19
  "use_technique": technique,
 
20
  "tipo_escala": technique.escala_tecnica.id_tipo_escala.nombre_escala,
 
21
  "repeticiones_max": technique.repeticiones_max - 2
22
  }
23
 
tecnicas/controllers/views_controller/session_management/{details_rata_controller.py → details/details_rata_controller.py} RENAMED
@@ -1,10 +1,5 @@
1
- from django.http import HttpRequest
2
- from django.shortcuts import render, redirect
3
  from tecnicas.models import SesionSensorial
4
- from tecnicas.controllers import PalabrasController, DatoController, CalificacionController
5
- from tecnicas.utils import defaultdict_to_dict
6
  from .details_controller import DetallesController
7
- from collections import defaultdict
8
 
9
 
10
  class DetallesRATAController(DetallesController):
 
 
 
1
  from tecnicas.models import SesionSensorial
 
 
2
  from .details_controller import DetallesController
 
3
 
4
 
5
  class DetallesRATAController(DetallesController):
tecnicas/controllers/views_controller/session_management/details/details_sort_controller.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from .details_controller import DetallesController
2
+ from tecnicas.models import SesionSensorial
3
+
4
+
5
+ class DetallesSortController(DetallesController):
6
+ def __init__(self, session: SesionSensorial):
7
+ super().__init__(session)
8
+ self.url_template = "tecnicas/manage_sesions/details-session-sort.html"
9
+ self.url_next = "cata_system:monitor_sesion"
10
+
11
+ def getContext(self):
12
+ technique = self.session.tecnica
13
+
14
+ finished = False
15
+ status = ""
16
+
17
+ if technique.repeticion < technique.repeticiones_max and not self.session.activo:
18
+ status = "En espera para iniciar la sesión"
19
+ elif technique.repeticion >= technique.repeticiones_max and not self.session.activo:
20
+ status = "Esta sesión ha sido finalizada"
21
+ finished = True
22
+ else:
23
+ status = "La sesión está en progreso"
24
+
25
+ self.context = {
26
+ "sesion": self.session,
27
+ "technique": technique,
28
+ "status": status,
29
+ "finished": finished
30
+ }
31
+
32
+ return self.context
tecnicas/controllers/views_controller/session_management/{monitor_controller.py → monitor/monitor_controller.py} RENAMED
@@ -2,8 +2,7 @@ from django.http import HttpRequest
2
  from django.shortcuts import render, redirect
3
  from django.urls import reverse
4
  from tecnicas.models import SesionSensorial, Producto, EsAtributo, EsVocabulario
5
- from tecnicas.controllers import ParticipacionController, SesionController
6
- from tecnicas.utils import controller_error
7
 
8
 
9
  class MonitorController():
 
2
  from django.shortcuts import render, redirect
3
  from django.urls import reverse
4
  from tecnicas.models import SesionSensorial, Producto, EsAtributo, EsVocabulario
5
+ from tecnicas.controllers import ParticipacionController
 
6
 
7
 
8
  class MonitorController():
tecnicas/controllers/views_controller/session_management/{monitor_escalas_controller.py → monitor/monitor_escalas_controller.py} RENAMED
File without changes
tecnicas/controllers/views_controller/session_management/{monitor_pf_controller.py → monitor/monitor_pf_controller.py} RENAMED
@@ -1,6 +1,3 @@
1
- from django.http import HttpRequest
2
- from django.shortcuts import render, redirect
3
- from django.urls import reverse
4
  from tecnicas.models import Dato, Participacion, Catador, ListaPalabras, Producto
5
  from tecnicas.controllers import SesionController
6
  from .monitor_controller import MonitorController
 
 
 
 
1
  from tecnicas.models import Dato, Participacion, Catador, ListaPalabras, Producto
2
  from tecnicas.controllers import SesionController
3
  from .monitor_controller import MonitorController
tecnicas/controllers/views_controller/session_management/{monitor_rata_controller.py → monitor/monitor_rata_controller.py} RENAMED
File without changes
tecnicas/templates/tecnicas/manage_sesions/details-session-cata.html CHANGED
@@ -146,7 +146,7 @@
146
  <div
147
  class="text-2xl font-semibold flex-1 cts-btn-secondary p-4 flex justify-center items-center rounded-lg select-none text-center">
148
  <p class=" text-black">
149
- Máximo número de repeticiones alcanzado
150
  </p>
151
  </div>
152
  {% else %}
@@ -218,9 +218,10 @@
218
  </p>
219
  </section>
220
  {% if existen_calificaciones %}
221
- {% include "../components/table_cata.html" with calificaciones=calificaciones palabras=palabras sesion=sesion %}
 
222
  {% else %}
223
- {% include "../components/error-message.html" with message='Sin calificaciones que mostrar aún' %}
224
  {% endif %}
225
  </article>
226
 
 
146
  <div
147
  class="text-2xl font-semibold flex-1 cts-btn-secondary p-4 flex justify-center items-center rounded-lg select-none text-center">
148
  <p class=" text-black">
149
+ Sesión finalizada
150
  </p>
151
  </div>
152
  {% else %}
 
218
  </p>
219
  </section>
220
  {% if existen_calificaciones %}
221
+ {% include "../components/table_cata.html" with calificaciones=calificaciones palabras=palabras
222
+ sesion=sesion %}
223
  {% else %}
224
+ {% include "../components/error-message.html" with message='Sin calificaciones que mostrar aún' %}
225
  {% endif %}
226
  </article>
227
 
tecnicas/templates/tecnicas/manage_sesions/details-session-sort.html ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'tecnicas/layouts/base.html' %}
2
+ {% load static %}
3
+
4
+ {% block title %}Detalles Sesion{% endblock %}
5
+
6
+ {% block content %}
7
+ <article class="cts-container-main">
8
+ <article class="cts-wrap-content relative max-w-4xl">
9
+ <header class="text-center flex-row max-sm:flex-col w-full flex justify-around items-center flex-wrap gap-10">
10
+ <h1 class="text-black rounded-xl font-bold text-2xl bg-surface-card shadow-lg p-4 flex-1">
11
+ Detalles de la sesión
12
+ </h1>
13
+ <a href="{% url 'cata_system:panel_sesiones' page=1 %}">
14
+ <button class="cts-btn-general cts-btn-error btn-push">
15
+ Volver a las Sesiones
16
+ </button>
17
+ </a>
18
+ </header>
19
+
20
+ {% if message %}
21
+ {% include "../components/error-message.html" with message=message %}
22
+ {% endif %}
23
+ {% if error %}
24
+ {% include "../components/error-message.html" with message=error %}
25
+ {% endif %}
26
+
27
+ <p class="text-black font-bold text-2xl border-b-2">
28
+ Información general
29
+ </p>
30
+ <article
31
+ class="text-black rounded-xl grid grid-cols-2 max-sm:grid-cols-1 gap-3 max-sm:gap-1 text-xl max-sm:text-base">
32
+ <section
33
+ class="col-span-2 max-sm:col-span-1 bg-surface-ligt flex flex-wrap items-center justify-center max-sm:justify-normal gap-x-2 p-4 rounded-2xl">
34
+ <p class="font-bold">
35
+ Código:
36
+ </p>
37
+ <p class="font-sans">
38
+ {{ sesion.codigo_sesion }}
39
+ </p>
40
+ </section>
41
+
42
+ <section
43
+ class="col-span-2 max-sm:col-span-1 bg-surface-card flex flex-wrap items-center justify-center max-sm:justify-normal gap-x-2 p-4 rounded-2xl">
44
+ <p class="font-bold">
45
+ Nombre:
46
+ </p>
47
+ <p class="antialiased">
48
+ {% if sesion.nombre_sesion %}
49
+ {{ sesion.nombre_sesion }}
50
+ {% else %}
51
+ Sin nombre
52
+ {% endif %}
53
+ </p>
54
+ </section>
55
+
56
+ <section
57
+ class="bg-surface-card flex flex-wrap items-center justify-center max-sm:justify-normal gap-x-2 p-4 rounded-2xl">
58
+ <p class="font-bold">
59
+ Fecha creación:
60
+ </p>
61
+ <p class="font-sans font-normal uppercase">
62
+ {{ sesion.fechaCreacion }}
63
+ </p>
64
+ </section>
65
+
66
+ <section
67
+ class="bg-surface-card flex flex-wrap items-center justify-center max-sm:justify-normal gap-x-2 p-4 rounded-2xl">
68
+ <p class="font-bold">
69
+ Estado:
70
+ </p>
71
+ <p class="font-sans text-lg max-sm:text-base font-normal">
72
+ {{ status }}
73
+ </p>
74
+ </section>
75
+
76
+ <section
77
+ class="bg-surface-ligt flex flex-wrap items-center justify-center max-sm:justify-normal gap-x-2 p-4 rounded-2xl">
78
+ <p class="font-bold">
79
+ Técnica:
80
+ </p>
81
+ <p class="font-sans text-lg max-sm:text-base font-normal uppercase">
82
+ {{ technique.tipo_tecnica }}
83
+ </p>
84
+ </section>
85
+
86
+ <section
87
+ class="bg-surface-card flex flex-wrap items-center justify-center max-sm:justify-normal gap-x-2 p-4 rounded-2xl">
88
+ <p class="font-sans">
89
+ <b>Catadores Max.</b> {{ technique.limite_catadores }}
90
+ </p>
91
+ </section>
92
+
93
+ <section
94
+ class="bg-surface-card flex flex-wrap items-center justify-center max-sm:justify-normal gap-x-2 p-4 rounded-2xl">
95
+ <p class="font-sans">
96
+ <b>Repetición:</b> Única
97
+ </p>
98
+ </section>
99
+
100
+ <section
101
+ class="bg-surface-card flex flex-wrap items-center justify-center max-sm:justify-normal gap-x-2 p-4 rounded-2xl">
102
+ </section>
103
+
104
+ <section
105
+ class="col-span-2 max-sm:col-span-1 bg-surface-card flex flex-wrap items-center justify-center max-sm:justify-normal gap-x-2 p-4 rounded-2xl">
106
+ <p class="font-bold">
107
+ Instrucciones:
108
+ </p>
109
+ <p class="font-sans text-xl max-sm:text-base font-normal">
110
+ {{ sesion.tecnica.instrucciones }}
111
+ </p>
112
+ </section>
113
+ </article>
114
+
115
+ <p class="text-black font-bold text-2xl border-b-2">
116
+ Acciones disponibles
117
+ </p>
118
+ <article class="flex flex-wrap gap-10 max-sm:gap-2">
119
+ {% if not sesion.activo %}
120
+ <button
121
+ class="ct-btn-start-repition flex-1 uppercase text-lg max-sm:text-base tracking-wider p-4 border-b-2 active:border-b-0 active:border-t-2 active:border-green-500 border-green-800 transition-all rounded-xl bg-green-600 text-white font-bold disabled:bg-amber-600 flex flex-col justify-center items-center gap-2"
122
+ onclick="startRepetition()">
123
+ Iniciar fase o repetición
124
+ <figure class="w-10">
125
+ <img src="{% static 'img/giro.svg' %}" alt="flechas girando" class="invert">
126
+ </figure>
127
+ </button>
128
+ {% else %}
129
+ {% if finished %}
130
+ <div
131
+ class="text-2xl font-semibold flex-1 cts-btn-secondary p-4 flex justify-center items-center rounded-lg select-none text-center">
132
+ <p class=" text-black">
133
+ Sesión finalizada
134
+ </p>
135
+ </div>
136
+ {% else %}
137
+ <a href="{% url 'cata_system:monitor_sesion' session_code=sesion.codigo_sesion %}" class="flex-1 w-fit">
138
+ <button
139
+ class="ct-btn-start-repition w-full uppercase text-lg max-sm:text-base tracking-wider p-4 border-b-2 active:border-b-0 active:border-t-2 active:border-orange-500 border-orange-800 transition-all rounded-xl bg-orange-600 text-white font-bold disabled:bg-amber-600 flex flex-col justify-center items-center gap-2">
140
+ Monitorear repetición
141
+ <figure class="w-10">
142
+ <img src="{% static 'img/monitor.svg' %}" alt="flechas girando" class="invert">
143
+ </figure>
144
+ </button>
145
+ </a>
146
+ {% endif %}
147
+ {% endif %}
148
+ <button
149
+ class="flex-1 uppercase text-lg cts-btn-general cts-btn-error btn-push flex flex-col justify-center items-center gap-2"
150
+ onclick="showWarningDialog('cts-warnig-dialog')">
151
+ borrar
152
+ <figure class="w-10">
153
+ <img src="{% static 'img/basura.svg' %}" alt="bote de basura" class="invert">
154
+ </figure>
155
+ </button>
156
+ </article>
157
+
158
+ <section
159
+ class="absolute w-full h-full flex justify-center items-center bg-surface-alter-card/70 top-0 left-0 p-6 rounded-xl cts-warnig-dialog hidden">
160
+ <article class="bg-surface-card p-4 space-y-6 rounded-xl">
161
+ <h2 class="text-4xl text-black text-center">
162
+ ¡¡¡Cuidado!!!
163
+ </h2>
164
+ <p class="text-2xl text-black text-center">
165
+ Esta acción no es reversible, si la continua también borrara todos los datos recopilados
166
+ relacionados a esta sesión y no podrá volver a recuperarlos
167
+ </p>
168
+ <section class="text-black font-bold text-xl space-y-4">
169
+ <p class="text-center">
170
+ ¿Estás seguro de continuar?
171
+ </p>
172
+ <div class="flex max-sm:flex-col gap-4 justify-center">
173
+ <button class="cts-btn-general cts-btn-error btn-push" onclick="deleteSession()">
174
+ Estoy seguro
175
+ </button>
176
+ <button class="cts-btn-general cts-btn-primary btn-push"
177
+ onclick="hiddenWarningDialog('cts-warnig-dialog')">
178
+ No, cancelar
179
+ </button>
180
+ </div>
181
+ </section>
182
+ </article>
183
+ </section>
184
+
185
+ <p class="text-black font-bold text-2xl border-b-2">
186
+ Datos obtenidos
187
+ </p>
188
+
189
+ {% include "../components/error-message.html" with message='Sin datos por mostrar aún' %}
190
+
191
+ <form action="" method="post" class="form-action-session hidden">
192
+ <input type="hidden" name="action" class="action-option">
193
+ {% csrf_token %}
194
+ </form>
195
+ </article>
196
+ </article>
197
+ {% endblock %}
198
+
199
+ {% block extra_js %}
200
+ <script src="{% static 'js/details-session.js' %}"></script>
201
+ <script src="{% static 'js/showHiddenElement.js' %}"></script>
202
+ {% endblock %}
tecnicas/views/sessions_management/session_details.py CHANGED
@@ -3,7 +3,7 @@ from django.shortcuts import redirect
3
  from django.urls import reverse
4
  from tecnicas.models import SesionSensorial
5
  from tecnicas.utils import noValidTechnique
6
- from tecnicas.controllers import DetallesEscalasController, DetallesCATAController, DetallesPFController
7
 
8
 
9
  def sessionDetails(req: HttpRequest, session_code: str):
@@ -34,6 +34,11 @@ def sessionDetails(req: HttpRequest, session_code: str):
34
  response = controller_view.controllGetResponse(
35
  request=req, message=message)
36
 
 
 
 
 
 
37
  else:
38
  response = noValidTechnique(
39
  params={"page": 1},
@@ -50,7 +55,7 @@ def sessionDetails(req: HttpRequest, session_code: str):
50
  use_techinique = sensorial_session.tecnica.tipo_tecnica.nombre_tecnica
51
 
52
  if use_techinique == "escalas" or use_techinique == "rata" or use_techinique == "cata":
53
- controller_view = DetallesEscalasController(sensorial_session)
54
 
55
  if req.POST["action"] == "start_session":
56
  response = controller_view.startRepetition(
 
3
  from django.urls import reverse
4
  from tecnicas.models import SesionSensorial
5
  from tecnicas.utils import noValidTechnique
6
+ from tecnicas.controllers import DetallesController, DetallesEscalasController, DetallesCATAController, DetallesPFController, DetallesSortController
7
 
8
 
9
  def sessionDetails(req: HttpRequest, session_code: str):
 
34
  response = controller_view.controllGetResponse(
35
  request=req, message=message)
36
 
37
+ elif use_techinique == "sort":
38
+ controller_view = DetallesSortController(session=sensorial_session)
39
+ response = controller_view.controllGetResponse(
40
+ request=req, message=message)
41
+
42
  else:
43
  response = noValidTechnique(
44
  params={"page": 1},
 
55
  use_techinique = sensorial_session.tecnica.tipo_tecnica.nombre_tecnica
56
 
57
  if use_techinique == "escalas" or use_techinique == "rata" or use_techinique == "cata":
58
+ controller_view = DetallesController(sensorial_session)
59
 
60
  if req.POST["action"] == "start_session":
61
  response = controller_view.startRepetition(