Spaces:
Running
Running
""" Import/export page definition """ | |
import json | |
import streamlit as st | |
from flashcard import Flashcards | |
def show_import_export_page(): | |
""" | |
Defines a Streamlit page for importing and exporting flashcards. | |
This function creates an interface where users can upload a JSON file | |
to import flashcards, and download a JSON file containing the current | |
flashcards stored in the session state. It handles file upload, file validation, | |
and displays success or error messages accordingly. | |
""" | |
# Displaying a header for the import section | |
st.header("Import file with flashcards") | |
# File uploader widget allowing the user to upload a JSON file | |
flashcards_file = st.file_uploader("Select a file", type="json") | |
# Handling the uploaded file | |
if flashcards_file is not None: | |
try: | |
# Attempt to import flashcards from the uploaded file | |
st.session_state.flashcards = Flashcards.import_from_json(flashcards_file) | |
print(st.session_state.flashcards.as_json()) # Debug print statement | |
st.success(f"Imported {len(st.session_state.flashcards)} flashcards!") | |
except json.JSONDecodeError: | |
# Handling invalid JSON files | |
st.error("Invalid JSON file. Please upload a valid JSON file.") | |
# Divider to separate import and export sections | |
st.divider() | |
# Displaying a header for the export section | |
st.header("Export generated flashcards") | |
# Download button to export the flashcards as a JSON file | |
st.download_button( | |
"Download flashcards", | |
data=json.dumps(st.session_state.flashcards.as_json(), indent=4), | |
file_name="flashcards_export.json", | |
mime="application/json", | |
) | |