Spaces:
Sleeping
Sleeping
File size: 3,077 Bytes
7630d83 5fd9ba0 7630d83 5fd9ba0 7630d83 5fd9ba0 7630d83 5fd9ba0 7630d83 5fd9ba0 7630d83 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
from django.http import JsonResponse, HttpRequest
from django.db import transaction
from tecnicas.models import Calificacion, Dato, ValorBooleano, Participacion, Palabra
class RatingCataController():
def __init__(self):
pass
@staticmethod
def saveRatingWords(request: HttpRequest, data_words: list[dict], data_prodct: dict):
try:
with transaction.atomic():
participation = Participacion.objects.get(
id=request.session["id_participation"])
if not participation:
raise ValueError("No está autorizado en la sesión")
ids_words = []
words_values = {}
# Acoplar datos para usar
for da_wo in data_words:
ids_words.append(da_wo["id"])
words_values[da_wo["word"]] = da_wo["is_check"]
words_for_rating = Palabra.objects.filter(id__in=ids_words)
if not words_for_rating:
raise ValueError("No se han encontrado sus palabras")
technique = participation.tecnica
# Creando la calificacion
(rating, creataed) = Calificacion.objects.get_or_create(
num_repeticion=technique.repeticion,
id_producto_id=data_prodct["id"],
id_tecnica=technique,
id_catador=request.user.user_catador
)
if not rating:
raise ValueError("Problemas al crear la calificación")
# Guardando datos
data_for_save = []
for word in words_for_rating:
data_for_save.append(Dato(
id_palabra=word,
id_calificacion=rating
))
Dato.objects.bulk_create(data_for_save)
data_saved = Dato.objects.filter(
id_calificacion=rating).only("id_palabra")
if not data_saved:
raise ValueError("Problemas al crear los datos")
# Guardando valores de datos
values_for_save = []
for data in data_saved:
word_for_rating = data.id_palabra.nombre_palabra
values_for_save.append(
ValorBooleano(
id_dato=data,
valor=words_values[word_for_rating]
)
)
ValorBooleano.objects.bulk_create(values_for_save)
values_saves = ValorBooleano.objects.filter(
id_dato__id_calificacion=rating).count()
if not values_saves:
raise ValueError("Error al guardar los datos")
return JsonResponse({"message": "Valores guardados"})
except ValueError as e:
print(f"Error de calificacion: {e}")
return JsonResponse({"error": e}, statusstatus=500)
|