From 7a85f159fd90751a1d54fe241266943945a20aa4 Mon Sep 17 00:00:00 2001 From: Danp06 Date: Mon, 18 Apr 2022 17:45:52 -0500 Subject: [PATCH 1/8] 2 commit --- .idea/workspace.xml | 49 +++++++++++++++++++++++++++++++++++++++++---- Comandos.txt | 8 +++++--- app.py | 9 +++++---- 3 files changed, 55 insertions(+), 11 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index dbcfbf5..aaeaaec 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,8 +1,10 @@ - - + + + + - + + + @@ -74,8 +98,21 @@ 1650243090539 - + + + + + + + + 1650285939829 + + @@ -92,6 +129,10 @@ + + + diff --git a/Comandos.txt b/Comandos.txt index f8bd6e0..0249c9c 100644 --- a/Comandos.txt +++ b/Comandos.txt @@ -1,6 +1,8 @@ cd C:\Users\danie\Documents\U\6to Semestre\Arquitectura de Software\WebService -$ conda activate WebService2 -$ conda deactivate +conda activate WebService2 +conda deactivate -uvicorn app:app --reload \ No newline at end of file +uvicorn app:app --reload + +git push heroku main \ No newline at end of file diff --git a/app.py b/app.py index 16c6ec9..2eea0ee 100644 --- a/app.py +++ b/app.py @@ -3,7 +3,8 @@ class People(BaseModel): - id: str + id: int + cod : str nombre: str rol: int @@ -32,7 +33,7 @@ def create_people(person: People): @app.get('/people/{id}', tags=["People"]) -def find_people(id: str): +def find_people(id: int): for person in Data: if person["id"] == id: return person @@ -40,7 +41,7 @@ def find_people(id: str): @app.delete('/people/{id}', tags=["People"]) -def delete_people(id: str): +def delete_people(id: int): for index, person in enumerate(Data): if person["id"] == id: Data.pop(index) @@ -49,7 +50,7 @@ def delete_people(id: str): @app.put('/people/{id}', tags=["People"]) -def update_person(id: str, updatedperson: People): +def update_person(id: int, updatedperson: People): for index, person in enumerate(Data): if person["id"] == id: Data[index]["id"] = id From 84d57ee4a0919951a4e5205dae9cb50eaf0e9bae Mon Sep 17 00:00:00 2001 From: Danp06 Date: Tue, 19 Apr 2022 21:09:26 -0500 Subject: [PATCH 2/8] 3 commit --- .idea/workspace.xml | 42 +++++++++++++++++++---- app.py | 82 +++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 115 insertions(+), 9 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index aaeaaec..b56e01a 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,9 +1,8 @@ - + - + - + @@ -123,7 +138,19 @@ - + + + @@ -131,7 +158,8 @@ - diff --git a/app.py b/app.py index 2eea0ee..6a26202 100644 --- a/app.py +++ b/app.py @@ -1,19 +1,36 @@ -from fastapi import FastAPI, HTTPException +from itertools import count +from time import struct_time +from fastapi import FastAPI, HTTPException, Query +# from numpy import append, number from pydantic import BaseModel +from typing import Optional +from datetime import * + +# from pytz import HOUR class People(BaseModel): id: int - cod : str + cod: str nombre: str rol: int +class Vehicle(BaseModel): + id: str + person: People + status: bool = False + placa: str = "000aaa" + fecha_ingreso: datetime = datetime.now() + anotaciones: str = 'ninguna' + + app = FastAPI( title="Sistema de Control de Acceso Vehicular" ) Data = [] +vehicles = [] @app.get('/', tags=["Home"]) @@ -58,3 +75,64 @@ def update_person(id: int, updatedperson: People): Data[index]["rol"] = updatedperson.dict()["rol"] return {"message": "Person has been updated succesfully"} raise HTTPException(status_code=404, detail="Person not found") + + +@app.get('/register') +def registers(): + return vehicles + + +@app.post('/register') +def create_register(vehicle: Vehicle): + vehicles.append(vehicle.dict()) + return vehicle + + +@app.get('/register/{placa}') +def get_register(placa: str): + vehicles_found = [] + for register in vehicles: + if register['placa'] == placa: + vehicles_found.append(register) + return vehicles_found + raise HTTPException(status_code=404, detail="Vehicle not found") + + +@app.get('/register/') +def get_register_hours(hour_max: datetime, hour_min: datetime): + vehicles_found = [] + number_vehicles = 0 + for register in vehicles: + if register['fecha_ingreso'] >= hour_min and register['fecha_ingreso'] <= hour_max and \ + register['status'] == True: + vehicles_found.append(register) + number_vehicles = number_vehicles + 1 + return {'number of vehicles:': number_vehicles} + raise HTTPException(status_code=422, detail="invalid semantics") + + +@app.put('/register/{placa}/') +def update_register(placa: str, vehicle: Vehicle): + vehicle_found = [] + for register in vehicles: + if register['placa'] == placa and register['status'] == True: + vehicles[register] = vehicle + vehicle_found.append(vehicle.dict()) + return {'vehiculo': vehicle.placa, 'información actualizada': vehicle_found} + raise HTTPException(status_code=404, detail="Vehicle not found") + + +@app.get('/registre/{rol}') +def get_vehicles_by_status(rol: int, status = True): + number_registers = 0 + for register in vehicles: + for register in vehicles: + if register['person']['rol'] == 0 and register['status']==True: + number_registers += 1 + if register['rol'] == 1 and register['status'] == True: + number_registers += 1 + if register['rol'] == 2 and register['status'] == True: + number_registers += 1 + if register['rol'] == 3 and register['status'] == True: + number_registers += 1 + return {'rol:': rol, 'vehiculos parqueados:': number_registers} From bac282353921ed6ef85c5159e569fa2080a52390 Mon Sep 17 00:00:00 2001 From: Danp06 Date: Tue, 19 Apr 2022 21:50:50 -0500 Subject: [PATCH 3/8] 4 commit --- .idea/workspace.xml | 24 ++++++++++++++++++++---- app.py | 25 ++++++++++++++----------- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index b56e01a..389060e 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,7 +1,7 @@ - + @@ -26,6 +26,14 @@ + + + + + + + + @@ -111,7 +119,7 @@ - + 1650285939829 @@ -127,7 +135,14 @@ - @@ -159,7 +174,8 @@ - diff --git a/app.py b/app.py index 6a26202..b5a0fb8 100644 --- a/app.py +++ b/app.py @@ -124,15 +124,18 @@ def update_register(placa: str, vehicle: Vehicle): @app.get('/registre/{rol}') def get_vehicles_by_status(rol: int, status = True): - number_registers = 0 + number_registers = [0, 0, 0, 0] for register in vehicles: - for register in vehicles: - if register['person']['rol'] == 0 and register['status']==True: - number_registers += 1 - if register['rol'] == 1 and register['status'] == True: - number_registers += 1 - if register['rol'] == 2 and register['status'] == True: - number_registers += 1 - if register['rol'] == 3 and register['status'] == True: - number_registers += 1 - return {'rol:': rol, 'vehiculos parqueados:': number_registers} + if register['person']['rol'] == 0 and register['status']==True: + x = number_registers[0] + number_registers.append(x+1) + if register['person']['rol'] == 1 and register['status'] == True: + x = number_registers[1] + number_registers.append(x+1) + if register['person']['rol'] == 2 and register['status'] == True: + x = number_registers[2] + number_registers.append(x+1) + if register['person']['rol'] == 3 and register['status'] == True: + x = number_registers[3] + number_registers.append(x+1) + return {'rol:': rol, 'vehiculos parqueados:': number_registers[rol]} From 0fd85eb50e5f3ff38d4d03fc7ed5d199349b55c7 Mon Sep 17 00:00:00 2001 From: Danp06 Date: Tue, 19 Apr 2022 21:53:44 -0500 Subject: [PATCH 4/8] 4 commit --- app.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app.py b/app.py index b5a0fb8..39586a6 100644 --- a/app.py +++ b/app.py @@ -77,18 +77,18 @@ def update_person(id: int, updatedperson: People): raise HTTPException(status_code=404, detail="Person not found") -@app.get('/register') +@app.get('/register', tags=["Vehicle"]) def registers(): return vehicles -@app.post('/register') +@app.post('/register', tags=["Vehicle"]) def create_register(vehicle: Vehicle): vehicles.append(vehicle.dict()) return vehicle -@app.get('/register/{placa}') +@app.get('/register/{placa}', tags=["Vehicle"]) def get_register(placa: str): vehicles_found = [] for register in vehicles: @@ -98,7 +98,7 @@ def get_register(placa: str): raise HTTPException(status_code=404, detail="Vehicle not found") -@app.get('/register/') +@app.get('/register/', tags=["Vehicle"]) def get_register_hours(hour_max: datetime, hour_min: datetime): vehicles_found = [] number_vehicles = 0 @@ -111,7 +111,7 @@ def get_register_hours(hour_max: datetime, hour_min: datetime): raise HTTPException(status_code=422, detail="invalid semantics") -@app.put('/register/{placa}/') +@app.put('/register/{placa}/', tags=["Vehicle"]) def update_register(placa: str, vehicle: Vehicle): vehicle_found = [] for register in vehicles: @@ -122,7 +122,7 @@ def update_register(placa: str, vehicle: Vehicle): raise HTTPException(status_code=404, detail="Vehicle not found") -@app.get('/registre/{rol}') +@app.get('/registre/{rol}', tags=["Vehicle"]) def get_vehicles_by_status(rol: int, status = True): number_registers = [0, 0, 0, 0] for register in vehicles: From 0e2e1b545fd7b6b460e321f83f45975829c6ebad Mon Sep 17 00:00:00 2001 From: Danp06 Date: Tue, 19 Apr 2022 21:54:11 -0500 Subject: [PATCH 5/8] final commit? --- .idea/workspace.xml | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 389060e..f475a36 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,10 +1,7 @@ - - - - + @@ -175,7 +186,8 @@ - From 7add16d51a1f866be0eb1e05bd3b2e80100104a5 Mon Sep 17 00:00:00 2001 From: Danp06 Date: Thu, 21 Apr 2022 13:36:25 -0500 Subject: [PATCH 6/8] Final commit --- .idea/workspace.xml | 21 ++++++++++---- app.py | 71 ++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 80 insertions(+), 12 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index f475a36..9f09e1c 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,7 +1,10 @@ - + + + + @@ -116,7 +118,8 @@ - + + 1650285939829 @@ -153,7 +156,14 @@ - @@ -187,7 +197,8 @@ - diff --git a/app.py b/app.py index 39586a6..62c9648 100644 --- a/app.py +++ b/app.py @@ -10,6 +10,19 @@ class People(BaseModel): + """ People constructor object. + + :param id: id of person. + :type id: int + :param cod: codigo of person. + :type cod: str + :param name: name of person. + :type name: str + :param rol: rol of person. + :type rol: int + :returns: Person object + :rtype: object + """ id: int cod: str nombre: str @@ -40,17 +53,29 @@ def home(): @app.get('/people', tags=["People"]) def list_people(): + """ Retorna objeto personas en str. + :returns: object person + :rtype: str + """ return Data @app.post('/people', tags=["People"]) def create_people(person: People): + """ Funcion para crear y retornar personas en str. + :returns: Person object. + :rtype: str. + """ Data.append(person.dict()) return Data[-1] @app.get('/people/{id}', tags=["People"]) def find_people(id: int): + """ Funcion para buscar y retornar una persona en str. + :returns: Person object. + :rtype: str. + """ for person in Data: if person["id"] == id: return person @@ -59,6 +84,10 @@ def find_people(id: int): @app.delete('/people/{id}', tags=["People"]) def delete_people(id: int): + """ Funcion para eliminar personas. + :returns: Person object. + :rtype: str. + """ for index, person in enumerate(Data): if person["id"] == id: Data.pop(index) @@ -68,6 +97,10 @@ def delete_people(id: int): @app.put('/people/{id}', tags=["People"]) def update_person(id: int, updatedperson: People): + """ Funcion para actualizar y retornar personas en str. + :returns: Person object. + :rtype: str. + """ for index, person in enumerate(Data): if person["id"] == id: Data[index]["id"] = id @@ -79,17 +112,29 @@ def update_person(id: int, updatedperson: People): @app.get('/register', tags=["Vehicle"]) def registers(): + """ Retorna objeto vehicle en str. + :returns: object vehicle + :rtype: str + """ return vehicles @app.post('/register', tags=["Vehicle"]) def create_register(vehicle: Vehicle): + """ Funcion para crear y retornar vehicle en str. + :returns: vehicle object. + :rtype: str. + """ vehicles.append(vehicle.dict()) return vehicle @app.get('/register/{placa}', tags=["Vehicle"]) def get_register(placa: str): + """ Funcion para buscar y retornar un vehicle en str. + :returns: vehicle object. + :rtype: str. + """ vehicles_found = [] for register in vehicles: if register['placa'] == placa: @@ -100,11 +145,15 @@ def get_register(placa: str): @app.get('/register/', tags=["Vehicle"]) def get_register_hours(hour_max: datetime, hour_min: datetime): + """ Funcion para buscar un vehicle a una hora y retornar cantidad de vehiculos. + :returns: cantidad vehiculos. + :rtype: int. + """ vehicles_found = [] number_vehicles = 0 for register in vehicles: if register['fecha_ingreso'] >= hour_min and register['fecha_ingreso'] <= hour_max and \ - register['status'] == True: + register['status'] is True: vehicles_found.append(register) number_vehicles = number_vehicles + 1 return {'number of vehicles:': number_vehicles} @@ -113,9 +162,13 @@ def get_register_hours(hour_max: datetime, hour_min: datetime): @app.put('/register/{placa}/', tags=["Vehicle"]) def update_register(placa: str, vehicle: Vehicle): + """ Funcion para actualizar y retornar vehicle en str. + :returns: vehicle object. + :rtype: str. + """ vehicle_found = [] for register in vehicles: - if register['placa'] == placa and register['status'] == True: + if register['placa'] == placa and register['status'] is True: vehicles[register] = vehicle vehicle_found.append(vehicle.dict()) return {'vehiculo': vehicle.placa, 'información actualizada': vehicle_found} @@ -123,19 +176,23 @@ def update_register(placa: str, vehicle: Vehicle): @app.get('/registre/{rol}', tags=["Vehicle"]) -def get_vehicles_by_status(rol: int, status = True): +def get_vehicles_by_status(rol: int): + """ Funcion para buscar un vehiculos parqueados y retornar cantidad de vehiculos por rol. + :returns: cantidad vehiculos por rol. + :rtype: int. + """ number_registers = [0, 0, 0, 0] for register in vehicles: - if register['person']['rol'] == 0 and register['status']==True: + if register['person']['rol'] == 0 and register['status'] is True: x = number_registers[0] number_registers.append(x+1) - if register['person']['rol'] == 1 and register['status'] == True: + if register['person']['rol'] == 1 and register['status'] is True: x = number_registers[1] number_registers.append(x+1) - if register['person']['rol'] == 2 and register['status'] == True: + if register['person']['rol'] == 2 and register['status'] is True: x = number_registers[2] number_registers.append(x+1) - if register['person']['rol'] == 3 and register['status'] == True: + if register['person']['rol'] == 3 and register['status'] is True: x = number_registers[3] number_registers.append(x+1) return {'rol:': rol, 'vehiculos parqueados:': number_registers[rol]} From ac2e0d8547100c27fefe1dd41a03de3aa7464603 Mon Sep 17 00:00:00 2001 From: anderson morillo <54423269+andersonmorillo@users.noreply.github.com> Date: Thu, 21 Apr 2022 14:02:54 -0500 Subject: [PATCH 7/8] comentario de vehicle --- app.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app.py b/app.py index 62c9648..44a4c98 100644 --- a/app.py +++ b/app.py @@ -30,6 +30,22 @@ class People(BaseModel): class Vehicle(BaseModel): + """ + Class use to represent a register of a vehicle + + :param id: Identification of register + :type id: str + :param person: person informacion + :type person: Object(People) + :param status: + :type status: bool + :param placa: + :type placa: str + :param fecha_ingreso: + :type fecha_ingreso: datetime + :param anotaciones: + :type anotaciones: str + """ id: str person: People status: bool = False From e4aeafe6ea6045d8c6565146095ff26e2b700866 Mon Sep 17 00:00:00 2001 From: anderson morillo <54423269+andersonmorillo@users.noreply.github.com> Date: Thu, 21 Apr 2022 14:05:15 -0500 Subject: [PATCH 8/8] return str --- app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app.py b/app.py index 44a4c98..1aa7662 100644 --- a/app.py +++ b/app.py @@ -163,7 +163,7 @@ def get_register(placa: str): def get_register_hours(hour_max: datetime, hour_min: datetime): """ Funcion para buscar un vehicle a una hora y retornar cantidad de vehiculos. :returns: cantidad vehiculos. - :rtype: int. + :rtype: str. """ vehicles_found = [] number_vehicles = 0 @@ -195,7 +195,7 @@ def update_register(placa: str, vehicle: Vehicle): def get_vehicles_by_status(rol: int): """ Funcion para buscar un vehiculos parqueados y retornar cantidad de vehiculos por rol. :returns: cantidad vehiculos por rol. - :rtype: int. + :rtype: str. """ number_registers = [0, 0, 0, 0] for register in vehicles: