Spaces:
Sleeping
Sleeping
File size: 3,733 Bytes
b417c45 adaa824 cf8de8a 365183d d21ee1b 365183d b0a47bb 365183d e49f021 365183d adaa824 b0a47bb e102c92 365183d adaa824 365183d b0a47bb adaa824 b0a47bb adaa824 b0a47bb 365183d adaa824 b0a47bb adaa824 b0a47bb adaa824 b0a47bb adaa824 b0a47bb adaa824 b0a47bb adaa824 b0a47bb adaa824 e102c92 b417c45 |
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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
from ...models import Etiqueta, EtiquetasEscala, Escala, TipoEscala, Tecnica
from django.db import DatabaseError
from ...utils import controller_error
class EscalaController():
scale: Escala
tags_relation: dict[str, EtiquetasEscala]
def __init__(self, data, use_scale: Escala = None):
if use_scale:
self.scale = use_scale
else:
self.scale = Escala(
id_tipo_escala=TipoEscala.objects.get(id=data["id_scale"]),
longitud=data["size"],
tecnica=data["technique"]
)
def setScale(self, newData, use_scale: Escala):
if use_scale:
self.scale = use_scale
else:
self.scale = Escala(
id_tipo_escala=TipoEscala.objects.get(id=data["id_scale"]),
longitud=data["size"],
tecnica=data["technique"]
)
def saveScale(self):
try:
self.scale.save()
return self.scale
except DatabaseError as error:
return controller_error("Error al guardar la escala")
def deleteScale(self):
self.scale.delete()
def addAndSaveTags(self, tags: dict):
self.tags_relation = {}
if self.scale.id_tipo_escala.nombre_escala == "cotinua":
ok_tags = self.realte_tags_type_cotinue(tags)
if ok_tags["error"]:
return ok_tags
return self.tags_relation
elif self.scale.id_tipo_escala.nombre_escala == "estructurada":
ok_tags = self.realte_tags_type_structure(tags)
if ok_tags["error"]:
return ok_tags
return self.tags_relation
def deleteRelationshipsWithLabels(self):
for name, tag in self.tags_relation.items():
tag.delete()
def realteTags(self, tags: dict):
try:
index = 1
self.tags_relation = {}
for name, id_tag in tags.items():
tag = Etiqueta.objects.get(id=id_tag)
related_tag = EtiquetasEscala.objects.create(
id_escala=self.scale,
id_etiqueta=tag,
posicion=index
)
self.tags_relation[name] = related_tag
index += 1
return self.tags_relation
except DatabaseError as error:
self.deleteRelationshipsWithLabels()
return controller_error("Error en guardar la relación etiqueta escala")
@staticmethod
def getScaleByTechnique(technique: Tecnica = None, id_technique: int = None):
if technique is not None:
scale = Escala.objects.select_related("id_tipo_escala").only(
"id_tipo_escala", "longitud").get(tecnica=technique)
return scale
if id_technique is not None:
scale = Escala.objects.select_related("id_tipo_escala").only(
"id_tipo_escala", "longitud").get(tecnica_id=id_technique)
return scale
@staticmethod
def getRelatedTagsInScale(scale: Escala = None, id_scale: int = None):
if scale is not None:
scale_tags = list(EtiquetasEscala.objects.filter(
id_escala=scale).select_related("id_etiqueta"))
if len(scale_tags) == 0:
return controller_error("Imposible obtener las etiquetas")
return scale_tags
if id_scale is not None:
scale_tags = list(EtiquetasEscala.objects.filter(
id_escala_id=scale).select_related("id_etiqueta"))
if len(scale_tags) == 0:
return controller_error("Imposible obtener las etiquetas")
return scale_tags
|