plokmii commited on
Commit
e1e718d
·
verified ·
1 Parent(s): f1d96d6

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +12 -4
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)。?source=PRA / DSA 可篩選分類。"""
 
 
 
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 = {u['name'] for u in uploads if u['source'] == source}
1332
  else:
1333
- wanted = {u['name'] for u in uploads}
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
- zf.write(str(f), f.name)
 
 
 
 
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 ''