|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| import streamlit as st
|
| import os
|
| from PIL import Image
|
| import cv2
|
| import pytesseract
|
| from docx import Document
|
| from pptx import Presentation
|
| from io import BytesIO
|
| import base64
|
| from zipfile import ZipFile
|
| import pandas as pd
|
|
|
|
|
|
|
| UPLOAD_FOLDER = 'data/'
|
| os.makedirs(UPLOAD_FOLDER, exist_ok=True)
|
|
|
|
|
| def login():
|
| st.sidebar.subheader("Login")
|
| username = st.sidebar.text_input("Username")
|
| password = st.sidebar.text_input("Password", type="password")
|
| if st.sidebar.button("Login"):
|
| if username == "admin" and password == "secret":
|
| st.session_state.logged_in = True
|
| st.sidebar.success("You are logged in!")
|
| st.rerun()
|
| else:
|
| st.sidebar.error("Invalid credentials.")
|
|
|
|
|
| def logout():
|
| if st.sidebar.button("Logout"):
|
| st.session_state.logged_in = False
|
| st.sidebar.success("You have been logged out!")
|
| st.rerun()
|
|
|
|
|
| def upload_files():
|
| st.subheader("Upload Files")
|
| uploaded_files = st.file_uploader("Choose files", type=["pdf", "docx", "pptx", "jpg", "png", "txt"], accept_multiple_files=True)
|
| if uploaded_files:
|
| for uploaded_file in uploaded_files:
|
| file_path = os.path.join(UPLOAD_FOLDER, uploaded_file.name)
|
| with open(file_path, "wb") as f:
|
| f.write(uploaded_file.getbuffer())
|
| st.success(f"✅ {uploaded_file.name} uploaded successfully!")
|
| st.rerun()
|
|
|
|
|
| def manage_files():
|
| st.subheader("Manage Files")
|
| files = os.listdir(UPLOAD_FOLDER)
|
|
|
| if files:
|
|
|
| file_data = []
|
| for file in files:
|
| file_path = os.path.join(UPLOAD_FOLDER, file)
|
| file_size = os.path.getsize(file_path) / 1024
|
| file_type = file.split(".")[-1].upper()
|
| file_data.append({"File Name": file, "Type": file_type, "Size (KB)": round(file_size, 2)})
|
|
|
| df = pd.DataFrame(file_data)
|
|
|
|
|
| st.dataframe(df, use_container_width=True)
|
|
|
|
|
| selected_file = st.selectbox("Select a file to manage", files)
|
| col1, col2 = st.columns(2)
|
| with col1:
|
| if st.button("Delete Selected File"):
|
| os.remove(os.path.join(UPLOAD_FOLDER, selected_file))
|
| st.error(f"❌ {selected_file} deleted successfully!")
|
| st.rerun()
|
| with col2:
|
| with open(os.path.join(UPLOAD_FOLDER, selected_file), "rb") as f:
|
| st.download_button(
|
| label="Download Selected File",
|
| data=f,
|
| file_name=selected_file,
|
| mime="application/octet-stream"
|
| )
|
| else:
|
| st.info("No files uploaded yet.")
|
|
|
|
|
| def main():
|
| st.title("Admin Panel")
|
|
|
|
|
| if "logged_in" not in st.session_state:
|
| st.session_state.logged_in = False
|
|
|
|
|
| if not st.session_state.logged_in:
|
| login()
|
| st.stop()
|
|
|
|
|
| logout()
|
|
|
|
|
| upload_files()
|
|
|
|
|
| manage_files()
|
|
|
| if __name__ == "__main__":
|
| main()
|
|
|