chartManD commited on
Commit
5c77a4a
·
1 Parent(s): c27a5ae

Se crea panel para ver informacion sobre una sesion sensorial

Browse files
tecnicas/controllers/__init__.py CHANGED
@@ -6,3 +6,4 @@ from .palabras_controller import PalabrasController
6
  from .estilo_palabras_controller import EstiloPalabrasController
7
  from .palabras_controller import PalabrasController
8
  from .sesion_controller import SesionController
 
 
6
  from .estilo_palabras_controller import EstiloPalabrasController
7
  from .palabras_controller import PalabrasController
8
  from .sesion_controller import SesionController
9
+ from .calificacion_controller import CalificacionController
tecnicas/controllers/calificacion_controller.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from ..models import Calificacion, Tecnica
2
+
3
+
4
+ class CalificacionController():
5
+ @staticmethod
6
+ def getRatingsByTechnique(technique: Tecnica):
7
+ repetition = technique.repecion
8
+
9
+ if not repetition:
10
+ return {"error": "sin datos calficados aun"}
11
+
12
+ data_rating = {}
13
+
14
+ for i in range(repetition):
15
+ response_data = Calificacion.objects.filter(
16
+ id_tecnica=technique, num_repeticion=i+1)
17
+ data_rating[f"repeticion_{i+1}"] = response_data
18
+
19
+ return data_rating
tecnicas/controllers/palabras_controller.py CHANGED
@@ -1,4 +1,4 @@
1
- from ..models import Palabra
2
  from django.db import DatabaseError
3
  from ..utils import controller_error
4
 
@@ -23,3 +23,9 @@ class PalabrasController():
23
  return self.words
24
  except DatabaseError as error:
25
  return controller_error("error al guardar buscar palabras")
 
 
 
 
 
 
 
1
+ from ..models import Palabra, Tecnica, EsAtributo
2
  from django.db import DatabaseError
3
  from ..utils import controller_error
4
 
 
23
  return self.words
24
  except DatabaseError as error:
25
  return controller_error("error al guardar buscar palabras")
