Spaces:
Sleeping
Sleeping
File size: 4,504 Bytes
b0a47bb c27a5ae 6bd93b2 b0a47bb e102c92 b0a47bb e102c92 b0a47bb e102c92 b0a47bb e102c92 c27a5ae cb53e82 c27a5ae 4f8a4a6 c27a5ae d9a3269 c27a5ae 9987ed0 c27a5ae 68f34db 9987ed0 c27a5ae 9987ed0 c27a5ae 9987ed0 c27a5ae 9987ed0 c27a5ae 9987ed0 d9a3269 c27a5ae 68f34db fbcc0ff 68f34db 6bd93b2 fda68cd c27a5ae 4f8a4a6 c27a5ae 68f34db c27a5ae 68f34db e102c92 6bd93b2 c6381c2 6bd93b2 |
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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
from django.db import DatabaseError
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from tecnicas.models import Tecnica, Presentador, SesionSensorial
from tecnicas.utils import controller_error
from ..models_controller.particiapacion_controller import ParticipacionController
class SesionController():
def __init__(self, name_session: str, technique: Tecnica, creator: Presentador):
self.name_session = name_session or None
self.technique = technique or None
self.presenter = creator or None
def setData(self, name_session: str, technique: Tecnica, creator: Presentador):
self.name_session = name_session
self.technique = technique
self.presenter = creator
def setSession(self):
if not self.presenter:
return controller_error("Se requiere presentador para crear sesión")
elif not self.technique:
return controller_error("Se requiere técnica para crear sesión")
self.sensorial_session = SesionSensorial(
tecnica=self.technique,
creadoPor=self.presenter,
)
if self.name_session != "":
self.sensorial_session.nombre_sesion = self.name_session
return self.sensorial_session
def saveSession(self):
if not self.sensorial_session:
return controller_error("No se ha definido la sesión a guardar")
try:
self.sensorial_session.save()
return self.sensorial_session
except DatabaseError as error:
return controller_error("Error al crear la sesión sensorial")
@staticmethod
def getSessionsSavesByCretor(user_name: str, page: int):
elements_by_page = 6
try:
creator = Presentador.objects.get(user__username=user_name)
except Presentador.DoesNotExist:
return controller_error("Presentador invalido")
queryset = (
SesionSensorial.objects
.filter(creadoPor=creator)
.select_related(
"tecnica",
"tecnica__tipo_tecnica",
"tecnica__id_estilo"
)
.only(
"codigo_sesion",
"nombre_sesion",
"fechaCreacion",
"activo",
"tecnica__tipo_tecnica__nombre_tecnica",
"tecnica__id_estilo__nombre_estilo"
)
.order_by("-fechaCreacion")
)
paginator = Paginator(queryset, elements_by_page)
try:
sessions_in_page = paginator.page(page)
except PageNotAnInteger:
return controller_error("índice inválido")
if not sessions_in_page.object_list:
return controller_error("Sin registros de sesiones")
current_page = sessions_in_page.number
is_last_page = not current_page < paginator.num_pages
return (sessions_in_page, is_last_page, current_page)
@staticmethod
def getSessionByCodePanelTester(code: str):
try:
session = SesionSensorial.objects.select_related(
"tecnica",
"tecnica__tipo_tecnica",
"tecnica__id_estilo"
).only(
"codigo_sesion",
"nombre_sesion",
"tecnica__repeticion",
"tecnica__instrucciones",
"tecnica__tipo_tecnica__nombre_tecnica",
"tecnica__id_estilo__nombre_estilo"
).get(codigo_sesion=code)
return session
except SesionSensorial.DoesNotExist:
return controller_error("La sesión ya no existe")
@staticmethod
def getSessionByCode(code: str):
try:
session = SesionSensorial.objects.get(codigo_sesion=code)
return session
except SesionSensorial.DoesNotExist:
return controller_error("La sesión ya no existe")
@staticmethod
def getNumberSessionsByCreator(user_name: str):
try:
creator = Presentador.objects.get(user__username=user_name)
number_sessions = SesionSensorial.objects.filter(
creadoPor=creator).count()
return number_sessions/9
except Presentador.DoesNotExist:
return controller_error("Presentador invalido")
@staticmethod
def finishRepetion(session: SesionSensorial):
session.activo = False
session.save()
return session
|