chartManD commited on
Commit
1c02f87
·
1 Parent(s): 3f54131

Se implementa uso de Vocabularios para tecnica esclas y RATA

Browse files
tecnicas/controllers/models_controller/palabras_controller.py CHANGED
@@ -22,17 +22,16 @@ class PalabrasController():
22
  @staticmethod
23
  def getWordsInTechnique(technique: Tecnica):
24
  if technique.id_estilo.nombre_estilo == "atributos":
25
- es_atribute = EsAtributo.objects.get(id_tecnica=technique)
26
- words = list(es_atribute.palabras.all())
 
27
  return words
28
  elif technique.id_estilo.nombre_estilo == "vocabulario":
29
- try:
30
- palabras = Palabra.objects.filter(
31
- vocabulario__esvocabulario__id_tecnica=technique
32
- )
33
- return list(palabras.distinct()) if palabras.exists() else controller_error("Técnica sin palabras con vocabulario")
34
- except Exception as e:
35
  return controller_error("Técnica sin palabras con vocabulario")
 
36
 
37
  @staticmethod
38
  def getWordsWithoutData(recoreded_data: list[Dato], words: list[Palabra]):
 
22
  @staticmethod
23
  def getWordsInTechnique(technique: Tecnica):
24
  if technique.id_estilo.nombre_estilo == "atributos":
25
+ words = list(technique.tecnica_esatributo.palabras.all())
26
+ if not words:
27
+ return controller_error("Técnica sin palabras")
28
  return words
29
  elif technique.id_estilo.nombre_estilo == "vocabulario":
30
+ words = list(
31
+ technique.tecnica_esvacabulario.id_vocabulario.palabras.all())
32
+ if not words:
 
 
 
33
  return controller_error("Técnica sin palabras con vocabulario")
34
+ return words
35
 
36
  @staticmethod
37
  def getWordsWithoutData(recoreded_data: list[Dato], words: list[Palabra]):
tecnicas/controllers/views_controller/create_session/panel_create_controller.py CHANGED
@@ -2,6 +2,7 @@ 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
7
 
@@ -21,139 +22,155 @@ class PanelCreateController():
21
  if not request.session.get("form_tags") or not request.session.get("form_codes") or not request.session.get("form_words"):
22
  deleteDataSession(request)
23
  return general_error("No se ha especificado información necesaria para la creación de la sesión, por favor, vuelve a intentarlo")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