26
+
27
+ @staticmethod
28
+ def getWordsInTechnique(technique: Tecnica):
29
+ es_atributo = EsAtributo.objects.get(id_tecnica=technique)
30
+ words = es_atributo.palabras.all()
31
+ return words
tecnicas/static/img/basura.svg ADDED
tecnicas/static/img/giro.svg ADDED
tecnicas/templates/tecnicas/manage_sesions/detalles-sesion.html ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'tecnicas/layouts/base.html' %}
2
+ {% load static %}
3
+
4
+ {% block title %}Detalles Sesion{% endblock %}
5
+
6
+ {% block content %}
7
+ <article class="w-full flex flex-col justify-center items-center bg-gray-600 mt-10 mb-10">
8
+ <article class="flex flex-col gap-8 bg-gray-400 p-10 rounded-2xl">
9
+ <header class="text-center flex-row w-full flex justify-around items-center flex-wrap gap-10">
10
+ <h1 class="text-white rounded-xl font-bold text-2xl bg-gray-600 p-4 flex-1">
11
+ Detalles de la session
12
+ </h1>
13
+ <a href="{% url 'cata_system:index' %}">
14
+ <p
15
+ class="uppercase text-lg tracking-wider font-medium p-2 px-4 border-b-2 active:border-b-0 active:border-t-2 active:border-blue-500 border-blue-800 transition-all rounded-xl bg-blue-600 text-white">
16
+ Panel principal
17
+ </p>
18
+ </a>
19
+ </header>
20
+
21
+ <p class="font-bold text-2xl border-b-2">
22
+ Infomación general
23
+ </p>
24
+ <article
25
+ class="text-white rounded-xl grid grid-cols-2 max-sm:grid-cols-1 gap-3 *:bg-gray-500 *:flex *:flex-wrap *:items-center *:justify-center *:max-sm:justify-normal *:gap-x-2 *:p-4 *:rounded-2xl">
26
+ <section class="col-span-2 max-sm:col-span-1">
27
+ <p class="block text-xl antialiased font-bold">
28
+ Código:
29
+ </p>
30
+ <p class="block font-sans text-xl antialiased font-normal">
31
+ {{ sesion.codigo_sesion }}
32
+ </p>
33
+ </section>
34
+
35
+ <section class="col-span-2 max-sm:col-span-1">
36
+ <p class="block text-xl antialiased font-bold">
37
+ Nombre:
38
+ </p>
39
+ <p class="block text-xl antialiased">
40
+ {% if sesion.nombre_sesion %}
41
+ {{ sesion.nombre_sesion }}
42
+ {% else %}
43
+ Sin nombre
44
+ {% endif %}
45
+ </p>
46
+ </section>
47
+
48
+ <section>
49
+ <p class="block text-xl antialiased font-medium">
50
+ Fecha creación:
51
+ </p>
52
+ <p class="block font-sans text-lg antialiased font-normal uppercase">
53
+ {{ sesion.fechaCreacion }}
54
+ </p>
55
+ </section>
56
+
57
+ <section>
58
+ <p class="block text-lg antialiased font-bold">
59
+ Estado:
60
+ </p>
61
+ <p class="block font-sans text-lg antialiased font-normal">
62
+ {% if sesion.activo %}
63
+ En proceso
64
+ {% else %}
65
+ Listo para iniciar repeticion
66
+ {% endif %}
67
+ </p>
68
+ </section>
69
+
70
+ <section>
71
+ <p class="block text-xl antialiased font-medium">
72
+ Estilo palabras:
73
+ </p>
74
+ <p class="block font-sans text-lg antialiased font-normal uppercase">
75
+ {{ sesion.tecnica.id_estilo }}
76
+ </p>
77
+ </section>
78
+
79
+ <section>
80
+ <p class="block text-xl antialiased font-medium">
81
+ Tecnica:
82
+ </p>
83
+ <p class="block font-sans text-lg antialiased font-normal uppercase">
84
+ {{ sesion.tecnica.tipo_tecnica }}
85
+ </p>
86
+ </section>
87
+ </article>
88
+
89
+ <p class="font-bold text-2xl border-b-2">
90
+ Palabras usadas para calificar
91
+ </p>
92
+ <article
93
+ class="text-white rounded-xl grid grid-cols-4 max-sm:grid-cols-1 gap-3 *:bg-gray-500 *:flex *:items-center *:justify-center *:gap-x-2 *:p-4 *:rounded-2xl">
94
+ {% for palabra in palabras %}
95
+ <section>
96
+ <p class="block text-xl antialiased font-medium">
97
+ {{ palabra.nombre_palabra }}
98
+ </p>
99
+ </section>
100
+ {% endfor %}
101
+ </article>
102
+
103
+
104
+ <p class="font-bold text-2xl border-b-2">
105
+ Acciones disponibles
106
+ </p>
107
+ <article class="flex flex-wrap gap-10">
108
+ {% if not sesion.activo %}
109
+ <button
110
+ class="flex-1 uppercase text-lg 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">
111
+ Inicar repeticion
112
+ <figure class="w-10">
113
+ <img src="{% static 'img/giro.svg' %}" alt="flechas girando" class="invert">
114
+ </figure>
115
+ </button>
116
+ {% endif %}
117
+
118
+ <button
119
+ class="flex-1 uppercase text-lg tracking-wider p-4 border-b-2 active:border-b-0 active:border-t-2 active:border-red-500 border-red-800 transition-all rounded-xl bg-red-600 text-white font-bold disabled:bg-amber-600 flex flex-col justify-center items-center gap-2">
120
+ borrar
121
+ <figure class="w-10">
122
+ <img src="{% static 'img/basura.svg' %}" alt="bote de basura" class="invert">
123
+ </figure>
124
+ </button>
125
+ </article>
126
+
127
+ <p class="font-bold text-2xl border-b-2">
128
+ Datos obtenidos
129
+ </p>
130
+
131
+ {% if calificaciones.error %}
132
+ <article class="bg-gray-600 p-4 text-white rounded-xl">
133
+ <p class="block font-sans text-xl antialiased font-normal uppercase tracking-wider text-center">
134
+ {{ calificaciones.error }}
135
+ </p>
136
+ </article>
137
+ {% else %}
138
+ <article class="bg-gray-600 p-4 text-white rounded-xl">
139
+ </article>
140
+ {% endif %}
141
+ </article>
142
+ </article>
143
+ {% endblock %}
tecnicas/templates/tecnicas/manage_sesions/sesiones-panel.html CHANGED
@@ -19,7 +19,8 @@
19
 
20
  <section class="grid grid-cols-3 gap-4">
21
  {% for sesion in sessions %}
22
- <article class="p-4 bg-gray-200 flex flex-row gap-2 justify-center items-center rounded-lg">
 
23
  <div class="text-right *:not-last:mb-2">
24
  {% if sesion.nombre_sesion %}
25
  <p><b>Nombre:</b></p>
@@ -38,7 +39,7 @@
38
  <p class="uppercase">{{ sesion.tecnica.tipo_tecnica.nombre_tecnica }}</p>
39
  <p class="uppercase">{{ sesion.tecnica.id_estilo.nombre_estilo }}</p>
40
  </div>
41
- </article>
42
  {% endfor %}
43
  </section>
44
 
 
19
 
20
  <section class="grid grid-cols-3 gap-4">
21
  {% for sesion in sessions %}
22
+ <a href="{% url 'cata_system:detalles_sesion' session_code=sesion.codigo_sesion %}"
23
+ class="p-4 bg-gray-200 flex flex-row gap-2 justify-center items-center rounded-lg border-b-4 border-blue-500">
24
  <div class="text-right *:not-last:mb-2">
25
  {% if sesion.nombre_sesion %}
26
  <p><b>Nombre:</b></p>
 
39
  <p class="uppercase">{{ sesion.tecnica.tipo_tecnica.nombre_tecnica }}</p>
40
  <p class="uppercase">{{ sesion.tecnica.id_estilo.nombre_estilo }}</p>
41
  </div>
