chartManD commited on
Commit
02eff64
·
1 Parent(s): f35536d

Se establece el switch en crear sesion para la tecnica RATA

Browse files
tecnicas/controllers/models_controller/palabras_controller.py CHANGED
@@ -14,11 +14,9 @@ class PalabrasController():
14
  self.ids_words = new_ids
15
 
16
  def setWords(self):
17
- self.words = []
18
- searched_words = list(Palabra.objects.filter(id__in=self.ids_words))
19
- if not len(searched_words):
20
  return controller_error("No se han encontrado registros")
21
- self.words = searched_words
22
  return self.words
23
 
24
  @staticmethod
 
14
  self.ids_words = new_ids
15
 
16
  def setWords(self):
17
+ self.words = list(Palabra.objects.filter(id__in=self.ids_words))
18
+ if not len(self.words):
 
19
  return controller_error("No se han encontrado registros")
 
20
  return self.words
21
 
22
  @staticmethod
tecnicas/controllers/models_controller/tecnica_controller.py CHANGED
@@ -6,9 +6,9 @@ from tecnicas.utils import controller_error
6
  class TecnicaController():
7
  def setTechnique(self, **kwargs):
8
  self.technique = Tecnica(
9
- tipo_tecnica=kwargs["tipo_tecnica"],
10
- id_estilo=kwargs["estilo_palabras"],
11
- repeticiones_max=kwargs["numero_repeticiones"] or 0,
12
  limite_catadores=kwargs["numero_catadores"],
13
  instrucciones=kwargs["instrucciones"],
14
  )
@@ -17,7 +17,7 @@ class TecnicaController():
17
  self.technique = Tecnica(
18
  tipo_tecnica=TipoTecnica.objects.get(nombre_tecnica=basic["name_tecnica"]),
19
  id_estilo=EstiloPalabra.objects.get(id=basic["estilo_palabras"]),
20
- repeticiones_max=basic["numero_repeticiones"] or 0,
21
  limite_catadores=basic["numero_catadores"],
22
  instrucciones=basic["instrucciones"] or "Espere instrucciones del Presentador",
23
  )
 
6
  class TecnicaController():
7
  def setTechnique(self, **kwargs):
8
  self.technique = Tecnica(
9
+ tipo_tecnica=TipoTecnica.objects.get(nombre_tecnica=kwargs["name_tecnica"]),
10
+ id_estilo=EstiloPalabra.objects.get(id=kwargs["estilo_palabras"]),
11
+ repeticiones_max=kwargs["numero_repeticiones"] or 1,
12
  limite_catadores=kwargs["numero_catadores"],
13
  instrucciones=kwargs["instrucciones"],
14
  )
 
17
  self.technique = Tecnica(
18
  tipo_tecnica=TipoTecnica.objects.get(nombre_tecnica=basic["name_tecnica"]),
19
  id_estilo=EstiloPalabra.objects.get(id=basic["estilo_palabras"]),
20
+ repeticiones_max=basic["numero_repeticiones"] or 1,
21
  limite_catadores=basic["numero_catadores"],
22
  instrucciones=basic["instrucciones"] or "Espere instrucciones del Presentador",
23
  )
tecnicas/controllers/views_controller/create_session/panel_codes_controller.py CHANGED
@@ -23,7 +23,8 @@ class PanelCodesController():
23
 
24
  context_codes_form = {
25
  "form_codes": form_codes,
26
- "num_tester": num_tester
 
27
  }
28
 
29
  return render(request, "tecnicas/create_sesion/configuracion-panel-codes.html", context_codes_form)
@@ -48,6 +49,7 @@ class PanelCodesController():
48
  context_codes_form = {
49
  "form_codes": form_codes,
50
  "num_tester": num_tester,
 
51
  }
52
 
53
  if form_codes.is_valid():
@@ -64,6 +66,44 @@ class PanelCodesController():
64
 
65
  return render(request, "tecnicas/create_sesion/configuracion-panel-codes.html", context_codes_form)
66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  @staticmethod
68
  def defineInfoConvencional(data):
69
  num_products = data["numero_productos"]
 
23
 
24
  context_codes_form = {
25
  "form_codes": form_codes,
26
+ "num_tester": num_tester,
27
+ "use_technique": "escalas"
28
  }
29
 
30
  return render(request, "tecnicas/create_sesion/configuracion-panel-codes.html", context_codes_form)
 
49
  context_codes_form = {
50
  "form_codes": form_codes,
51
  "num_tester": num_tester,
52
+ "use_technique": "escalas"
53
  }