- with transaction.atomic():
26
- # ////////////////////////////////////////////////////// #
27
- #
28
- # First step: Create technique and scale with their tags #
29
- #
30
- # ////////////////////////////////////////////////////// #
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")
37
-
38
- data_scale = {
39
- "id_scale": data_basic["tipo_escala"],
40
- "size": data_basic["tamano_escala"],
41
- "technique": technique
42
- }
43
-
44
- controllerScale = EscalaController(data=data_scale)
45
-
46
- scale = controllerScale.saveScale()
47
- if isinstance(scale, dict):
48
- return general_error(scale["error"])
49
-
50
- dict_tags = request.session["form_tags"]
51
- saved_related_tags = controllerScale.realteTags(dict_tags)
52
- if "error" in saved_related_tags:
53
- return general_error(saved_related_tags["error"])
54
-
55
- # ////////////////////////////////////////////////////////// #
56
- #
57
- # Second step: Create orders, productos and set the position #
58
- #
59
- # ////////////////////////////////////////////////////////// #
60
- data_codes = request.session["form_codes"]
61
-
62
- list_codes_dict = data_codes["product_codes"]
63
-
64
- codes = []
65
- for product in list_codes_dict:
66
- code = next(iter(product.values()))
67
- codes.append(code)
68
-
69
- controllerProducts = ProductosController(
70
- codes=codes,
71
- technique=technique
72
- )
73
-
74
- controllerProducts.setProductsNoSave()
75
- saved_prodcuts = controllerProducts.saveProducts()
76
- if isinstance(saved_prodcuts, dict):
77
- return general_error(saved_prodcuts["error"])
78
-
79
- raw_sort_codes = data_codes["sort_codes"]
80
- controllerOrdes = OrdenesController(
81
- raw_orders=raw_sort_codes,
82
- list_products=saved_prodcuts,
83
- technique=technique
84
- )
85
-
86
- controllerOrdes.setOrdersToSave()
87
- saved_orders = controllerOrdes.saveOrders()
88
- if isinstance(saved_orders, dict):
89
- return general_error(saved_orders["error"])
90
-
91
- seded_positions = controllerOrdes.setPositions()
92
- if isinstance(seded_positions, dict):
93
- return general_error(seded_positions["error"])
94
-
95
- saved_postions = controllerOrdes.savePositions()
96
- if isinstance(saved_postions, dict):
97
- return general_error(saved_prodcuts["error"])
98
-
99
- # /////////////////////////////////////////////////////// #
100
- #
101
- # Third step: Create relations technique with Words Style #
102
- #
103
- # /////////////////////////////////////////////////////// #
104
- ids_words = request.session["form_words"]
105
- words_controller = PalabrasController(ids=ids_words)
106
-
107
- words_to_use = words_controller.setWords()
108
- if isinstance(words_to_use, dict):
109
- return general_error(words_to_use["error"])
110
-
111
- style_controller = EstiloPalabrasController(
112
- technique=technique, words=words_to_use)
113
-
114
- instace_style = style_controller.createAndSaveInstaceStyle()
115
- if isinstance(instace_style, dict):
116
- return general_error(instace_style["error"])
117
-
118
- words_using = style_controller.relatedWords()
119
- if isinstance(words_using, dict):
120
- return general_error(words_using["error"])
121
-
122
- # //////////////////////////////////////////////////////// #
123
- #
124
- # Fourth step: Create session and relat with the technique #
125
- #
126
- # //////////////////////////////////////////////////////// #
127
- session_controller = SesionController(
128
- name_session=data_basic["nombre_sesion"] if data_basic["nombre_sesion"] != "" else None,
129
- technique=technique,
130
- creator=request.user.user_presentador
131
- )
132
-
133
- setting_session = session_controller.setSession()
134
- if isinstance(setting_session, dict):
135
- return general_error(setting_session["error"])
136
-
137
- saved_session = session_controller.saveSession()
138
- if isinstance(saved_session, dict):
139
- return general_error(saved_session["error"])
140
-
141
- context = {
142
- "message": "sesión creada",
143
- "data": {
144
- "codigo_sesion": saved_session.codigo_sesion,
145
- "nombre_sesion": saved_session.nombre_sesion
146
  }
147
- }
148
 
149
- # ////////////////////////////////// #
150
- #
151
- # Final step: Delete date in session #
152
- #
153
- # ////////////////////////////////// #
154
 
155
- deleteDataSession(request)
156
- return JsonResponse(context)
 
 
157
  else:
158
  return general_error("No se ha establecido acción")
159
 
@@ -163,112 +180,131 @@ class PanelCreateController():
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")
 
2
  from django.db import transaction
3
  from django.shortcuts import render
4
  from tecnicas.utils import general_error
5
+ from tecnicas.models import EsVocabulario, Vocabulario
6
  from tecnicas.controllers import TecnicaController, EscalaController, ProductosController, OrdenesController, EstiloPalabrasController, PalabrasController, SesionController
7
  from tecnicas.utils import deleteDataSession
8
 
 
22
  if not request.session.get("form_tags") or not request.session.get("form_codes") or not request.session.get("form_words"):
23
  deleteDataSession(request)
24
  return general_error("No se ha especificado información necesaria para la creación de la sesión, por favor, vuelve a intentarlo")
