chartManD commited on
Commit
6b0731f
·
1 Parent(s): b1c8a9e

Creacion de sesion con perfil flash

Browse files
tecnicas/controllers/views_controller/create_session/panel_codes_controller.py CHANGED
@@ -8,7 +8,8 @@ import json
8
 
9
  class PanelCodesController():
10
  url_current_panel = "tecnicas/create_sesion/configuracion-panel-codes.html"
11
- url_next_panel = "cata_system:panel_configuracion_words"
 
12
 
13
  def __init__(self):
14
  pass
@@ -58,7 +59,7 @@ class PanelCodesController():
58
 
59
  codes_sort["sort_codes"] = sorts_code
60
  request.session["form_codes"] = codes_sort
61
- return redirect(reverse(PanelCodesController.url_next_panel))
62
  else:
63
  context_codes_form["error"] = "error en los datos recibidos"
64
 
@@ -96,7 +97,7 @@ class PanelCodesController():
96
 
97
  if form_codes.is_valid():
98
  request.session["form_codes"] = codes
99
- return redirect(reverse(PanelCodesController.url_next_panel))
100
  else:
101
  context_codes_form["error"] = "error en los datos recibidos"
102
 
@@ -114,3 +115,27 @@ class PanelCodesController():
114
  }
115
 
116
  return render(request, PanelCodesController.url_current_panel, context_codes_form)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
  class PanelCodesController():
10
  url_current_panel = "tecnicas/create_sesion/configuracion-panel-codes.html"
11
+ url_words = "cata_system:panel_configuracion_words"
12
+ url_create_session = "cata_system:creando_sesion"
13
 
14
  def __init__(self):
15
  pass
 
59
 
60
  codes_sort["sort_codes"] = sorts_code
61
  request.session["form_codes"] = codes_sort
62
+ return redirect(reverse(PanelCodesController.url_words))
63
  else:
64
  context_codes_form["error"] = "error en los datos recibidos"
65
 
 
97
 
98
  if form_codes.is_valid():
99
  request.session["form_codes"] = codes
100
+ return redirect(reverse(PanelCodesController.url_words))
101
  else:
102
  context_codes_form["error"] = "error en los datos recibidos"
103
 
 
115
  }
116
 
117
  return render(request, PanelCodesController.url_current_panel, context_codes_form)
118
+
119
+ @staticmethod
120
+ def controllPostPF(request: HttpRequest):
121
+ codes = []
122
+ context_codes_form = {}
123
+
124
+ for name, value in request.POST.items():
125
+ if name.__contains__("producto_"):
126
+ codes.append(value)
127
+
128
+ form_codes = CodesForm(request.POST, codes=codes)
129
+
130
+ context_codes_form = {
131
+ "form_codes": form_codes,
132
+ "use_technique": "perfil flash"
133
+ }
134
+
135
+ if form_codes.is_valid():
136
+ request.session["form_codes"] = codes
137
+ return redirect(reverse(PanelCodesController.url_create_session))
138
+ else:
139
+ context_codes_form["error"] = "error en los datos recibidos"
140
+
141
+ return render(request, PanelCodesController.url_current_panel, context_codes_form)
tecnicas/controllers/views_controller/create_session/panel_create_controller.py CHANGED
@@ -444,3 +444,104 @@ class PanelCreateController():
444
  return general_error(f"Error: {e}")
445
  else:
446
  return general_error("No se ha establecido acción")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
444
  return general_error(f"Error: {e}")
445
  else:
446
  return general_error("No se ha establecido acción")