54
 
55
  if form_codes.is_valid():
 
66
 
67
  return render(request, "tecnicas/create_sesion/configuracion-panel-codes.html", context_codes_form)
68
 
69
+ @staticmethod
70
+ def controllGetRATA(request: HttpRequest, data):
71
+ num_products = data["numero_productos"]
72
+ codes_products = generarCodigos(num_products)
73
+ form_codes = CodesForm(codes=codes_products)
74
+
75
+ context_codes_form = {
76
+ "form_codes": form_codes,
77
+ "num_tester": 0,
78
+ "use_technique": "rata"
79
+ }
80
+
81
+ return render(request, "tecnicas/create_sesion/configuracion-panel-codes.html", context_codes_form)
82
+
83
+ @staticmethod
84
+ def controllPostRATA(request: HttpRequest):
85
+ codes = []
86
+ context_codes_form = {}
87
+
88
+ for name, value in request.POST.items():
89
+ if name.__contains__("producto_"):
90
+ codes.append(value)
91
+
92
+ form_codes = CodesForm(request.POST, codes=codes)
93
+
94
+ context_codes_form = {
95
+ "form_codes": form_codes,
96
+ "use_technique": "rata"
97
+ }
98
+
99
+ if form_codes.is_valid():
100
+ request.session["form_codes"] = codes
101
+ return redirect(reverse("cata_system:panel_configuracion_words"))
102
+ else:
103
+ context_codes_form["error"] = "error en los datos recibidos"
104
+
105
+ return render(request, "tecnicas/create_sesion/configuracion-panel-codes.html", context_codes_form)
106
+
107
  @staticmethod
108
  def defineInfoConvencional(data):
109
  num_products = data["numero_productos"]
tecnicas/controllers/views_controller/create_session/panel_create_controller.py CHANGED
@@ -1,5 +1,6 @@
1
  from django.http import HttpRequest, JsonResponse
2
  from django.db import transaction
 
3
  from tecnicas.utils import general_error
4
  from tecnicas.controllers import TecnicaController, EscalaController, ProductosController, OrdenesController, EstiloPalabrasController, PalabrasController, SesionController
5
  from tecnicas.utils import deleteDataSession
@@ -10,8 +11,9 @@ class PanelCreateController():
10
  pass
11
 
12
  @staticmethod
13
- def controllGetEscalas(request: HttpRequest, data):
14
- pass
 
15
 
16
  @staticmethod
17
  def controllPostEscalas(request: HttpRequest):
@@ -29,7 +31,6 @@ class PanelCreateController():
29
  data_basic = request.session["form_basic"]
30
  controllerTechnique = TecnicaController()
31
  controllerTechnique.setTechniqueFromBasicData(basic=data_basic)
32
-
33
  technique = controllerTechnique.saveTechnique()
34
  if not technique:
35
  return general_error("Error al guardar la técnica")
@@ -147,7 +148,7 @@ class PanelCreateController():
147
 
148
  # ////////////////////////////////// #
149
  #
150
- # Final step: Delete date en session #
151
  #
152
  # ////////////////////////////////// #
153
 
@@ -155,3 +156,119 @@ class PanelCreateController():
155
  return JsonResponse(context)
156
  else:
157
  return general_error("No se ha establecido acción")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  from django.http import HttpRequest, JsonResponse
2
  from django.db import transaction
3
+ from django.shortcuts import render
4
  from tecnicas.utils import general_error
5
  from tecnicas.controllers import TecnicaController, EscalaController, ProductosController, OrdenesController, EstiloPalabrasController, PalabrasController, SesionController
6
  from tecnicas.utils import deleteDataSession
 
11
  pass
12
 
13
  @staticmethod
14
+ def controllGetEscalas(request: HttpRequest):
15
+ return render(
16
+ request, 'tecnicas/create_sesion/creando_sesion.html')
17
 
18
  @staticmethod
19
  def controllPostEscalas(request: HttpRequest):
 
31
  data_basic = request.session["form_basic"]
32
  controllerTechnique = TecnicaController()
33
  controllerTechnique.setTechniqueFromBasicData(basic=data_basic)
 
34
  technique = controllerTechnique.saveTechnique()
35
  if not technique:
36
  return general_error("Error al guardar la técnica")
 
148
 
149
  # ////////////////////////////////// #
150
  #
151
+ # Final step: Delete date in session #
152
  #
153
  # ////////////////////////////////// #