25
+ try:
26
+ with transaction.atomic():
27
+ # ////////////////////////////////////////////////////// #
28
+ #
29
+ # First step: Create technique and scale with their tags #
30
+ #
31
+ # ////////////////////////////////////////////////////// #
32
+ data_basic = request.session["form_basic"]
33
+ controllerTechnique = TecnicaController()
34
+ controllerTechnique.setTechniqueFromBasicData(
35
+ basic=data_basic)
36
+ technique = controllerTechnique.saveTechnique()
37
+ if not technique:
38
+ raise ValueError("Error al guardar la técnica")
39
+
40
+ data_scale = {
41
+ "id_scale": data_basic["tipo_escala"],
42
+ "size": data_basic["tamano_escala"],
43
+ "technique": technique
44
+ }
45
 
46
+ controllerScale = EscalaController(data=data_scale)
47
+
48
+ scale = controllerScale.saveScale()
49
+ if isinstance(scale, dict):
50
+ raise ValueError(scale["error"])
51
+
52
+ dict_tags = request.session["form_tags"]
53
+ saved_related_tags = controllerScale.realteTags(dict_tags)
54
+ if "error" in saved_related_tags:
55
+ raise ValueError(saved_related_tags["error"])
56
+
57
+ # ////////////////////////////////////////////////////////// #
58
+ #
59
+ # Second step: Create orders, productos and set the position #
60
+ #
61
+ # ////////////////////////////////////////////////////////// #
62
+ data_codes = request.session["form_codes"]
63
+
64
+ list_codes_dict = data_codes["product_codes"]
65
+
66
+ codes = []
67
+ for product in list_codes_dict:
68
+ code = next(iter(product.values()))
69
+ codes.append(code)
70
+
71
+ controllerProducts = ProductosController(
72
+ codes=codes,
73
+ technique=technique
74
+ )
75
+
76
+ controllerProducts.setProductsNoSave()
77
+ saved_prodcuts = controllerProducts.saveProducts()
78
+ if isinstance(saved_prodcuts, dict):
79
+ raise ValueError(saved_prodcuts["error"])
80
+
81
+ raw_sort_codes = data_codes["sort_codes"]
82
+ controllerOrdes = OrdenesController(
83
+ raw_orders=raw_sort_codes,
84
+ list_products=saved_prodcuts,
85
+ technique=technique
86
+ )
87
+
88
+ controllerOrdes.setOrdersToSave()
89
+ saved_orders = controllerOrdes.saveOrders()
90
+ if isinstance(saved_orders, dict):
91
+ raise ValueError(saved_orders["error"])
92
+
93
+ seded_positions = controllerOrdes.setPositions()
94
+ if isinstance(seded_positions, dict):
95
+ raise ValueError(seded_positions["error"])
96
+
97
+ saved_postions = controllerOrdes.savePositions()
98
+ if isinstance(saved_postions, dict):
99
+ raise ValueError(saved_prodcuts["error"])
100
+
101
+ # /////////////////////////////////////////////////////// #
102
+ #
103
+ # Third step: Create relations technique with Words Style #
104
+ #
105
+ # /////////////////////////////////////////////////////// #
106
+ style_words = technique.id_estilo.nombre_estilo
107
+ if style_words == "atributos":
108
+ ids_words = request.session["form_words"]
109
+ words_controller = PalabrasController(ids=ids_words)
110
+
111
+ words_to_use = words_controller.setWords()
112
+ if isinstance(words_to_use, dict):
113
+ raise ValueError(words_to_use["error"])
114
+
115
+ style_controller = EstiloPalabrasController(
116
+ technique=technique, words=words_to_use)
117
+
118
+ instace_style = style_controller.createAndSaveInstaceStyle()
119
+ if isinstance(instace_style, dict):
120
+ raise ValueError(instace_style["error"])
121
+
122
+ words_using = style_controller.relatedWords()
123
+ if isinstance(words_using, dict):
124
+ raise ValueError(words_using["error"])
125
+ elif style_words == "vocabulario":
126
+ name_vocabulary = request.session["form_words"]
127
+ vocabulary = Vocabulario.objects.get(
128
+ nombre_vocabulario=name_vocabulary)
129
+
130
+ es_vocabulary = EsVocabulario.objects.create(
131
+ id_tecnica=technique,
132
+ id_vocabulario=vocabulary
133
+ )
134
+ else:
135
+ raise ValueError("Estilo de palabas no permitido")
136
+
137
+ # //////////////////////////////////////////////////////// #
138
+ #
139
+ # Fourth step: Create session and relat with the technique #
140
+ #
141
+ # //////////////////////////////////////////////////////// #
142
+ session_controller = SesionController(
143
+ name_session=data_basic["nombre_sesion"] if data_basic["nombre_sesion"] != "" else None,
144
+ technique=technique,
145
+ creator=request.user.user_presentador
146
+ )
147
+
148
+ setting_session = session_controller.setSession()
149
+ if isinstance(setting_session, dict):
150
+ raise ValueError(setting_session["error"])
151
+
152
+ saved_session = session_controller.saveSession()
153
+ if isinstance(saved_session, dict):
154
+ raise ValueError(saved_session["error"])
155
+
156
+ context = {
157
+ "message": "sesión creada",
158
+ "data": {
159
+ "codigo_sesion": saved_session.codigo_sesion,
160
+ "nombre_sesion": saved_session.nombre_sesion
161
+ }
 
 
 
 
 
162
  }
 
