Update app.py
Browse files
app.py
CHANGED
|
@@ -31,7 +31,7 @@ def handle_token_change(token):
|
|
| 31 |
user_info = api.whoami()
|
| 32 |
username = user_info.get('name')
|
| 33 |
updates = {
|
| 34 |
-
manage_files_btn: gr.update(interactive=True), delete_repo_btn: gr.update(interactive=True),
|
| 35 |
commit_btn: gr.update(interactive=True), author_input: gr.update(value=username),
|
| 36 |
download_author_input: gr.update(value=username), whoami_output: gr.update(value=user_info, visible=True)
|
| 37 |
}
|
|
@@ -39,7 +39,7 @@ def handle_token_change(token):
|
|
| 39 |
except HfHubHTTPError as e:
|
| 40 |
gr.Warning(f"Invalid Token: {e}. You can only perform read-only actions.")
|
| 41 |
updates = {
|
| 42 |
-
manage_files_btn: gr.update(interactive=False), delete_repo_btn: gr.update(interactive=False),
|
| 43 |
commit_btn: gr.update(interactive=False), whoami_output: gr.update(value=None, visible=False)
|
| 44 |
}
|
| 45 |
return (token, *updates.values())
|
|
@@ -93,6 +93,20 @@ def delete_repo(token, repo_id, repo_type):
|
|
| 93 |
gr.Error(f"Failed to delete repository: {e}")
|
| 94 |
return repo_id, gr.update(visible=True), gr.update(visible=False)
|
| 95 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
# --- File Management Functions ---
|
| 97 |
|
| 98 |
def show_files_and_load_first(token, repo_id, repo_type):
|
|
@@ -206,6 +220,8 @@ with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue"), title="Hugging Face Hub
|
|
| 206 |
gr.Markdown("### 2. Choose an Action")
|
| 207 |
manage_files_btn = gr.Button("Manage Files", interactive=False)
|
| 208 |
delete_repo_btn = gr.Button("Delete This Repo", variant="stop", interactive=False)
|
|
|
|
|
|
|
| 209 |
with gr.Column(visible=False) as editor_panel:
|
| 210 |
gr.Markdown("### 3. Edit Files")
|
| 211 |
file_selector = gr.Dropdown(label="Select File", interactive=True)
|
|
@@ -236,14 +252,18 @@ with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue"), title="Hugging Face Hub
|
|
| 236 |
|
| 237 |
# --- Global and Cross-Tab Event Handlers ---
|
| 238 |
hf_token.change(fn=handle_token_change, inputs=hf_token,
|
| 239 |
-
outputs=[hf_token_state, manage_files_btn, delete_repo_btn, commit_btn, author_input, download_author_input, whoami_output])
|
| 240 |
|
| 241 |
manage_repo_dropdown.select(fn=on_manage_repo_select, inputs=manage_repo_dropdown, outputs=action_panel)
|
| 242 |
|
| 243 |
manage_files_btn.click(fn=show_files_and_load_first,
|
| 244 |
inputs=[hf_token_state, manage_repo_dropdown, manage_repo_type_state],
|
| 245 |
outputs=[editor_panel, file_selector, code_editor])
|
| 246 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 247 |
delete_repo_btn.click(fn=delete_repo, inputs=[hf_token_state, manage_repo_dropdown, manage_repo_type_state],
|
| 248 |
outputs=[manage_repo_dropdown, action_panel, editor_panel],
|
| 249 |
js="() => confirm('Are you sure you want to permanently delete this repository?')")
|
|
|
|
| 31 |
user_info = api.whoami()
|
| 32 |
username = user_info.get('name')
|
| 33 |
updates = {
|
| 34 |
+
manage_files_btn: gr.update(interactive=True), archive_repo_btn: gr.update(interactive=True), delete_repo_btn: gr.update(interactive=True),
|
| 35 |
commit_btn: gr.update(interactive=True), author_input: gr.update(value=username),
|
| 36 |
download_author_input: gr.update(value=username), whoami_output: gr.update(value=user_info, visible=True)
|
| 37 |
}
|
|
|
|
| 39 |
except HfHubHTTPError as e:
|
| 40 |
gr.Warning(f"Invalid Token: {e}. You can only perform read-only actions.")
|
| 41 |
updates = {
|
| 42 |
+
manage_files_btn: gr.update(interactive=False), archive_repo_btn: gr.update(interactive=False), delete_repo_btn: gr.update(interactive=False),
|
| 43 |
commit_btn: gr.update(interactive=False), whoami_output: gr.update(value=None, visible=False)
|
| 44 |
}
|
| 45 |
return (token, *updates.values())
|
|
|
|
| 93 |
gr.Error(f"Failed to delete repository: {e}")
|
| 94 |
return repo_id, gr.update(visible=True), gr.update(visible=False)
|
| 95 |
|
| 96 |
+
def archive_repo(token, repo_id, archive_repo):
|
| 97 |
+
"""Deletes the selected repository."""
|
| 98 |
+
if not token:
|
| 99 |
+
gr.Error("A write-enabled Hugging Face token is required to delete a repository.")
|
| 100 |
+
return repo_id, gr.update(visible=True), gr.update(visible=False)
|
| 101 |
+
try:
|
| 102 |
+
api = get_hf_api(token)
|
| 103 |
+
archive_space=f'{archive_repo}/{repo_id.split("/")[1]}'
|
| 104 |
+
api.move_repo(repo_id=repo_id, archive_space=archive_space)
|
| 105 |
+
gr.Info(f"Successfully moved to '{archive_space}'.")
|
| 106 |
+
return None, gr.update(visible=False), gr.update(visible=False)
|
| 107 |
+
except HfHubHTTPError as e:
|
| 108 |
+
gr.Error(f"Failed to archive repository: {e}")
|
| 109 |
+
return repo_id, gr.update(visible=True), gr.update(visible=False)
|
| 110 |
# --- File Management Functions ---
|
| 111 |
|
| 112 |
def show_files_and_load_first(token, repo_id, repo_type):
|
|
|
|
| 220 |
gr.Markdown("### 2. Choose an Action")
|
| 221 |
manage_files_btn = gr.Button("Manage Files", interactive=False)
|
| 222 |
delete_repo_btn = gr.Button("Delete This Repo", variant="stop", interactive=False)
|
| 223 |
+
archive_repo_name = gr.Textbox(label="Archive",placeholder="my_archive, will append /repo_name")
|
| 224 |
+
archive_repo_btn = gr.Button("Send to Archive", variant="secondary", interactive=False)
|
| 225 |
with gr.Column(visible=False) as editor_panel:
|
| 226 |
gr.Markdown("### 3. Edit Files")
|
| 227 |
file_selector = gr.Dropdown(label="Select File", interactive=True)
|
|
|
|
| 252 |
|
| 253 |
# --- Global and Cross-Tab Event Handlers ---
|
| 254 |
hf_token.change(fn=handle_token_change, inputs=hf_token,
|
| 255 |
+
outputs=[hf_token_state, manage_files_btn, archive_repo_btn, delete_repo_btn, commit_btn, author_input, download_author_input, whoami_output])
|
| 256 |
|
| 257 |
manage_repo_dropdown.select(fn=on_manage_repo_select, inputs=manage_repo_dropdown, outputs=action_panel)
|
| 258 |
|
| 259 |
manage_files_btn.click(fn=show_files_and_load_first,
|
| 260 |
inputs=[hf_token_state, manage_repo_dropdown, manage_repo_type_state],
|
| 261 |
outputs=[editor_panel, file_selector, code_editor])
|
| 262 |
+
|
| 263 |
+
archive_repo_btn.click(fn=archive_repo, inputs=[hf_token_state, manage_repo_dropdown, archive_repo_name],
|
| 264 |
+
outputs=[manage_repo_dropdown, action_panel, editor_panel],
|
| 265 |
+
js="() => confirm('Are you sure you want to archive this repo?')")
|
| 266 |
+
|
| 267 |
delete_repo_btn.click(fn=delete_repo, inputs=[hf_token_state, manage_repo_dropdown, manage_repo_type_state],
|
| 268 |
outputs=[manage_repo_dropdown, action_panel, editor_panel],
|
| 269 |
js="() => confirm('Are you sure you want to permanently delete this repository?')")
|