Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -57,15 +57,16 @@ class GUI:
|
|
| 57 |
out = gr.Markdown()
|
| 58 |
inp = gr.File(file_types=['.epub'], visible=False, label="Upload ePub File")
|
| 59 |
|
| 60 |
-
# Event handlers -
|
| 61 |
demo.load(
|
| 62 |
fn=self.on_load,
|
| 63 |
outputs=[welcome_md, api_key_section, inp, clear_key_btn]
|
| 64 |
)
|
| 65 |
|
| 66 |
-
#
|
| 67 |
-
|
| 68 |
-
|
|
|
|
| 69 |
outputs=[welcome_md, api_key_section, inp, clear_key_btn]
|
| 70 |
)
|
| 71 |
|
|
@@ -195,38 +196,68 @@ class GUI:
|
|
| 195 |
)
|
| 196 |
return self.handle_login_click(request)
|
| 197 |
|
| 198 |
-
def
|
| 199 |
-
"""
|
| 200 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 201 |
return (
|
| 202 |
-
gr.update(value='# ePub Summarization Tool\n\
|
| 203 |
-
gr.update(visible=
|
| 204 |
gr.update(visible=False), # inp
|
| 205 |
gr.update(visible=False) # clear_key_btn
|
| 206 |
)
|
| 207 |
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
|
| 211 |
-
|
| 212 |
-
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
)
|
| 222 |
-
|
| 223 |
-
# No saved key or failed to initialize
|
| 224 |
-
return (
|
| 225 |
-
gr.update(value=f'# ePub Summarization Tool\n\nWelcome {user_name}! Please set up your Poe API key below.'),
|
| 226 |
-
gr.update(visible=True), # api_key_section
|
| 227 |
-
gr.update(visible=False), # inp
|
| 228 |
-
gr.update(visible=False) # clear_key_btn
|
| 229 |
-
)
|
| 230 |
|
| 231 |
def _initialize_client(self):
|
| 232 |
"""Initialize the Poe API client"""
|
|
|
|
| 57 |
out = gr.Markdown()
|
| 58 |
inp = gr.File(file_types=['.epub'], visible=False, label="Upload ePub File")
|
| 59 |
|
| 60 |
+
# Event handlers - Simplified for Gradio 5
|
| 61 |
demo.load(
|
| 62 |
fn=self.on_load,
|
| 63 |
outputs=[welcome_md, api_key_section, inp, clear_key_btn]
|
| 64 |
)
|
| 65 |
|
| 66 |
+
# Use timer to check login state (workaround for Gradio 5 login issues)
|
| 67 |
+
timer = gr.Timer(value=2.0, active=True)
|
| 68 |
+
timer.tick(
|
| 69 |
+
fn=self.check_login_state,
|
| 70 |
outputs=[welcome_md, api_key_section, inp, clear_key_btn]
|
| 71 |
)
|
| 72 |
|
|
|
|
| 196 |
)
|
| 197 |
return self.handle_login_click(request)
|
| 198 |
|
| 199 |
+
def check_login_state(self, request: gr.Request = None):
|
| 200 |
+
"""Check login state periodically - workaround for Gradio 5"""
|
| 201 |
+
try:
|
| 202 |
+
if hasattr(request, 'username') and request.username:
|
| 203 |
+
return self.handle_user_logged_in(request)
|
| 204 |
+
else:
|
| 205 |
+
return self.handle_user_not_logged_in()
|
| 206 |
+
except Exception as e:
|
| 207 |
+
print(f"Error checking login state: {e}")
|
| 208 |
+
return self.handle_user_not_logged_in()
|
| 209 |
+
|
| 210 |
+
def handle_user_not_logged_in(self):
|
| 211 |
+
"""Handle when user is not logged in"""
|
| 212 |
+
return (
|
| 213 |
+
gr.update(value='# ePub Summarization Tool\n\nPlease login with Hugging Face to access the tool.'),
|
| 214 |
+
gr.update(visible=False), # api_key_section
|
| 215 |
+
gr.update(visible=False), # inp
|
| 216 |
+
gr.update(visible=False) # clear_key_btn
|
| 217 |
+
)
|
| 218 |
+
|
| 219 |
+
def handle_user_logged_in(self, request):
|
| 220 |
+
"""Handle when user is logged in"""
|
| 221 |
+
if not self.current_user or self.current_user != self._get_user_id(request):
|
| 222 |
+
# New login or different user
|
| 223 |
+
self.current_user = self._get_user_id(request)
|
| 224 |
+
user_name = request.username
|
| 225 |
+
|
| 226 |
+
# Check if user has a saved API key
|
| 227 |
+
saved_key = self._get_saved_key(self.current_user)
|
| 228 |
+
if saved_key:
|
| 229 |
+
self.api_key = saved_key
|
| 230 |
+
if self._initialize_client():
|
| 231 |
+
return (
|
| 232 |
+
gr.update(value=f'# ePub Summarization Tool\n\nWelcome back {user_name}! ✅ Your saved API key is loaded and ready.'),
|
| 233 |
+
gr.update(visible=False), # api_key_section
|
| 234 |
+
gr.update(visible=True), # inp
|
| 235 |
+
gr.update(visible=True) # clear_key_btn
|
| 236 |
+
)
|
| 237 |
+
|
| 238 |
+
# No saved key or failed to initialize
|
| 239 |
return (
|
| 240 |
+
gr.update(value=f'# ePub Summarization Tool\n\nWelcome {user_name}! Please set up your Poe API key below.'),
|
| 241 |
+
gr.update(visible=True), # api_key_section
|
| 242 |
gr.update(visible=False), # inp
|
| 243 |
gr.update(visible=False) # clear_key_btn
|
| 244 |
)
|
| 245 |
|
| 246 |
+
# User already processed, return current state
|
| 247 |
+
if self.client:
|
| 248 |
+
return (
|
| 249 |
+
gr.update(value=f'# ePub Summarization Tool\n\nWelcome {request.username}! ✅ Ready to process ePub files.'),
|
| 250 |
+
gr.update(visible=False), # api_key_section
|
| 251 |
+
gr.update(visible=True), # inp
|
| 252 |
+
gr.update(visible=True) # clear_key_btn
|
| 253 |
+
)
|
| 254 |
+
else:
|
| 255 |
+
return (
|
| 256 |
+
gr.update(value=f'# ePub Summarization Tool\n\nWelcome {request.username}! Please set up your Poe API key below.'),
|
| 257 |
+
gr.update(visible=True), # api_key_section
|
| 258 |
+
gr.update(visible=False), # inp
|
| 259 |
+
gr.update(visible=False) # clear_key_btn
|
| 260 |
+
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 261 |
|
| 262 |
def _initialize_client(self):
|
| 263 |
"""Initialize the Poe API client"""
|