test-1 / interface /actions.py
vmoras's picture
Initial commit
7083742
import requests
from datetime import datetime
import pandas as pd
import gradio as gr
def make_appointment():
url = "http://localhost:8000/appointments/available"
available_dates = requests.get(url)
available_days = list(available_dates.json()['available_dates'].keys())
update_home_tab = gr.update(visible=False)
update_schedule_tab = gr.update(visible=True)
update_search_tab = gr.update(visible=False)
update_available_days = gr.update(
choices=available_days, value=available_days[0], allow_custom_value=True, interactive=True
)
update_hours = get_available_hours(available_days[0], available_dates)
return update_home_tab, update_schedule_tab, update_search_tab, available_dates, update_available_days, update_hours
def search_appointments_days():
url = "http://localhost:8000/appointments/reserved"
reserved_days = requests.get(url)
reserved_days = list(reserved_days.json()['reserved_days'])
update_home_tab = gr.update(visible=False)
update_schedule_tab = gr.update(visible=False)
update_search_tab = gr.update(visible=True)
update_reserved_days = gr.update(
choices=reserved_days, value=reserved_days[0], allow_custom_value=True, interactive=True
)
return update_home_tab, update_schedule_tab, update_search_tab, update_reserved_days
def get_back_home():
update_home_tab = gr.update(visible=True)
update_schedule_tab = gr.update(visible=False)
update_search_tab = gr.update(visible=False)
return update_home_tab, update_schedule_tab, update_search_tab
def _get_long_hour(hours):
formatted_hours = [
datetime.strptime(hour, '%H:%M').strftime('%I:%M %p').replace("AM", "a.m.").replace("PM", "p.m.")
for hour in hours
]
return formatted_hours
def _get_short_hour(hour):
return datetime.strptime(hour.replace("a.m.", "AM").replace("p.m.", "PM"), '%I:%M %p').strftime('%H:%M')
def get_available_hours(selected_day, available_dates):
available_hours = available_dates.json()['available_dates'][selected_day]
formatted_hours = _get_long_hour(available_hours)
update_hours = gr.update(choices=formatted_hours, value=formatted_hours[0], allow_custom_value=True, interactive=True)
return update_hours
def create_appointment(identification, name, last_name, age, day, hour):
url = "http://localhost:8000/appointments/"
data = {
"user": {
"identification": identification,
"name": name,
"last_name": last_name,
"age": age
},
"full_date": {
"date": day,
"hour": _get_short_hour(hour)
}
}
response = requests.post(url, json=data)
if response.status_code != 200:
update_home_tab, update_schedule_tab, update_search_tab = gr.update(), gr.update(), gr.update()
gr.Warning(f"Error: {response.json()}")
return update_home_tab, update_schedule_tab, update_search_tab
update_home_tab = gr.update(visible=True)
update_schedule_tab = gr.update(visible=False)
update_search_tab = gr.update(visible=False)
gr.Info("Cita agendada con éxito")
return update_home_tab, update_schedule_tab, update_search_tab
def search_appointments(selected_day):
url = f"http://localhost:8000/appointments/{selected_day}"
appointments = requests.get(url)
appointments = appointments.json()['appointments']
df = pd.DataFrame(data=appointments)
df = df.rename(columns={
'hour': 'Hora', 'identification': 'Cedula', 'name': 'Nombres'
})
update_appointments = gr.update(value=df)
return update_appointments