447
+
448
+ @staticmethod
449
+ def controllPostPF(request: HttpRequest):
450
+ if request.POST.get('action') == 'create_session':
451
+ if not request.session.get("form_codes") or not request.session.get("form_tags"):
452
+ deleteDataSession(request)
453
+ return general_error("No se ha especificado información necesaria para la creación de la sesión, por favor, vuelve a intentarlo")
454
+ try:
455
+ with transaction.atomic():
456
+ # ////////////////////////////////////////////////////// #
457
+ #
458
+ # First step: Create technique and scale with their tags #
459
+ #
460
+ # ////////////////////////////////////////////////////// #
461
+ data_basic = request.session["form_basic"]
462
+ data_basic["numero_repeticiones"] = 0
463
+
464
+ technique = Tecnica.objects.create(
465
+ tipo_tecnica=TipoTecnica.objects.get(
466
+ nombre_tecnica=data_basic["name_tecnica"]),
467
+ id_estilo=EstiloPalabra.objects.get(
468
+ nombre_estilo="vocabulario"),
469
+ repeticiones_max=data_basic["numero_repeticiones"],
470
+ limite_catadores=data_basic["numero_catadores"],
471
+ instrucciones=data_basic["instrucciones"] or "Espere instrucciones del Presentador",
472
+ )
473
+
474
+ if not technique:
475
+ raise ValueError("Error al guardar la técnica")
476
+
477
+ data_scale = {
478
+ "id_scale": data_basic["tipo_escala"],
479
+ "size": data_basic["tamano_escala"],
480
+ "technique": technique
481
+ }
482
+
483
+ controllerScale = EscalaController(data=data_scale)
484
+
485
+ scale = controllerScale.saveScale()
486
+ if isinstance(scale, dict):
487
+ raise ValueError(scale["error"])
488
+
489
+ dict_tags = request.session["form_tags"]
490
+ saved_related_tags = controllerScale.realteTags(dict_tags)
491
+ if "error" in saved_related_tags:
492
+ raise ValueError(saved_related_tags["error"])
493
+
494
+ # ////////////////////////////////////////////// #
495
+ #
496
+ # Second step: Create productos with their codes #
497
+ #
498
+ # ////////////////////////////////////////////// #
499
+ codes = request.session["form_codes"]
500
+
501
+ if not codes:
502
+ raise ValueError("No hay códigos de productos")
503
+
504
+ products_without_save = []
505
+ for code in codes:
506
+ product = Producto(
507
+ codigoProducto=code,
508
+ id_tecnica=technique
509
+ )
510
+ products_without_save.append(product)
511
+
512
+ Producto.objects.bulk_create(products_without_save)
513
+
514
+ # /////////////////////////////////////////////////////// #
515
+ #
516
+ # Third step: Create session and relat with the technique #
517
+ #
518
+ # /////////////////////////////////////////////////////// #
519
+ session = SesionSensorial.objects.create(
520
+ nombre_sesion=data_basic["nombre_sesion"] if data_basic["nombre_sesion"] != "" else None,
521
+ tecnica=technique,
522
+ creadoPor=request.user.user_presentador
523
+ )
524
+
525
+ if not session:
526
+ raise ValueError("Error al crear sesion sensorial")
527
+
528
+ context = {
529
+ "message": "sesión creada",
530
+ "data": {
531
+ "codigo_sesion": session.codigo_sesion,
532
+ "nombre_sesion": session.nombre_sesion
533
+ }
534
+ }
535
+
536
+ # ////////////////////////////////// #
537
+ #
538
+ # Final step: Delete date en session #
539
+ #
540
+ # ////////////////////////////////// #
541
+ deleteDataSession(request)
542
+ return JsonResponse(context)
543
+
544
+ except ValueError as e:
545
+ return general_error(f"Error: {e}")
546
+ else:
547
+ return general_error("No se ha establecido acción")
tecnicas/views/sessions_config/configuration_panel_codes.py CHANGED
@@ -35,6 +35,9 @@ def configurationPanelCodes(req: HttpRequest):
35
  elif name_technique == "cata":
36
  response = PanelCodesController.controllPostRATA(
37
  request=req, is_rata=False)
 
 
 
38
  else:
39
  response = redirect(
40
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")
 
35
  elif name_technique == "cata":
36
  response = PanelCodesController.controllPostRATA(
37
  request=req, is_rata=False)
38
+ elif name_technique == "perfil flash":
39
+ response = PanelCodesController.controllPostPF(
40
+ request=req)
41
  else:
42
  response = redirect(
43
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")
tecnicas/views/sessions_config/create_session.py CHANGED
@@ -15,7 +15,7 @@ def createSession(req: HttpRequest):
15
  name_technique = basic_data["name_tecnica"]
16
 
17
  if req.method == "GET":
18
- if name_technique == "escalas" or name_technique == "rata" or name_technique == "cata":
19
  response = PanelCreateController.controllGetEscalas(req)
20
  else:
21
  response = redirect(
@@ -29,6 +29,8 @@ def createSession(req: HttpRequest):
29
  response = PanelCreateController.controllPostRATA(req)
30
  elif name_technique == "cata":
31
  response = PanelCreateController.controllPostCATA(req)
 
 
32
  else:
33
  response = redirect(
34
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")
 
15
  name_technique = basic_data["name_tecnica"]
16
 
17
  if req.method == "GET":
18
+ if name_technique == "escalas" or name_technique == "rata" or name_technique == "cata" or name_technique == "perfil flash":
19
  response = PanelCreateController.controllGetEscalas(req)
20
  else:
21
  response = redirect(
 
29
  response = PanelCreateController.controllPostRATA(req)
30
  elif name_technique == "cata":
31
  response = PanelCreateController.controllPostCATA(req)
32
+ elif name_technique == "perfil flash":
33
+ response = PanelCreateController.controllPostPF(req)
34
  else:
35
  response = redirect(
36
  reverse("cata_system:seleccion_tecnica") + "?error=Técnica no valida")