163
 
164
+ # ////////////////////////////////// #
165
+ #
166
+ # Final step: Delete date in session #
167
+ #
168
+ # ////////////////////////////////// #
169
 
170
+ deleteDataSession(request)
171
+ return JsonResponse(context)
172
+ except ValueError as e:
173
+ return general_error(f"Error: {e}")
174
  else:
175
  return general_error("No se ha establecido acción")
176
 
 
180
  if not request.session.get("form_tags") or not request.session.get("form_codes") or not request.session.get("form_words"):
181
  deleteDataSession(request)
182
  return general_error("No se ha especificado información necesaria para la creación de la sesión, por favor, vuelve a intentarlo")
183
+ try:
184
+ with transaction.atomic():
185
+ # ////////////////////////////////////////////////////// #
186
+ #
187
+ # First step: Create technique and scale with their tags #
188
+ #
189
+ # ////////////////////////////////////////////////////// #
190
+ data_basic = request.session["form_basic"]
191
+ data_basic["numero_catadores"] = 0
192
+ data_basic["numero_repeticiones"] = 1
193
+ controllerTechnique = TecnicaController()
194
+ controllerTechnique.setTechniqueFromBasicData(basic=data_basic)
195
+ technique = controllerTechnique.saveTechnique()
196
+ if not technique:
197
+ raise ValueError("Error al guardar la técnica")
198
+
199
+ data_scale = {
200
+ "id_scale": data_basic["tipo_escala"],
201
+ "size": data_basic["tamano_escala"],
202
+ "technique": technique
203
+ }
204
 
