| | import gradio as gr |
| | import firebase_admin |
| | from firebase_admin import credentials, firestore |
| |
|
| | |
| | cred = credentials.Certificate("key.json") |
| | firebase_admin.initialize_app(cred) |
| | db = firestore.client() |
| |
|
| | |
| | def fetch_orders(): |
| | orders = db.collection("orders").get() |
| | orders_display = [] |
| | grand_total = 0 |
| |
|
| | for order in orders: |
| | order_data = order.to_dict() |
| | order_id = order.id |
| | name = order_data.get("name") |
| | phone = order_data.get("phone", "N/A") |
| | hostel = order_data.get("hostel_name", "N/A") |
| | items = order_data.get("items", []) |
| | total_price = order_data.get("total_price", 0) |
| | grand_total += total_price |
| |
|
| | for item in items: |
| | if isinstance(item, dict): |
| | category = item.get("category", "") |
| | item_name = item.get("item", "") |
| | quantity = item.get("quantity", 0) |
| | price = item.get("price", 0) |
| | orders_display.append([order_id, name, phone, hostel, category, item_name, quantity, price]) |
| | name, phone, hostel = "", "", "" |
| |
|
| | orders_display.append(["", "", "", "", "Subtotal", "", total_price]) |
| |
|
| | orders_display.append(["", "", "", "", "Grand Total", "", grand_total]) |
| | return orders_display |
| |
|
| | |
| | def delete_order(order_id): |
| | try: |
| | db.collection("orders").document(order_id).delete() |
| | return f"Order with ID {order_id} deleted successfully!" |
| | except Exception as e: |
| | return f"Failed to delete order: {e}" |
| |
|
| | |
| | def gradio_display_interface(): |
| | with gr.Blocks() as demo: |
| | gr.Markdown("### ADMIN PANEL") |
| |
|
| | |
| | orders_display = gr.Dataframe(value=[], headers=["ID", "Name", "Phone", "Hostel", "Category", "Item", "Quantity", "Price"], interactive=False, wrap=True) |
| | |
| | |
| | order_id = gr.Textbox(label="Order ID (for Delete)", placeholder="Enter Order ID here") |
| | |
| | |
| | result_message = gr.Textbox(label="Result", interactive=False) |
| |
|
| | |
| | fetch_button = gr.Button("Fetch Orders") |
| | delete_button = gr.Button("Delete Order") |
| |
|
| | |
| | fetch_button.click(fetch_orders, inputs=[], outputs=[orders_display]) |
| | delete_button.click(delete_order, inputs=[order_id], outputs=[result_message]) |
| |
|
| | return demo |
| |
|
| | |
| | if __name__ == "__main__": |
| | gradio_display_interface().launch() |
| |
|