Spaces:
Sleeping
Sleeping
| 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, | |
| ], | |
| ) |