154
 
 
156
  return JsonResponse(context)
157
  else:
158
  return general_error("No se ha establecido acción")
159
+
160
+ @staticmethod
161
+ def controllPostRATA(request: HttpRequest):
162
+ if request.POST.get('action') == 'create_session':
163
+ if not request.session.get("form_tags") or not request.session.get("form_codes") or not request.session.get("form_words"):
164
+ deleteDataSession(request)
165
+ return general_error("No se ha especificado información necesaria para la creación de la sesión, por favor, vuelve a intentarlo")
166
+
167
+ with transaction.atomic():
168
+ # ////////////////////////////////////////////////////// #
169
+ #
170
+ # First step: Create technique and scale with their tags #
171
+ #
172
+ # ////////////////////////////////////////////////////// #
173
+ data_basic = request.session["form_basic"]
174
+ data_basic["numero_catadores"] = 0
175
+ data_basic["numero_repeticiones"] = 1
176
+ controllerTechnique = TecnicaController()
177
+ controllerTechnique.setTechniqueFromBasicData(basic=data_basic)
178
+ technique = controllerTechnique.saveTechnique()
179
+ if not technique:
180
+ return general_error("Error al guardar la técnica")
181
+
182
+ data_scale = {
183
+ "id_scale": data_basic["tipo_escala"],
184
+ "size": data_basic["tamano_escala"],
185
+ "technique": technique
186
+ }
187
+
188
+ controllerScale = EscalaController(data=data_scale)
189
+
190
+ scale = controllerScale.saveScale()
191
+ if isinstance(scale, dict):
192
+ return general_error(scale["error"])
193
+
194
+ dict_tags = request.session["form_tags"]
195
+ saved_related_tags = controllerScale.realteTags(dict_tags)
196
+ if "error" in saved_related_tags:
197
+ return general_error(saved_related_tags["error"])
198
+
199
+ # ////////////////////////////////////////////// #
200
+ #
201
+ # Second step: Create productos with their codes #
202
+ #
203
+ # ////////////////////////////////////////////// #
204
+ codes = request.session["form_codes"]
205
+
206
+ controllerProducts = ProductosController(
207
+ codes=codes,
208
+ technique=technique
209
+ )
210
+
211
+ controllerProducts.setProductsNoSave()
212
+ saved_prodcuts = controllerProducts.saveProducts()
213
+ if isinstance(saved_prodcuts, dict):
214
+ return general_error(saved_prodcuts["error"])
215
+
216
+ # /////////////////////////////////////////////////////// #
217
+ #
218
+ # Third step: Create relations technique with Words Style #
219
+ #
220
+ # /////////////////////////////////////////////////////// #
221
+ ids_words = request.session["form_words"]
222
+ words_controller = PalabrasController(ids=ids_words)
223
+
224
+ words_to_use = words_controller.setWords()
225
+ if isinstance(words_to_use, dict):
226
+ return general_error(words_to_use["error"])
227
+
228
+ style_controller = EstiloPalabrasController(
229
+ technique=technique, words=words_to_use)
230
+
231
+ instace_style = style_controller.createAndSaveInstaceStyle()
232
+ if isinstance(instace_style, dict):
233
+ return general_error(instace_style["error"])
234
+
235
+ words_using = style_controller.relatedWords()
236
+ if isinstance(words_using, dict):
237
+ return general_error(words_using["error"])
238
+
239
+ # //////////////////////////////////////////////////////// #
240
+ #
241
+ # Fourth step: Create session and relat with the technique #
242
+ #
243
+ # //////////////////////////////////////////////////////// #
244
+ session_controller = SesionController(
245
+ name_session=data_basic["nombre_sesion"] if data_basic["nombre_sesion"] != "" else None,
246
+ technique=technique,
247
+ creator=request.user.user_presentador
248
+ )
249
+
250
+ setting_session = session_controller.setSession()
251
+ if isinstance(setting_session, dict):
252
+ return general_error(setting_session["error"])
253
+
254
+ saved_session = session_controller.saveSession()
255
+ if isinstance(saved_session, dict):
256
+ return general_error(saved_session["error"])
257
+
258
+ context = {
259
+ "message": "sesión creada",
260
+ "data": {
261
+ "codigo_sesion": saved_session.codigo_sesion,
262
+ "nombre_sesion": saved_session.nombre_sesion
263
+ }
264
+ }
265
+
266
+ # ////////////////////////////////// #
267
+ #
268
+ # Final step: Delete date en session #
269
+ #
270
+ # ////////////////////////////////// #
271
+ deleteDataSession(request)
272
+ return JsonResponse(context)
273
+ else:
274
+ return general_error("No se ha establecido acción")
tecnicas/forms/codes_form.py CHANGED
@@ -1,10 +1,11 @@
1
  from django import forms
