Advisor / app /ui /recommendations.py
ps1811's picture
Initial HF Space deployment
39b31c0
Raw
History Blame Contribute Delete
1.91 kB
import gradio as gr
import pandas as pd
from app.db.repo import (
get_recommendations,
approve_recommendation,
reject_recommendation,
)
def load_recommendations():
recommendations = get_recommendations()
data = []
for recommendation in recommendations:
campaign_name = ""
if recommendation.campaign:
campaign_name = recommendation.campaign.name
data.append(
{
"ID": recommendation.id,
"Campaign": campaign_name,
"Recommendation": recommendation.action,
"Status": recommendation.status,
}
)
return pd.DataFrame(data)
def approve_action(rec_id):
approve_recommendation(int(rec_id))
return (
"Recommendation approved",
load_recommendations(),
)
def reject_action(rec_id):
reject_recommendation(int(rec_id))
return (
"Recommendation rejected",
load_recommendations(),
)
def build_recommendations_page():
gr.Markdown("## Recommendations")
recommendation_table = gr.Dataframe(
label="Recommendations",
interactive=False,
)
recommendation_id = gr.Number(
label="Recommendation ID"
)
status_message = gr.Textbox(
label="Status"
)
with gr.Row():
approve_btn = gr.Button("Approve")
reject_btn = gr.Button("Reject")
refresh_btn = gr.Button("Refresh")
refresh_btn.click(
fn=load_recommendations,
outputs=recommendation_table,
)
approve_btn.click(
fn=approve_action,
inputs=recommendation_id,
outputs=[
status_message,
recommendation_table,
],
)
reject_btn.click(
fn=reject_action,
inputs=recommendation_id,
outputs=[
status_message,
recommendation_table,
],
)