205
+ controllerScale = EscalaController(data=data_scale)
206
+
207
+ scale = controllerScale.saveScale()
208
+ if isinstance(scale, dict):
209
+ raise ValueError(scale["error"])
210
+
211
+ dict_tags = request.session["form_tags"]
212
+ saved_related_tags = controllerScale.realteTags(dict_tags)
213
+ if "error" in saved_related_tags:
214
+ raise ValueError(saved_related_tags["error"])
215
+
216
+ # ////////////////////////////////////////////// #
217
+ #
218
+ # Second step: Create productos with their codes #
219
+ #
220
+ # ////////////////////////////////////////////// #
221
+ codes = request.session["form_codes"]
222
+
223
+ controllerProducts = ProductosController(
224
+ codes=codes,
225
+ technique=technique
226
+ )
227
+
228
+ controllerProducts.setProductsNoSave()
229
+ saved_prodcuts = controllerProducts.saveProducts()
230
+ if isinstance(saved_prodcuts, dict):
231
+ raise ValueError(saved_prodcuts["error"])
232
+
233
+ # /////////////////////////////////////////////////////// #
234
+ #
235
+ # Third step: Create relations technique with Words Style #
236
+ #
237
+ # /////////////////////////////////////////////////////// #
238
+ style_words = technique.id_estilo.nombre_estilo
239
+ if style_words == "atributos":
240
+ ids_words = request.session["form_words"]
241
+ words_controller = PalabrasController(ids=ids_words)
242
+
243
+ words_to_use = words_controller.setWords()
244
+ if isinstance(words_to_use, dict):
245
+ raise ValueError(words_to_use["error"])
246
+
247
+ style_controller = EstiloPalabrasController(
248
+ technique=technique, words=words_to_use)
249
+
250
+ instace_style = style_controller.createAndSaveInstaceStyle()
251
+ if isinstance(instace_style, dict):
252
+ raise ValueError(instace_style["error"])
253
+
254
+ words_using = style_controller.relatedWords()
255
+ if isinstance(words_using, dict):
256
+ raise ValueError(words_using["error"])
257
+ elif style_words == "vocabulario":
258
+ name_vocabulary = request.session["form_words"]
259
+ try:
260
+ vocabulary = Vocabulario.objects.get(
261
+ nombre_vocabulario=name_vocabulary)
262
+ except Vocabulario.DoesNotExist:
263
+ raise ValueError("Vocabulario no encontrado")
264
+
265
+ es_vocabulary = EsVocabulario.objects.create(
266
+ id_tecnica=technique,
267
+ id_vocabulario=vocabulary
268
+ )
269
+ else:
270
+ raise ValueError("Estilo de palabas no permitido")
271
+
272
+ # //////////////////////////////////////////////////////// #
273
+ #
274
+ # Fourth step: Create session and relat with the technique #
275
+ #
276
+ # //////////////////////////////////////////////////////// #
277
+ session_controller = SesionController(
278
+ name_session=data_basic["nombre_sesion"] if data_basic["nombre_sesion"] != "" else None,
279
+ technique=technique,
280
+ creator=request.user.user_presentador
281
+ )
282
+
283
+ setting_session = session_controller.setSession()
284
+ if isinstance(setting_session, dict):
285
+ raise ValueError(setting_session["error"])
286
+
287
+ saved_session = session_controller.saveSession()
288
+ if isinstance(saved_session, dict):
289
+ raise ValueError(saved_session["error"])
290
+
291
+ context = {
292
+ "message": "sesión creada",
293
+ "data": {
294
+ "codigo_sesion": saved_session.codigo_sesion,
295
+ "nombre_sesion": saved_session.nombre_sesion
296
+ }
 
 
 
 
297
  }
 
298
 
299
+ # ////////////////////////////////// #
300
+ #
301
+ # Final step: Delete date en session #
302
+ #
303
+ # ////////////////////////////////// #
304
+
305
+ deleteDataSession(request)
306
+ return JsonResponse(context)
307
+ except ValueError as e:
308
+ return general_error(f"Error: {e}")
309
  else:
310
  return general_error("No se ha establecido acción")
tecnicas/controllers/views_controller/create_session/panel_words_controller.py CHANGED
@@ -74,5 +74,5 @@ class PanelWordsController():
74
  context["error"] = "Erro al validar el vocabulario"
75
  return render(request, PanelWordsController.current_url_escalas_vocabulary, context)
76
 
77
- request.session["vocabulary"] = vocabulary.nombre_vocabulario
78
  return redirect(reverse("cata_system:creando_sesion"))
 
74
  context["error"] = "Erro al validar el vocabulario"
75
  return render(request, PanelWordsController.current_url_escalas_vocabulary, context)
76
 
77
+ request.session["form_words"] = vocabulary.nombre_vocabulario
78
  return redirect(reverse("cata_system:creando_sesion"))