2
 
 
3
  class CodesForm(forms.Form):
4
- def __init__(self, *args, codes = [], **kwargs):
5
  super().__init__(*args, **kwargs)
6
 
7
  for index, code in enumerate(codes):
8
  self.fields[f'producto_{index+1}'] = forms.CharField(max_length=3, required=True, min_length=3, initial=code, label=f"codigo {index+1}", widget=forms.TextInput(attrs={
9
  "class": "ct-code bg-surface-ligt p-1 border-b-1 text-center w-full disabled:bg-surface-general uppercase"
10
- }))
 
1
  from django import forms
2
 
3
+
4
  class CodesForm(forms.Form):
5
+ def __init__(self, *args, codes=[], **kwargs):
6
  super().__init__(*args, **kwargs)
7
 
8
  for index, code in enumerate(codes):
9
  self.fields[f'producto_{index+1}'] = forms.CharField(max_length=3, required=True, min_length=3, initial=code, label=f"codigo {index+1}", widget=forms.TextInput(attrs={
10
  "class": "ct-code bg-surface-ligt p-1 border-b-1 text-center w-full disabled:bg-surface-general uppercase"
11
+ }))
tecnicas/templates/tecnicas/create_sesion/configuracion-panel-codes.html CHANGED
@@ -27,12 +27,15 @@
27
  </label>
28
  {% endfor %}
29
  </article>
 
30
  <button type="button" class="cts-btn-general cts-btn-secondary btn-push uppercase"
31
  onclick="setPermutations()">
32
  regenerar ordenes
33
  </button>
 
34
  </article>
35
 
 
36
  <h2 class="text-2xl mb-2 font-bold">Ordenes</h2>
37
  <hr>
38
  <article class="w-full">
@@ -42,6 +45,7 @@
42
  </article>
43
  </section>
44
  </article>
 
45
 
46
  <hr>
47
  <article class="flex flex-col items-center gap-4">
@@ -62,11 +66,16 @@
62
  </a>
63
  </article>
64
  </form>
 
 
65
  <input type="number" value="{{ num_tester }}" class="ct-num-cata hidden" disabled>
 
66
  </article>
67
  </article>
68
  {% endblock %}
69
 
70
  {% block extra_js %}
 
71
  <script src="{% static 'js/panel-codes.js' %}"></script>
 
72
  {% endblock %}
 
27
  </label>
28
  {% endfor %}
29
  </article>
30
+ {% if use_technique == 'escalas' %}
31
  <button type="button" class="cts-btn-general cts-btn-secondary btn-push uppercase"
32
  onclick="setPermutations()">
33
  regenerar ordenes
34
  </button>
35
+ {% endif %}
36
  </article>
37
 
38
+ {% if use_technique == 'escalas' %}
39
  <h2 class="text-2xl mb-2 font-bold">Ordenes</h2>
40
  <hr>
41
  <article class="w-full">
 
45
  </article>
46
  </section>
47
  </article>
48
+ {% endif %}
49
 
50
  <hr>
51
  <article class="flex flex-col items-center gap-4">
 
66
  </a>
67
  </article>
68
  </form>
69
+
70
+ {% if use_technique == 'escalas' %}
71
  <input type="number" value="{{ num_tester }}" class="ct-num-cata hidden" disabled>
72
+ {% endif %}
73
  </article>
74
  </article>
75
  {% endblock %}
76
 
77
  {% block extra_js %}
78
+ {% if use_technique == 'escalas' %}
79
  <script src="{% static 'js/panel-codes.js' %}"></script>
80
+ {% endif %}
81
  {% endblock %}
tecnicas/views/sessions_config/configuration_panel_codes.py CHANGED
@@ -10,26 +10,31 @@ def configurationPanelCodes(req: HttpRequest):
10
  deleteDataSession(req)
11
  return redirect(reverse("cata_system:seleccion_tecnica") +
12
  "?error=datos del formulario requerido no encontrados")
13
-
14
  data_basic = req.session["form_basic"]
15
 
16
  if req.method == "GET":
17
  if data_basic["name_tecnica"] == "escalas":
18
  response = PanelCodesController.controllGetEscalas(
19
  req, data_basic)
 
 
 
