import streamlit as st from pymongo import MongoClient import os from dotenv import load_dotenv load_dotenv() import time AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID") AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY") AWS_BUCKET_NAME = os.getenv("AWS_BUCKET_NAME") MONGO_URI = os.getenv("MONGO_URI") DB_NAME = os.getenv("DB_NAME") COLLECTION_NAME = os.getenv("COMPANY_COLLECTION_NAME") mongo_client = MongoClient(MONGO_URI) db = mongo_client[DB_NAME] collection = db[COLLECTION_NAME] def upload_main_page(): # if st.button("Back",key="Back_button"): st.session_state.page = "home" st.rerun() st.markdown("---") col1, col2 = st.columns([1,6]) with col1: if st.button("Upload Image",key="upload_image_button"): st.session_state.page="upload_image" st.rerun() # Placeholder for image upload function with col2: if st.button("View Images",key="view_image_button"): st.session_state.page = "view_image" st.rerun() # Row 2: Buttons for PDF actions col3, col4 = st.columns([1,6]) with col3: if st.button("Upload PDF",key="upload_pdf_button"): st.session_state.page="upload_pdf" st.rerun() with col4: if st.button("View PDFs",key="view_pdf_button"): st.session_state.page="view_pdf" st.rerun() # Line break st.markdown("---") # Section for company description st.subheader("Tell us about your company in a few lines") # Fetch the "about_company" document from MongoDB about_company_doc = collection.find_one({"type": "about_company"}) if about_company_doc and "company_description" in about_company_doc: # If company_description exists, show it and allow for updates st.write("### Current Description") st.write(about_company_doc["company_description"]) # Display current description (non-editable) # Show an empty text box for new input new_description = st.text_area("Enter new description to update", "") if st.button("Update",key="update_company"): # Update the company description in MongoDB collection.update_one( {"_id": about_company_doc["_id"]}, {"$set": {"company_description": new_description}} ) st.success("Company description updated successfully.") time.sleep(3) st.rerun() else: # If company_description does not exist, show an empty text box for initial input new_description = st.text_area("Enter company description", "") if st.button("Save",key="save_description"): # Insert a new company description field in MongoDB if about_company_doc: # Update the existing document collection.update_one( {"_id": about_company_doc["_id"]}, {"$set": {"company_description": new_description}} ) else: # Insert a new document if it doesn't exist collection.insert_one({"type": "about_company", "company_description": new_description}) st.success("Company description saved successfully.") st.markdown("---") # Section for adding and displaying tags st.subheader("Manage Tags and Categories") # Part 1: Tags st.write("#### Add Tags") # Fetch tags document tags_doc = collection.find_one({"type": "tags"}) current_tags = tags_doc["tags"] if tags_doc and "tags" in tags_doc else [] # Display current tags with horizontal alignment and black-blue text color if current_tags: st.write("Current Tags:") tag_html = " ".join([ f"{tag}" for tag in current_tags ]) st.markdown(tag_html, unsafe_allow_html=True) else: st.write("No tags available.") # Input box to add new tags new_tags = st.text_input("Enter new tags separated by commas", "") if st.button("Add Tags",key="add_tags"): # Split the input tags by commas, strip whitespace, and remove any duplicates tags_to_add = list(set([tag.strip() for tag in new_tags.split(",") if tag.strip()])) # Update the MongoDB document with new tags if tags_doc: # Update the existing tags document collection.update_one( {"_id": tags_doc["_id"]}, {"$addToSet": {"tags": {"$each": tags_to_add}}} ) else: # Insert a new tags document if it doesn't exist collection.insert_one({"type": "tags", "tags": tags_to_add}) st.success("Tags added successfully.") st.rerun() # Refresh the page to display updated tags # Part 2: Categories st.write("#### Add Categories") # Fetch categories document categories_doc = collection.find_one({"type": "categories"}) current_categories = categories_doc["categories"] if categories_doc and "categories" in categories_doc else [] # Display current categories with horizontal alignment and black-blue text color if current_categories: st.write("Current Categories:") category_html = " ".join([ f"{category}" for category in current_categories ]) st.markdown(category_html, unsafe_allow_html=True) else: st.write("No categories available.") # Input box to add new categories new_categories = st.text_input("Enter new categories separated by commas", "") if st.button("Add Categories",key="add_categories"): # Split the input categories by commas, strip whitespace, and remove any duplicates categories_to_add = list(set([category.strip() for category in new_categories.split(",") if category.strip()])) # Update the MongoDB document with new categories if categories_doc: # Update the existing categories document collection.update_one( {"_id": categories_doc["_id"]}, {"$addToSet": {"categories": {"$each": categories_to_add}}} ) else: # Insert a new categories document if it doesn't exist collection.insert_one({"type": "categories", "categories": categories_to_add}) st.success("Categories added successfully.") st.rerun() # Refresh the page to display updated categories