import os
import csv
import gradio as gr
from gradio import inputs, outputs
from datetime import datetime
DATA_FILENAME = "data.csv"
DATA_FILE = os.path.join("/data", DATA_FILENAME)
def generate_html() -> str:
with open(DATA_FILE) as csvfile:
reader = csv.reader(csvfile)
rows = []
for row in reader:
print(row)
rows.append(row)
print(rows)
if len(rows) == 0:
return "no messages yet"
else:
html = "
"
print(row)
for row in rows:
html += "
"
html += f"{row[0]}"
html += f"{row[1]}"
html += "
"
html += "
"
return html
def store_message(name: str, message: str):
if name and message:
with open(DATA_FILE, "a") as csvfile:
csv.writer(csvfile).writerow([name, message])
return generate_html()
iface = gr.Interface(
store_message,
[
inputs.Textbox(placeholder="Your name"),
inputs.Textbox(placeholder="Your message", lines=2),
],
"html",
css="""
.message {background-color:cornflowerblue;color:white; padding:4px;margin:4px;border-radius:4px; }
""",
title="Reading/writing to persistent storage within the Space",
description=f"This is a demo of how to do simple *shared data persistence* in a Gradio Space, backed in the storage of a Space (/data directory).",
)
iface.launch()