Spaces:
Sleeping
Sleeping
File size: 2,984 Bytes
0b860c0 4700455 1a292d9 0b860c0 4700455 0b860c0 1a292d9 0b860c0 4700455 0b860c0 4700455 0b860c0 1a292d9 0b860c0 1a292d9 0b860c0 1a292d9 0b860c0 1a292d9 4700455 0b860c0 1a292d9 aeaa082 1a292d9 4700455 0b860c0 6312ae6 0b860c0 316e9b1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
import json
import os
from hashlib import sha256
import gradio as gr
def save_user_data_to_json(user, conf_file_path='users.json'):
username = user['name']
# Load existing data
if os.path.exists(conf_file_path):
with open(conf_file_path, 'r') as file:
try:
existing_data = json.load(file)
except json.JSONDecodeError:
existing_data = {}
else:
existing_data = {}
existing_data[username] = user
# Save updated data back to file
with open(conf_file_path, 'w') as file:
json.dump(existing_data, file, indent=4)
return conf_file_path
def load_from_json(file_path='users.json'):
"""
Load user data from a JSON file and return it as a dictionary.
:param file_path: The path to the JSON file from which to load user data.
:return: A dictionary containing the user data loaded from the JSON file.
"""
if os.path.exists(file_path):
with open(file_path, 'r') as file:
try:
user_data = json.load(file)
return user_data
except json.JSONDecodeError as e:
print(f"Error decoding JSON from {file_path}: {e}")
return {}
else:
print(f"File {file_path} not found.")
return {}
def add_user_pref(user, input_value, input_type='keywords'):
if not user['history']:
user['history'] = {"keywords": [], "prompts": []}
for word in input_value:
if word not in user['history'][input_type]:
user['history'][input_type].append(word)
return user
def update_json(user, prompt, keywords):
username = user['name']
users = load_from_json()
user = users.get(username)
print(f"TYPE PROMPT = {type(prompt)}")
if username != 'Guest':
user = add_user_pref(user, prompt, input_type='prompts')
user = add_user_pref(user, keywords, input_type='keywords')
conf_file_path = save_user_data_to_json(user)
# with open('users.json', 'r') as file:
# saved_data = json.load(file)
else:
conf_file_path = "users.json"
users = load_from_json()
user = users.get(username)
return gr.update(choices=user['history']['prompts']), gr.update(choices=user['history']['keywords']), user, conf_file_path
def auth_user(username, password):
users = load_from_json()
if username in users and sha256(password.encode()).hexdigest() == users[username]['hashed_password']:
user = users.get(username)
else:
username = 'Guest'
user = users.get(username)
return user, f"## Hi {username}!", gr.update(choices=user['history']['prompts']), gr.update(choices=user['history']['keywords'])
def logout():
username = 'Guest'
user = users.get(username)
return user, f"## Hi {username}!", gr.update(choices=user['history']['prompts']), gr.update(choices=user['history']['keywords'])
users = load_from_json() |