chartManD commited on
Commit
efd99b7
·
1 Parent(s): a36f318

Vista previa a inicar sesion con Sort por Catador

Browse files
tecnicas/controllers/__init__.py CHANGED
@@ -47,6 +47,7 @@ from .views_controller.sessions_tester.tests_forms.test_pf_controller import Tes
47
  from .views_controller.sessions_tester.init_session.init_session_escalas_controller import InitSessionEscalasController
48
  from .views_controller.sessions_tester.init_session.init_session_rata_controller import InitSessionRATAController
49
  from .views_controller.sessions_tester.init_session.init_session_pf_controller import InitSessionPFController
 
50
 
51
  from .views_controller.vocabulary_manage.create_vocabulary_controller import CreateVocabularyController
52
  from .views_controller.vocabulary_manage.list_vocabulary_controller import ListVocabularyController
 
47
  from .views_controller.sessions_tester.init_session.init_session_escalas_controller import InitSessionEscalasController
48
  from .views_controller.sessions_tester.init_session.init_session_rata_controller import InitSessionRATAController
49
  from .views_controller.sessions_tester.init_session.init_session_pf_controller import InitSessionPFController
50
+ from .views_controller.sessions_tester.init_session.init_session_sort_controller import InitSessionSortController
51
 
52
  from .views_controller.vocabulary_manage.create_vocabulary_controller import CreateVocabularyController
53
  from .views_controller.vocabulary_manage.list_vocabulary_controller import ListVocabularyController
tecnicas/controllers/views_controller/sessions_tester/init_session/init_session_controller.py CHANGED
@@ -11,7 +11,7 @@ class InitSessionController():
11
  session: SesionSensorial
12
  order: Orden | dict
13
  current_direction: str
14
- current_direction = "tecnicas/forms_tester/init_session.html"
15
  escalas_direction = "cata_system:session_convencional"
16
 
17
  def __init__(self, sensorial_session: SesionSensorial, user_tester: Catador):
 
11
  session: SesionSensorial
12
  order: Orden | dict
13
  current_direction: str
14
+ current_direction = "tecnicas/forms_tester/init_scales_test.html"
15
  escalas_direction = "cata_system:session_convencional"
16
 
17
  def __init__(self, sensorial_session: SesionSensorial, user_tester: Catador):
tecnicas/controllers/views_controller/sessions_tester/init_session/init_session_escalas_controller.py CHANGED
@@ -13,7 +13,7 @@ class InitSessionEscalasController(InitSessionController):
13
 
14
  def __init__(self, sensorial_session, user_tester):
15
  super().__init__(sensorial_session, user_tester)
16
- self.current_direction = "tecnicas/forms_tester/init_session.html"
17
  self.escalas_direction = "cata_system:session_convencional"
18
  self.cata_direction = "cata_system:session_cata"
19
 
 
13
 
14
  def __init__(self, sensorial_session, user_tester):
15
  super().__init__(sensorial_session, user_tester)
16
+ self.current_direction = "tecnicas/forms_tester/init_scales_test.html"
17
  self.escalas_direction = "cata_system:session_convencional"
18
  self.cata_direction = "cata_system:session_cata"
19
 
tecnicas/controllers/views_controller/sessions_tester/init_session/init_session_pf_controller.py CHANGED
@@ -9,7 +9,7 @@ from .init_session_controller import InitSessionController
9
  class InitSessionPFController(InitSessionController):
10
  def __init__(self, sensorial_session, user_tester):
11
  super().__init__(sensorial_session, user_tester)
12
- self.current_direction = "tecnicas/forms_tester/init_session_pf.html"
13
  self.pf_direction = "cata_system:session_pf"
14
 
15
  def controllGet(self, request: HttpRequest):
 
9
  class InitSessionPFController(InitSessionController):
10
  def __init__(self, sensorial_session, user_tester):
11
  super().__init__(sensorial_session, user_tester)
12
+ self.current_direction = "tecnicas/forms_tester/init_pf_test.html"
13
  self.pf_direction = "cata_system:session_pf"
