Skip to content

Commit

Permalink
add adoptions crud endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
FabianNorbertoEscobar committed Jul 8, 2023
1 parent 869e84a commit f6f4833
Show file tree
Hide file tree
Showing 5 changed files with 369 additions and 4 deletions.
111 changes: 111 additions & 0 deletions ADOPTAME-API.postman_collection.json
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,117 @@
}
},
"response": []
},
{
"name": "adopciones",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "localhost:5000/adopciones",
"host": [
"localhost"
],
"port": "5000",
"path": [
"adopciones"
]
}
},
"response": []
},
{
"name": "adopcion",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "localhost:5000/adopciones/1",
"host": [
"localhost"
],
"port": "5000",
"path": [
"adopciones",
"1"
]
}
},
"response": []
},
{
"name": "adopciones",
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "{\r\n \"id_animal\": 1,\r\n \"id_persona\": 1\r\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "localhost:5000/adopciones",
"host": [
"localhost"
],
"port": "5000",
"path": [
"adopciones"
]
}
},
"response": []
},
{
"name": "adopciones",
"request": {
"method": "PUT",
"header": [],
"body": {
"mode": "raw",
"raw": "{\r\n \"id_animal\": 2,\r\n \"id_persona\": 2\r\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "localhost:5000/adopciones/11",
"host": [
"localhost"
],
"port": "5000",
"path": [
"adopciones",
"11"
]
}
},
"response": []
},
{
"name": "adopciones",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "localhost:5000/adopciones/11",
"host": [
"localhost"
],
"port": "5000",
"path": [
"adopciones",
"11"
]
}
},
"response": []
}
]
}
6 changes: 6 additions & 0 deletions adopcion.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class Adopcion:
def __init__(self, id, id_animal, id_persona, fecha_hora):
self.id = id
self.id_animal = id_animal
self.id_persona = id_persona
self.fecha_hora = fecha_hora
212 changes: 209 additions & 3 deletions app.py
Original file line number Diff line number Diff line change
Expand Up @@ -734,8 +734,6 @@ def agregar_animal():
vacunado = request.json.get("vacunado")
adoptado = request.json.get("adoptado")
url_imagen = request.json.get("url_imagen")
print(nombre)
print(castrado)
return legajo.agregar_animal(nombre, genero, edad, raza, id_animal_tipo, castrado, desparasitado, vacunado, adoptado, url_imagen)

@staticmethod
Expand Down Expand Up @@ -775,7 +773,7 @@ def agregar_animal():
],
"responses": {
200: {"description": "Animal modificado correctamente."},
400: {"description": "Animal n|o encontrado."},
400: {"description": "Animal no encontrado."},
},
}
)
Expand Down Expand Up @@ -822,6 +820,189 @@ def eliminar_animal(id):
return legajo.eliminar_animal(id)


class AdopcionesResource:

@staticmethod
@app.route("/adopciones/<int:id>", methods=["GET"])
@swag_from(
{
"produces": ["application/json"],
"parameters": [
{
"name": "id",
"description": "El id de la adopción.",
"in": "path",
"type": "integer",
"required": True,
}
],
"responses": {
200: {
"description": "Datos de la adopción.",
"schema": {
"type": "object",
"properties": {
"id": {"type": "integer", "example": 0},
"id_animal": {"type": "integer", "example": 0},
"id_persona": {"type": "integer", "example": 0},
"fecha_hora": {"type": "string", "example": "string"},
},
},
},
404: {"description": "Adopción no encontrada."},
},
}
)
def obtener_adopcion(id):
"""
Obtiene los datos de una adopción según su id.
"""
adopcion = legajo.consultar_adopcion(id)
if adopcion:
return (
jsonify(
{
"id": adopcion.id,
"id_animal": adopcion.id_animal,
"id_persona": adopcion.id_persona,
"fecha_hora": adopcion.fecha_hora
}
),
200,
)
return jsonify({"message": "Adopción no encontrada."}), 404

