Upload app.py with huggingface_hub
Browse files
app.py
CHANGED
|
@@ -1321,16 +1321,20 @@ def download_upload(filename):
|
|
| 1321 |
@app.route('/admin/download_all_uploads')
|
| 1322 |
@login_required
|
| 1323 |
def download_all_uploads():
|
| 1324 |
-
"""一鍵下載所有上傳檔案 (ZIP)。
|
|
|
|
|
|
|
|
|
|
| 1325 |
if flask_session.get('role') != 'admin':
|
| 1326 |
return 'Forbidden', 403
|
| 1327 |
import db, zipfile
|
| 1328 |
source = (request.args.get('source') or '').upper()
|
| 1329 |
uploads = db.list_uploads()
|
|
|
|
| 1330 |
if source in ('PRA', 'DSA'):
|
| 1331 |
-
wanted = {
|
| 1332 |
else:
|
| 1333 |
-
wanted =
|
| 1334 |
upload_dir = db.get_upload_dir()
|
| 1335 |
files = [f for f in (list(upload_dir.glob('*.xls')) + list(upload_dir.glob('*.xlsx')) + list(upload_dir.glob('*.csv')))
|
| 1336 |
if f.name in wanted]
|
|
@@ -1340,7 +1344,11 @@ def download_all_uploads():
|
|
| 1340 |
buf = io.BytesIO()
|
| 1341 |
with zipfile.ZipFile(buf, 'w', zipfile.ZIP_DEFLATED) as zf:
|
| 1342 |
for f in files:
|
| 1343 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1344 |
buf.seek(0)
|
| 1345 |
from datetime import datetime
|
| 1346 |
tag = f'_{source.lower()}' if source in ('PRA', 'DSA') else ''
|
|
|
|
| 1321 |
@app.route('/admin/download_all_uploads')
|
| 1322 |
@login_required
|
| 1323 |
def download_all_uploads():
|
| 1324 |
+
"""一鍵下載所有上傳檔案 (ZIP)。
|
| 1325 |
+
?source=PRA / DSA:只下載該類,檔案放在 zip 根目錄。
|
| 1326 |
+
無 source(預設):下載全部,依分類放入 PRA/ 與 DSA/ 子資料夾。
|
| 1327 |
+
"""
|
| 1328 |
if flask_session.get('role') != 'admin':
|
| 1329 |
return 'Forbidden', 403
|
| 1330 |
import db, zipfile
|
| 1331 |
source = (request.args.get('source') or '').upper()
|
| 1332 |
uploads = db.list_uploads()
|
| 1333 |
+
name_to_source = {u['name']: u['source'] for u in uploads}
|
| 1334 |
if source in ('PRA', 'DSA'):
|
| 1335 |
+
wanted = {n for n, s in name_to_source.items() if s == source}
|
| 1336 |
else:
|
| 1337 |
+
wanted = set(name_to_source)
|
| 1338 |
upload_dir = db.get_upload_dir()
|
| 1339 |
files = [f for f in (list(upload_dir.glob('*.xls')) + list(upload_dir.glob('*.xlsx')) + list(upload_dir.glob('*.csv')))
|
| 1340 |
if f.name in wanted]
|
|
|
|
| 1344 |
buf = io.BytesIO()
|
| 1345 |
with zipfile.ZipFile(buf, 'w', zipfile.ZIP_DEFLATED) as zf:
|
| 1346 |
for f in files:
|
| 1347 |
+
if source in ('PRA', 'DSA'):
|
| 1348 |
+
arcname = f.name
|
| 1349 |
+
else:
|
| 1350 |
+
arcname = f"{name_to_source.get(f.name, 'PRA')}/{f.name}"
|
| 1351 |
+
zf.write(str(f), arcname)
|
| 1352 |
buf.seek(0)
|
| 1353 |
from datetime import datetime
|
| 1354 |
tag = f'_{source.lower()}' if source in ('PRA', 'DSA') else ''
|