42
+ </a>
43
  {% endfor %}
44
  </section>
45
 
tecnicas/urls.py CHANGED
@@ -6,18 +6,73 @@ from . import views
6
  app_name = "cata_system"
7
  urlpatterns = [
8
  path("", views.mainPanel, name="index"),
9
- path("autenticacion", views.autentication, name="autenticacion"),
10
- path("catador-login", views.catadorLogin, name="catador_login"),
11
- path("panel-catadores", views.managementCatadores, name="panel_catadores"),
12
- path("panel-sesiones/<int:page>", views.sesionsPanel, name="panel_sesiones"),
13
- path("seleccion-tecnica", views.selecionTecnica, name="seleccion_tecnica"),
14
- path("panel-configuracion-basic", views.configurationPanelBasic, name="panel_configuracion_basic"),
15
- path("panel-configuracion-tags", views.configurationPanelTags, name="panel_configuracion_tags"),
16
- path("panel-configuracion-codes", views.configurationPanelCodes, name="panel_configuracion_codes"),
17
- path("panel-configuracion-words", views.configurationPanelWords, name="panel_configuracion_words"),
18
- path("creando-sesion", views.createSession, name="creando_sesion"),
19
- path("nueva-etiqueta", views.newTag, name="nueva_etiqueta"),
20
- path("crear-catador", views.testerCreate, name="crear_catador"),
21
- path("buscar-catador", views.testerSearch, name="buscar_catador"),
22
- path("api/palabras", views.words, name="api_palabras"),
23
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  app_name = "cata_system"
7
  urlpatterns = [
8
  path("", views.mainPanel, name="index"),
9
+
10
+ # Atentificacion
11
+ path("autenticacion",
12
+ views.autentication,
13
+ name="autenticacion"),
14
+
15
+ path("catador-login",
16
+ views.catadorLogin,
17
+ name="catador_login"),
18
+
19
+
20
+ # Gestion de catadores
21
+ path("panel-catadores",
22
+ views.managementCatadores,
23
+ name="panel_catadores"),
24
+
25
+ path("crear-catador",
26
+ views.testerCreate,
27
+ name="crear_catador"),
28
+
29
+ path("buscar-catador",
30
+ views.testerSearch,
31
+ name="buscar_catador"),
32
+
33
+
34
+ # Creacion de sessiones sensoriales
35
+ path("seleccion-tecnica",
36
+ views.selecionTecnica,
37
+ name="seleccion_tecnica"),
38
+
39
+ path("panel-configuracion-basic",
40
+ views.configurationPanelBasic,
41
+ name="panel_configuracion_basic"),
42
+
43
+ path("panel-configuracion-tags",
44
+ views.configurationPanelTags,
45
+ name="panel_configuracion_tags"),
46
+
47
+ path("panel-configuracion-codes",
48
+ views.configurationPanelCodes,
49
+ name="panel_configuracion_codes"),
50
+
51
+ path("panel-configuracion-words",
52
+ views.configurationPanelWords,
53
+ name="panel_configuracion_words"),
54
+
55
+ path("creando-sesion",
56
+ views.createSession,
57
+ name="creando_sesion"),
58
+
59
+
60
+ # Gestion de sesiones sensoriales
61
+ path("panel-sesiones/<int:page>",
62
+ views.sesionsPanel,
63
+ name="panel_sesiones"),
64
+
65
+ path("detalles-sesion/<str:session_code>",
66
+ views.sessionDetails,
67
+ name="detalles_sesion"),
68
+
69
+
70
+ # APIs
71
+ path("nueva-etiqueta",
72
+ views.newTag,
73
+ name="nueva_etiqueta"),
74
+
75
+ path("api/palabras",
76
+ views.words,
77
+ name="api_palabras"),
78
+ ]
tecnicas/views/__init__.py CHANGED
@@ -12,4 +12,5 @@ from .api_tag import newTag
12
  from .tester_create import testerCreate
13
  from .tester_search import testerSearch
14
  from .api_words import words
15
- from .create_session import createSession
 
 
12
  from .tester_create import testerCreate
13
  from .tester_search import testerSearch
14
  from .api_words import words
15
+ from .create_session import createSession
16
+ from .session_details import sessionDetails
tecnicas/views/session_details.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.http import HttpRequest
2
+ from django.shortcuts import render
3
+ from ..models import SesionSensorial
4
+ from ..controllers import PalabrasController, CalificacionController
5
+
6
+
7
+ def sessionDetails(req: HttpRequest, session_code: str):
8
+ if req.method == "GET":
9
+ context = {}
10
+
11
+ sesion = SesionSensorial.objects.get(codigo_sesion=session_code)
12
+ context["sesion"] = sesion
13
+
14
+ words = PalabrasController.getWordsInTechnique(sesion.tecnica)
15
+ context["palabras"] = words
16
+
17
+ rating = CalificacionController.getRatingsByTechnique(
18
+ technique=sesion.tecnica)
19
+ context["calificaciones"] = rating
20
+
21
+ return render(req, "tecnicas/manage_sesions/detalles-sesion.html", context)