@staticmethod
@app.route("/adopciones", methods=["GET"])
@swag_from(
{
"produces": ["application/json"],
"responses": {
200: {
"description": "Datos de las adopciones.",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {"type": "integer", "example": 0},
"id_animal": {"type": "integer", "example": 0},
"id_persona": {"type": "integer", "example": 0},
"fecha_hora": {"type": "string", "example": "string"},
},
},
},
},
}
}
)
def obtener_adopciones():
"""
Obtiene la lista de adopciones de animales.
"""
return legajo.listar_adopciones()

@staticmethod
@app.route("/adopciones", methods=["POST"])
@swag_from(
{
"consumes": ["application/json"],
"produces": ["application/json"],
"parameters": [
{
"name": "body",
"in": "body",
"schema": {
"type": "object",
"properties": {
"id_animal": {"type": "integer", "example": 0},
"id_persona": {"type": "integer", "example": 0},
},
"required": ["id_animal", "id_persona"],
},
}
],
"responses": {
200: {"description": "Adopción agregada correctamente."},
},
}
)
def agregar_adopcion():
"""
Agrega la adopción de un animal.
"""
id_animal = request.json.get("id_animal")
id_persona = request.json.get("id_persona")
return legajo.agregar_adopcion(id_animal, id_persona)

@staticmethod
@app.route("/adopciones/<int:id>", methods=["PUT"])
@swag_from(
{
"consumes": ["application/json"],
"produces": ["application/json"],
"parameters": [
{
"name": "id",
"description": "El id de la adopción.",
"in": "path",
"type": "integer",
"required": True,
},
{
"name": "body",
"in": "body",
"schema": {
"type": "object",
"properties": {
"id_animal": {"type": "integer", "example": 0},
"id_persona": {"type": "integer", "example": 0},
},
"required": ["id_animal", "id_persona"],
},
}
],
"responses": {
200: {"description": "Adopción modificada correctamente."},
400: {"description": "Adopción no encontrada."},
},
}
)
def modificar_adopcion(id):
"""
Modifica la adopción de un animal.
"""
id_animal = request.json.get("id_animal")
id_persona = request.json.get("id_persona")
return legajo.modificar_adopcion(id, id_animal, id_persona)

@staticmethod
@app.route("/adopciones/<int:id>", methods=["DELETE"])
@swag_from(
{
"produces": ["application/json"],
"parameters": [
{
"name": "id",
"description": "El id de la adopción a eliminar.",
"in": "path",
"type": "integer",
"required": True,
}
],
"responses": {
200: {"description": "Adopción eliminado correctamente."},
400: {"description": "Adopción no encontrada."},
},
}
)
def eliminar_adopcion(id):
"""
Elimina la adopción de un animal.
"""
return legajo.eliminar_adopcion(id)


app.add_url_rule(
"/productos/<int:codigo>",
view_func=ProductosResource.obtener_producto,
Expand Down Expand Up @@ -912,6 +1093,31 @@ def eliminar_animal(id):
view_func=AnimalesResource.eliminar_animal,
methods=["DELETE"],
)
app.add_url_rule(
"/adopciones/<int:id>",
view_func=AdopcionesResource.obtener_adopcion,
methods=["GET"],
)
app.add_url_rule(
"/adopciones",
view_func=AdopcionesResource.obtener_adopciones,
methods=["GET"],
)
app.add_url_rule(
"/adopciones",
view_func=AdopcionesResource.agregar_adopcion,
methods=["POST"],
)
app.add_url_rule(
"/adopciones/<int:id>",
view_func=AdopcionesResource.modificar_adopcion,
methods=["PUT"],
)
app.add_url_rule(
"/animales/<int:id>",
view_func=AdopcionesResource.eliminar_adopcion,
methods=["DELETE"],
)

if __name__ == "__main__":
app.run()
Expand Down
Binary file modified inventario.db
Binary file not shown.
Loading

0 comments on commit f6f4833

Please sign in to comment.