14
 
15
  def controllGet(self, request: HttpRequest):
tecnicas/controllers/views_controller/sessions_tester/init_session/init_session_rata_controller.py CHANGED
@@ -6,7 +6,7 @@ from .init_session_controller import InitSessionController
6
  class InitSessionRATAController(InitSessionController):
7
  def __init__(self, sensorial_session, user_tester):
8
  super().__init__(sensorial_session, user_tester)
9
- self.current_direction = "tecnicas/forms_tester/init_session.html"
10
 
11
  def controllGet(self, request: HttpRequest):
12
  context = {
 
6
  class InitSessionRATAController(InitSessionController):
7
  def __init__(self, sensorial_session, user_tester):
8
  super().__init__(sensorial_session, user_tester)
9
+ self.current_direction = "tecnicas/forms_tester/init_scales_test.html"
10
 
11
  def controllGet(self, request: HttpRequest):
12
  context = {
tecnicas/controllers/views_controller/sessions_tester/init_session/init_session_sort_controller.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.http import HttpRequest
2
+ from django.shortcuts import render
3
+ from tecnicas.models import Participacion
4
+ from .init_session_controller import InitSessionController
5
+
6
+
7
+ class InitSessionSortController(InitSessionController):
8
+ def __init__(self, sensorial_session, user_tester):
9
+ super().__init__(sensorial_session, user_tester)
10
+ self.current_direction = "tecnicas/forms_tester/init_test_sort.html"
11
+ self.pf_direction = "cata_system:session_pf"
12
+
13
+ def controllGet(self, request: HttpRequest):
14
+ context = {
15
+ "session": self.session,
16
+ "type_technique": self.session.tecnica.tipo_tecnica.nombre_tecnica
17
+ }
18
+
19
+ is_end = self.isEndedSession()
20
+
21
+ context["has_ended"] = is_end
22
+
23
+ if is_end:
24
+ context["message"] = "El catador ha terminado de realizar su evaluación, espere instrucciones del presentador"
25
+
26
+ return render(request, self.current_direction, context)
27
+
28
+ def isEndedSession(self):
29
+ participation = Participacion.objects.get(
30
+ catador=self.tester, tecnica=self.session.tecnica)
31
+
32
+ return participation.finalizado
tecnicas/controllers/views_controller/sessions_tester/login_session_tester_controller.py CHANGED
@@ -98,5 +98,51 @@ class LoginSessionTesterController():
98
  context["error"] = "Imposible acceder a esta sesión"
99
  return render(request, self.current_direcction, context)
100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  def validateEntryPF(self, request=HttpRequest):
102
  return self.validateEntryEscalas(request=request)
 
98
  context["error"] = "Imposible acceder a esta sesión"
99
  return render(request, self.current_direcction, context)
100
 
101
+ def validateEntrySort(self, request: HttpRequest):
102
+ context = {}
103
+ if not self.session.activo:
104
+ context["error"] = "La sesión no está activa actualmente"
105
+ return render(request, self.current_direcction, context)
106
+
107
+ if self.session.tecnica.repeticion == 1:
108
+ try:
109
+ self.taster_participation = Participacion.objects.get(
110
+ tecnica=self.session.tecnica, catador=self.tester)
111
+ context["error"] = "Usted ya esta dentro de la sesión"
112
+ return render(request, self.current_direcction, context)
113
+
114
+ except Participacion.DoesNotExist:
115
+ try:
116
+ with transaction.atomic():
117
+ code_session = self.session.codigo_sesion
118
+ self.session = SesionSensorial.objects.select_for_update().get(
119
+ codigo_sesion=code_session)
120
+
121
+ max_testers = self.session.tecnica.limite_catadores
122
+ current_num_testers = Participacion.objects.filter(
123
+ tecnica=self.session.tecnica).count()
124
+
125
+ if current_num_testers >= max_testers:
126
+ raise ValueError(
127
+ "La sesión ha alcanzado el número máximo de catadores")
128
+
129
+ self.taster_participation = Participacion.objects.create(
130
+ tecnica=self.session.tecnica,
131
+ catador=self.tester,
132
+ finalizado=False
133
+ )
134
+ params = {
135
+ "code_sesion": self.session.codigo_sesion
136
+ }
137
+ return redirect(reverse(self.destinity_direcction, kwargs=params))
138
+
139
+ except ValueError as e:
140
+ context["error"] = str(e)
141
+ return render(request, self.current_direcction, context)
142
+
143
+ else:
144
+ context["error"] = "Ya no es posible ingresar a la sesión"
145
+ return render(request, self.current_direcction, context)
146
+
147
  def validateEntryPF(self, request=HttpRequest):
148
  return self.validateEntryEscalas(request=request)
tecnicas/templates/tecnicas/forms_tester/{init_session_pf.html → init_pf_test.html} RENAMED
File without changes
tecnicas/templates/tecnicas/forms_tester/{init_session.html → init_scales_test.html} RENAMED
File without changes
tecnicas/templates/tecnicas/forms_tester/init_test_sort.html ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 text-black max-w-4xl">
9
+ <header class="text-center flex-row w-full flex justify-around items-center flex-wrap gap-10">
10
+ <h1 class="rounded-xl font-bold text-2xl bg-surface-ligt p-4 flex-1">
11
+ Panel principal de Catadores
12
+ </h1>
13
+ </header>
14
+
15
+ <article>
16
+ <p class="text-2xl font-medium text-center bg-surface-sweet p-4 rounded-lg">
17
+ Información sobre la sesión en la que participa
18
+ </p>
19
+ </article>
20
+
21
+ {% if error %}
22
+ {% include "../components/error-message.html" with message=error %}
23
+ {% endif %}
24
+ {% if message %}
25
+ {% include "../components/error-message.html" with message=message %}
26
+ {% endif %}
27
+ <hr>
28
+
29
+ <article
30
+ class="rounded-xl grid grid-cols-1 gap-3 text-center *:bg-surface-card *:flex *:flex-wrap *:items-center *:justify-center *:gap-x-2 *:p-4 *:rounded-2xl">
31
+ <section>
32
+ <p class="text-xl font-bold">
33
+ Código:
34
+ </p>
35
+ <p class="font-sans text-xl font-normal">
36
+ {{ session.codigo_sesion }}
37
+ </p>
38
+ </section>
39
+
40
+ <section>
41
+ <p class="text-xl font-bold">
42
+ {% if session.nombre_sesion %}
43
+ {{ session.nombre_sesion }}
44
+ {% else %}
45
+ Sin nombre
46
+ {% endif %}
47
+ </p>
48
+ </section>
49
+
50
+ <section>
51
+ <p class="text-xl font-medium">
52
+ Esta sesión usa la técnica <span class="uppercase">{{ session.tecnica.tipo_tecnica }}</span>
53
+ </p>
54
+ </section>
55
+
56
+ <section>
57
+ <p class="text-xl font-medium">
58
+ Sesión Única
59
+ </p>
60
+ </section>
61
+
62
+ <section>
63
+ <p class="text-xl">
64
+ {{ session.tecnica.instrucciones }}
65
+ </p>
66
+ </section>
67
+ </article>
68
+
69
+ <hr>
70
+
71
+ <article class="flex flex-wrap gap-10">
72
+ {% if has_ended %}
73
+ <div
74
+ class="text-2xl font-semibold flex-1 cts-btn-secondary p-4 flex justify-center items-center rounded-lg select-none">
75
+ <p class=" text-black">Finalizaste la sesión</p>
76
+ </div>
77
+ {% else %}
78
+ <button
79
+ class="ct-btn-start-repition flex-1 uppercase text-lg tracking-wider cts-btn-general cts-btn-primary btn-push flex flex-col justify-center items-center gap-2"
80
+ onclick="startTest()">
81
+ Iniciar técnica
82
+ <figure class="w-10">
83
+ <img src="{% static 'img/check.svg' %}" alt="flechas girando" class="invert">
84
+ </figure>
85
+ </button>
86
+ {% endif %}
87
+ <a href="{% url 'cata_system:catador_list_sessions' num_page=1 %}">
88
+ <button
89
+ class="flex-1 uppercase text-lg tracking-wider cts-btn-general cts-btn-error btn-push flex flex-col justify-center items-center gap-2">
90
+ Regresar a la lista
91
+ <figure class="w-10">
92
+ <img src="{% static 'img/exit.svg' %}" alt="bote de basura" class="invert">
93
+ </figure>
94
+ </button>
95
+ </a>
96
+ </article>
97
+
98
+ <form action="" method="post" class="hidden ct-action-form">
99
+ {% csrf_token %}
100
+ <input type="hidden" class="action-option" name="action" value="start_posting">
101
+ </form>
102
+ </article>
103
+ </article>
104
+ {% endblock %}
105
+
106
+ {% block extra_js %}
107
+ <script src="{% static 'js/start-tester-test.js' %}"></script>
108
+ {% endblock %}
tecnicas/views/tester_forms/init_tester_form.py CHANGED
@@ -1,13 +1,13 @@
1
  from django.http import HttpRequest, JsonResponse
2
  from django.shortcuts import render
3
- from tecnicas.controllers import InitSessionEscalasController, InitSessionRATAController, InitSessionPFController
4
  from tecnicas.models import SesionSensorial
5
 
6
 
7
  def initTesterForm(req: HttpRequest, code_sesion: str):
8
  session = SesionSensorial.objects.get(codigo_sesion=code_sesion)
9
  type_technique = session.tecnica.tipo_tecnica.nombre_tecnica
10
- template_url = "tecnicas/forms_tester/init_session.html"
11
 
12
  if req.method == "GET":
13
  if type_technique == "escalas":
@@ -25,6 +25,11 @@ def initTesterForm(req: HttpRequest, code_sesion: str):
25
  sensorial_session=session, user_tester=req.user.user_catador)
26
  response = view_controller.controllGet(request=req)
27
 
 
 
 
 
 
28
  else:
29
  context = {
30
  "session": session,
 
1
  from django.http import HttpRequest, JsonResponse
2
  from django.shortcuts import render
3
+ from tecnicas.controllers import InitSessionEscalasController, InitSessionRATAController, InitSessionPFController, InitSessionSortController
4
  from tecnicas.models import SesionSensorial
5
 
6
 
7
  def initTesterForm(req: HttpRequest, code_sesion: str):
8
  session = SesionSensorial.objects.get(codigo_sesion=code_sesion)
9
  type_technique = session.tecnica.tipo_tecnica.nombre_tecnica
10
+ template_url = "tecnicas/forms_tester/init_scales_test.html"
11
 
12
  if req.method == "GET":
13
  if type_technique == "escalas":
 
25
  sensorial_session=session, user_tester=req.user.user_catador)
26
  response = view_controller.controllGet(request=req)
27
 
28
+ elif type_technique == "sort":
29
+ view_controller = InitSessionSortController(
30
+ sensorial_session=session, user_tester=req.user.user_catador)
31
+ response = view_controller.controllGet(request=req)
32
+
33
  else:
34
  context = {
35
  "session": session,
tecnicas/views/tester_forms/login_session.py CHANGED
@@ -35,6 +35,10 @@ def loginSessionTester(req: HttpRequest):
35
 
36
  elif type_technique == "perfil flash":
37
  response = login_controller.validateEntryRATA(request=req)
 
 
 
 
38
  else:
39
  context = {
40
  "error": "La técnica usada en esta sesión es invalida o no ha sido implementada para ingresar a ella"
 
35
 
36
  elif type_technique == "perfil flash":
37
  response = login_controller.validateEntryRATA(request=req)
38
+
39
+ elif type_technique == "sort":
40
+ response = login_controller.validateEntrySort(request=req)
41
+
42
  else:
43
  context = {
44
  "error": "La técnica usada en esta sesión es invalida o no ha sido implementada para ingresar a ella"