Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -188,6 +188,46 @@ def delete_record(container, record):
|
|
| 188 |
|
| 189 |
# 💾 Save to Cosmos DB - Preserving data for future generations (or just until the next update)
|
| 190 |
def save_to_cosmos_db(container, query, response1, response2):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 191 |
try:
|
| 192 |
if container:
|
| 193 |
record = {
|
|
@@ -555,7 +595,67 @@ def display_file_viewer(file_path):
|
|
| 555 |
mime="text/markdown"
|
| 556 |
)
|
| 557 |
|
|
|
|
|
|
|
| 558 |
def display_file_editor(file_path):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 559 |
"""Display file content in editor with save functionality"""
|
| 560 |
# Initialize file content in session state if not already present
|
| 561 |
if 'file_content' not in st.session_state:
|
|
|
|
| 188 |
|
| 189 |
# 💾 Save to Cosmos DB - Preserving data for future generations (or just until the next update)
|
| 190 |
def save_to_cosmos_db(container, query, response1, response2):
|
| 191 |
+
try:
|
| 192 |
+
if container:
|
| 193 |
+
# Generate a unique ID that includes a timestamp
|
| 194 |
+
timestamp = datetime.utcnow().strftime('%Y%m%d%H%M%S%f')
|
| 195 |
+
unique_uuid = str(uuid.uuid4())
|
| 196 |
+
new_id = f"{timestamp}-{unique_uuid}"
|
| 197 |
+
|
| 198 |
+
# Create new document with proper name field
|
| 199 |
+
record = {
|
| 200 |
+
"id": new_id,
|
| 201 |
+
"name": new_id, # Set name equal to ID to avoid null name error
|
| 202 |
+
"query": query,
|
| 203 |
+
"response1": response1,
|
| 204 |
+
"response2": response2,
|
| 205 |
+
"timestamp": datetime.utcnow().isoformat(),
|
| 206 |
+
"type": "ai_response", # Add document type for better organization
|
| 207 |
+
"version": "1.0"
|
| 208 |
+
}
|
| 209 |
+
|
| 210 |
+
try:
|
| 211 |
+
# Create the new document
|
| 212 |
+
container.create_item(body=record)
|
| 213 |
+
st.success(f"Record saved successfully with ID: {record['id']}")
|
| 214 |
+
# Refresh the documents display
|
| 215 |
+
st.session_state.documents = get_documents(container)
|
| 216 |
+
except exceptions.CosmosHttpResponseError as e:
|
| 217 |
+
st.error(f"Error saving record to Cosmos DB: {e}")
|
| 218 |
+
else:
|
| 219 |
+
st.error("Cosmos DB container is not initialized.")
|
| 220 |
+
except Exception as e:
|
| 221 |
+
st.error(f"An unexpected error occurred: {str(e)}")
|
| 222 |
+
|
| 223 |
+
|
| 224 |
+
|
| 225 |
+
|
| 226 |
+
|
| 227 |
+
|
| 228 |
+
|
| 229 |
+
|
| 230 |
+
def save_to_cosmos_db_old(container, query, response1, response2):
|
| 231 |
try:
|
| 232 |
if container:
|
| 233 |
record = {
|
|
|
|
| 595 |
mime="text/markdown"
|
| 596 |
)
|
| 597 |
|
| 598 |
+
|
| 599 |
+
|
| 600 |
def display_file_editor(file_path):
|
| 601 |
+
"""Display file content in both Markdown and Code Editor views"""
|
| 602 |
+
# Initialize file content in session state if not already present
|
| 603 |
+
if 'file_content' not in st.session_state:
|
| 604 |
+
st.session_state.file_content = {}
|
| 605 |
+
|
| 606 |
+
# Load content if not in session state or if it's a different file
|
| 607 |
+
if file_path not in st.session_state.file_content:
|
| 608 |
+
content = load_file_content(file_path)
|
| 609 |
+
if content is not None:
|
| 610 |
+
st.session_state.file_content[file_path] = content
|
| 611 |
+
else:
|
| 612 |
+
return
|
| 613 |
+
|
| 614 |
+
st.markdown("### ✏️ File Editor")
|
| 615 |
+
st.markdown(f"**Editing:** {file_path}")
|
| 616 |
+
|
| 617 |
+
# Create tabs for different views
|
| 618 |
+
markdown_tab, code_tab = st.tabs(["Markdown View", "Code Editor"])
|
| 619 |
+
|
| 620 |
+
with markdown_tab:
|
| 621 |
+
st.markdown("### 📄 Markdown Preview")
|
| 622 |
+
st.markdown(st.session_state.file_content[file_path])
|
| 623 |
+
|
| 624 |
+
with code_tab:
|
| 625 |
+
st.markdown("### 💻 Code Editor")
|
| 626 |
+
# Create a unique key for the text area
|
| 627 |
+
editor_key = f"editor_{hash(file_path)}"
|
| 628 |
+
|
| 629 |
+
# Editor with syntax highlighting for markdown
|
| 630 |
+
new_content = st.text_area(
|
| 631 |
+
"Edit content below:",
|
| 632 |
+
value=st.session_state.file_content[file_path],
|
| 633 |
+
height=400,
|
| 634 |
+
key=editor_key
|
| 635 |
+
)
|
| 636 |
+
|
| 637 |
+
# Add save and download buttons below both views
|
| 638 |
+
col1, col2 = st.columns([1, 5])
|
| 639 |
+
with col1:
|
| 640 |
+
if st.button("💾 Save Changes"):
|
| 641 |
+
if save_file_content(file_path, new_content):
|
| 642 |
+
st.session_state.file_content[file_path] = new_content
|
| 643 |
+
st.success("File saved successfully! 🎉")
|
| 644 |
+
time.sleep(1)
|
| 645 |
+
st.rerun()
|
| 646 |
+
|
| 647 |
+
with col2:
|
| 648 |
+
st.download_button(
|
| 649 |
+
label="⬇️ Download File",
|
| 650 |
+
data=new_content,
|
| 651 |
+
file_name=os.path.basename(file_path),
|
| 652 |
+
mime="text/markdown"
|
| 653 |
+
)
|
| 654 |
+
|
| 655 |
+
|
| 656 |
+
|
| 657 |
+
|
| 658 |
+
def display_file_editor_old(file_path):
|
| 659 |
"""Display file content in editor with save functionality"""
|
| 660 |
# Initialize file content in session state if not already present
|
| 661 |
if 'file_content' not in st.session_state:
|