20
  else:
21
  response = redirect(
22
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")
23
-
24
  return response
25
  elif req.method == "POST":
26
  if data_basic["name_tecnica"] == "escalas":
27
  response = PanelCodesController.controllPostEscalas(
28
  req, data_basic)
 
 
29
  else:
30
  response = redirect(
31
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")
32
-
33
  return response
34
  else:
35
  return JsonResponse({"message": "Método no permitido"})
 
10
  deleteDataSession(req)
11
  return redirect(reverse("cata_system:seleccion_tecnica") +
12
  "?error=datos del formulario requerido no encontrados")
13
+
14
  data_basic = req.session["form_basic"]
15
 
16
  if req.method == "GET":
17
  if data_basic["name_tecnica"] == "escalas":
18
  response = PanelCodesController.controllGetEscalas(
19
  req, data_basic)
20
+ elif data_basic["name_tecnica"] == "rata":
21
+ response = PanelCodesController.controllGetRATA(
22
+ req, data_basic)
23
  else:
24
  response = redirect(
25
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")
26
+
27
  return response
28
  elif req.method == "POST":
29
  if data_basic["name_tecnica"] == "escalas":
30
  response = PanelCodesController.controllPostEscalas(
31
  req, data_basic)
32
+ elif data_basic["name_tecnica"] == "rata":
33
+ response = PanelCodesController.controllPostRATA(request=req)
34
  else:
35
  response = redirect(
36
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")
37
+
38
  return response
39
  else:
40
  return JsonResponse({"message": "Método no permitido"})
tecnicas/views/sessions_config/configuration_panel_words.py CHANGED
@@ -14,7 +14,7 @@ def configurationPanelWords(req: HttpRequest):
14
  basic_data = req.session["form_basic"]
15
 
16
  if req.method == "GET":
17
- if basic_data["name_tecnica"] == "escalas":
18
  response = PanelWordsController.controllGetEscalas(req)
19
  else:
20
  response = redirect(
@@ -22,12 +22,12 @@ def configurationPanelWords(req: HttpRequest):
22
 
23
  return response
24
  elif req.method == "POST":
25
- if basic_data["name_tecnica"] == "escalas":
26
  response = PanelWordsController.controllPostEscalas(req)
27
  else:
28
  response = redirect(
29
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")
30
-
31
  return response
32
  else:
33
  return JsonResponse({"message": "Método no permitido"})
 
14
  basic_data = req.session["form_basic"]
15
 
16
  if req.method == "GET":
17
+ if basic_data["name_tecnica"] == "escalas" or basic_data["name_tecnica"] == "rata":
18
  response = PanelWordsController.controllGetEscalas(req)
19
  else:
20
  response = redirect(
 
22
 
23
  return response
24
  elif req.method == "POST":
25
+ if basic_data["name_tecnica"] == "escalas" or basic_data["name_tecnica"] == "rata":
26
  response = PanelWordsController.controllPostEscalas(req)
27
  else:
28
  response = redirect(
29
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")
30
+
31
  return response
32
  else:
33
  return JsonResponse({"message": "Método no permitido"})
tecnicas/views/sessions_config/create_session.py CHANGED
@@ -14,9 +14,8 @@ def createSession(req: HttpRequest):
14
  basic_data = req.session["form_basic"]
15
 
16
  if req.method == "GET":
17
- if basic_data["name_tecnica"] == "escalas":
18
- response = render(
19
- req, 'tecnicas/create_sesion/creando_sesion.html')
20
  else:
21
  response = redirect(
22
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")
@@ -25,6 +24,8 @@ def createSession(req: HttpRequest):
25
  if req.method == "POST":
26
  if basic_data["name_tecnica"] == "escalas":
27
  response = PanelCreateController.controllPostEscalas(req)
 
 
28
  else:
29
  response = redirect(
30
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")
 
14
  basic_data = req.session["form_basic"]
15
 
16
  if req.method == "GET":
17
+ if basic_data["name_tecnica"] == "escalas" or basic_data["name_tecnica"] == "rata":
18
+ response = PanelCreateController.controllGetEscalas(req)
 
19
  else:
20
  response = redirect(
21
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")
 
24
  if req.method == "POST":
25
  if basic_data["name_tecnica"] == "escalas":
26
  response = PanelCreateController.controllPostEscalas(req)
27
+ elif basic_data["name_tecnica"] == "rata":
28
+ response = PanelCreateController.controllPostRATA(req)
29
  else:
30
  response = redirect(
31
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")