Skip to content

Commit 12cc32e

Browse files
authored
Merge pull request #33 from DanielYanes-YH25001/Edit/creacion_de_clases_en_models
Creación de modelos de datos para proyecto
2 parents 361353c + 5a21d79 commit 12cc32e

5 files changed

Lines changed: 449 additions & 0 deletions

File tree

models/asignacion.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
class Asignacion:
2+
"""Clase para crear la asignacion de proyecto, con las validaciones"""
3+
4+
def __init__(self, id, id_tarea, id_empleado, horas=0.0):
5+
if not isinstance(id, int) or id <= 0:
6+
raise ValueError("El ID de la asignación debe ser un entero positivo.")
7+
if not isinstance(id_tarea, int) or id_tarea <= 0:
8+
raise ValueError("El ID de tarea debe ser un entero positivo.")
9+
if not isinstance(id_empleado, int) or id_empleado <= 0:
10+
raise ValueError("El ID de empleado debe ser un entero positivo.")
11+
if not isinstance(horas, (int, float)):
12+
raise ValueError("Las horas deben ser un número.")
13+
14+
self.id = id
15+
self.id_tarea = id_tarea
16+
self.id_empleado = id_empleado
17+
self.horas = float(horas)
18+
19+
def to_dict(self):
20+
"""Método para guardar los datos en JSON"""
21+
22+
return {
23+
"id": self.id,
24+
"id_tarea": self.id_tarea,
25+
"id_empleado": self.id_empleado,
26+
"horas": self.horas,
27+
}
28+
29+
@classmethod
30+
def from_dict(cls, data):
31+
"""Método de clase para traer una asigancion"""
32+
33+
return cls(
34+
id=data["id"],
35+
id_tarea=data["id_tarea"],
36+
id_empleado=data["id_empleado"],
37+
horas=data.get("horas", 0.0),
38+
)
39+
40+
def __str__(self):
41+
"""Método para imprimir los atributos de la asignacion"""
42+
43+
return (
44+
f"Asignacion(id={self.id}, id_tarea={self.id_tarea}, "
45+
f"id_empleado={self.id_empleado}, horas={self.horas})"
46+
)

models/empleado.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
class Empleado:
2+
"""Clase para crear el empleado, con las validaciones"""
3+
4+
def __init__(self, id, nombre, rol):
5+
if not isinstance(id, int) or id <= 0:
6+
raise ValueError("El ID del empleado debe ser un entero positivo.")
7+
if not nombre or not isinstance(nombre, str):
8+
raise ValueError("El nombre del empleado debe ser una cadena no vacía.")
9+
if not rol or not isinstance(rol, str):
10+
raise ValueError("El rol del empleado debe ser una cadena no vacía.")
11+
12+
self.id = id
13+
self.nombre = nombre.strip()
14+
self.rol = rol.strip()
15+
16+
def to_dict(self):
17+
"""Método para guardar los datos en JSON"""
18+
19+
return {
20+
"id": self.id,
21+
"nombre": self.nombre,
22+
"rol": self.rol,
23+
}
24+
25+
@classmethod
26+
def from_dict(cls, data):
27+
"""Método de clase para traer un empleado"""
28+
29+
return cls(
30+
id=data["id"],
31+
nombre=data["nombre"],
32+
rol=data["rol"],
33+
)
34+
35+
def __str__(self):
36+
"""Método para imprimir los datos de un empleado"""
37+
38+
return f"Empleado(id={self.id}, nombre='{self.nombre}', rol='{self.rol}')"

models/proyecto.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
class Proyecto:
2+
"""clase para crear los proyectos, con las validaciones para id, nomre y estado"""
3+
4+
def __init__(self, id, nombre, estado="Activo"):
5+
if not isinstance(id, int) or id <= 0:
6+
raise ValueError("El ID del proyecto debe ser un entero positivo.")
7+
if not nombre or not isinstance(nombre, str):
8+
raise ValueError("El nombre del proyecto debe ser una cadena no vacía.")
9+
if estado not in {"Activo", "Finalizado", "Pausado"}:
10+
raise ValueError(
11+
"El estado del proyecto debe ser 'Activo', 'Finalizado' o 'Pausado'."
12+
)
13+
14+
self.id = id
15+
self.nombre = nombre.strip()
16+
self.estado = estado
17+
18+
def to_dict(self):
19+
"""Método para guardar los datos en JSON"""
20+
21+
return {
22+
"id": self.id,
23+
"nombre": self.nombre,
24+
"estado": self.estado,
25+
}
26+
27+
@classmethod
28+
def from_dict(cls, data):
29+
"""Método de clase para traer un proyecto"""
30+
31+
return cls(
32+
id=data["id"],
33+
nombre=data["nombre"],
34+
estado=data.get("estado", "Activo"),
35+
)
36+
37+
def __str__(self):
38+
"""Método para imprimir los atributos de un proyecto"""
39+
40+
return f"Proyecto(id={self.id}, nombre='{self.nombre}', estado='{self.estado}')"

models/tarea.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
class Tarea:
2+
"""Clase para modelar una tarea"""
3+
4+
def __init__(self, id, id_proyecto, descripcion):
5+
if not isinstance(id, int) or id <= 0:
6+
raise ValueError("El ID de la tarea debe ser un entero positivo.")
7+
if not isinstance(id_proyecto, int) or id_proyecto <= 0:
8+
raise ValueError("El ID de proyecto debe ser un entero positivo.")
9+
if not descripcion or not isinstance(descripcion, str):
10+
raise ValueError("La descripción de la tarea debe ser una cadena no vacía.")
11+
12+
self.id = id
13+
self.id_proyecto = id_proyecto
14+
self.descripcion = descripcion.strip()
15+
16+
def to_dict(self):
17+
"""Método para guardar los datos en JSON"""
18+
19+
return {
20+
"id": self.id,
21+
"id_proyecto": self.id_proyecto,
22+
"descripcion": self.descripcion,
23+
}
24+
25+
@classmethod
26+
def from_dict(cls, data):
27+
"""Método de clase para traer una tarea"""
28+
29+
return cls(
30+
id=data["id"],
31+
id_proyecto=data["id_proyecto"],
32+
descripcion=data["descripcion"],
33+
)
34+
35+
def __str__(self):
36+
"""Método para imprimir los datos de una tarea"""
37+
38+
return f"Tarea(id={self.id}, id_proyecto={self.id_proyecto}, descripcion='{self.descripcion}')"

0 commit comments

Comments
 (0)