agoor97's picture
Add application files
9e22989
import json
import hashlib
import os
import pytz
from datetime import datetime
from dotenv import load_dotenv
load_dotenv(override=True)
UTILS_FOLDER_PATH = os.path.dirname(os.path.abspath(__file__))
CONFIG_FILE = os.path.join(UTILS_FOLDER_PATH, "app_config.json")
UPLOAD_FOLDER = os.path.join(UTILS_FOLDER_PATH, "uploaded_files")
DB_FOLDER = os.path.join(UTILS_FOLDER_PATH, "database")
DEFAULT_PASSWORD = os.getenv('APP_PASSWORD')
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
DUBAI_TZ = pytz.timezone('Asia/Dubai')
COLLECTION_NAME = "vartur_collection"
class AppConfig:
def __init__(self):
self.config_path = CONFIG_FILE
self.default_config = {
"indexed_files": {},
"last_updated": None,
"password_hash": hashlib.sha256(DEFAULT_PASSWORD.encode()).hexdigest()
}
self.load_config()
def load_config(self):
try:
if os.path.exists(self.config_path):
with open(self.config_path, 'r') as f:
self.config = json.load(f)
else:
self.config = self.default_config
self.save_config()
except Exception as e:
print(f"Error loading config: {e}")
self.config = self.default_config
self.save_config()
def save_config(self):
try:
os.makedirs(os.path.dirname(self.config_path), exist_ok=True)
with open(self.config_path, 'w') as f:
json.dump(self.config, f, indent=4)
except Exception as e:
print(f"Error saving config: {e}")
def update_indexed_files(self, filename: str, file_hash: str):
self.config["indexed_files"][filename] = {
"hash": file_hash,
"timestamp": datetime.now().isoformat()
}
self.config["last_updated"] = datetime.now().isoformat()
self.save_config()
def remove_indexed_file(self, filename: str):
if filename in self.config["indexed_files"]:
del self.config["indexed_files"][filename]
self.save_config()
def verify_password(self, password: str) -> bool:
if not password:
return False
password_hash = hashlib.sha256(password.encode()).hexdigest()
return password_hash == self.config["password_hash"]
def get_stats(self):
return {
"total_files": len(self.config["indexed_files"]),
"last_updated": self.config["last_updated"]
}