Eluza133 commited on
Commit
c8ebd37
·
verified ·
1 Parent(s): 10b9e2a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -17
app.py CHANGED
@@ -14,11 +14,11 @@ import string
14
  app = Flask(__name__)
15
  app.secret_key = os.getenv("FLASK_SECRET_KEY", "supersecretkey")
16
  DATA_FILE = 'cloud_data.json'
17
- REPO_ID = "Eluza133/Z1e1u" # Обновленный репозиторий
18
  HF_TOKEN_WRITE = os.getenv("HF_TOKEN")
19
  HF_TOKEN_READ = os.getenv("HF_TOKEN_READ") or HF_TOKEN_WRITE
20
  ADMIN_PASSWORD = "87132morflot"
21
- MAX_STORAGE_GB = 500 # 500 ГБ для каждого пользователя
22
 
23
  cache = Cache(app, config={'CACHE_TYPE': 'simple'})
24
  logging.basicConfig(level=logging.INFO)
@@ -35,7 +35,6 @@ def load_data():
35
  return {'users': {}, 'files': {}}
36
  data.setdefault('users', {})
37
  data.setdefault('files', {})
38
- # Обновляем структуру данных для существующих пользователей
39
  for token, user_data in data['users'].items():
40
  if 'folders' not in user_data:
41
  files = user_data.get('files', [])
@@ -48,9 +47,8 @@ def load_data():
48
  }
49
  if 'files' in user_data:
50
  del user_data['files']
51
- # Добавляем storage_used, если его нет
52
  if 'storage_used' not in user_data:
53
- user_data['storage_used'] = 0 # В байтах
54
  logging.info("Данные успешно загружены")
55
  return data
56
  except Exception as e:
@@ -354,7 +352,7 @@ def register():
354
  data['users'][token] = {
355
  'created_at': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
356
  'folders': {'root': {'name': 'root', 'files': [], 'subfolders': {}}},
357
- 'storage_used': 0 # В байтах
358
  }
359
  save_data(data)
360
  flash(f'Ваш токен: {token}. Сохраните его!')
@@ -400,6 +398,7 @@ def login():
400
  data = load_data()
401
  if token in data['users'] and len(token) == 13:
402
  session['token'] = token
 
403
  return redirect(url_for('dashboard'))
404
  else:
405
  flash('Неверный токен! Токен должен быть 13 символов.')
@@ -431,13 +430,10 @@ def login():
431
  <p style="margin-top: 20px;">Нет токена? <a href="{{ url_for('register') }}">Зарегистрируйтесь</a></p>
432
  </div>
433
  <script>
434
- document.getElementById('login-form').onsubmit = (e) => {
435
  const token = e.target.querySelector('input[name="token"]').value;
436
  localStorage.setItem('token', token);
437
  };
438
- // Автоматический переход, если токен есть
439
- const token = localStorage.getItem('token');
440
- if (token) window.location = '/dashboard';
441
  </script>
442
  </body>
443
  </html>
@@ -458,8 +454,12 @@ def get_folder(data, token, folder_path):
458
  @app.route('/dashboard/<path:folder_path>', methods=['GET', 'POST'])
459
  def dashboard(folder_path='root'):
460
  if 'token' not in session:
461
- flash('Пожалуйста, войдите!')
462
- return redirect(url_for('login'))
 
 
 
 
463
 
464
  token = session['token']
465
  data = load_data()
@@ -469,8 +469,8 @@ def dashboard(folder_path='root'):
469
  return redirect(url_for('login'))
470
 
471
  current_folder = get_folder(data, token, folder_path)
472
- storage_used = data['users'][token]['storage_used'] # В байтах
473
- max_storage_bytes = MAX_STORAGE_GB * 1024 * 1024 * 1024 # 500 ГБ в байтах
474
  storage_percent = (storage_used / max_storage_bytes) * 100 if max_storage_bytes > 0 else 0
475
  storage_used_gb = storage_used / (1024 * 1024 * 1024)
476
  storage_remaining_gb = MAX_STORAGE_GB - storage_used_gb
@@ -506,7 +506,7 @@ def dashboard(folder_path='root'):
506
 
507
  elif 'upload_files' in request.files:
508
  files = request.files.getlist('files')
509
- total_size = sum(f.content_length for f in files if f) # Размер в байтах
510
  if storage_used + total_size > max_storage_bytes:
511
  flash('Недостаточно места для загрузки файлов!')
512
  else:
@@ -516,7 +516,7 @@ def dashboard(folder_path='root'):
516
  temp_path = os.path.join('uploads', filename)
517
  os.makedirs('uploads', exist_ok=True)
518
  file.save(temp_path)
519
- file_size = os.path.getsize(temp_path) # Размер в байтах
520
 
521
  api = HfApi()
522
  file_path = f"cloud_files/{token}/{folder_path}/{filename}"
@@ -534,7 +534,7 @@ def dashboard(folder_path='root'):
534
  'path': file_path,
535
  'type': get_file_type(filename),
536
  'upload_date': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
537
- 'size': file_size # Сохраняем размер файла
538
  }
539
  current_folder['files'].append(file_info)
540
  data['users'][token]['storage_used'] += file_size
@@ -692,6 +692,10 @@ def dashboard(folder_path='root'):
692
  };
693
  xhr.send(formData);
694
  };
 
 
 
 
695
  </script>
696
  </body>
697
  </html>
 
14
  app = Flask(__name__)
15
  app.secret_key = os.getenv("FLASK_SECRET_KEY", "supersecretkey")
16
  DATA_FILE = 'cloud_data.json'
17
+ REPO_ID = "Eluza133/Z1e1u"
18
  HF_TOKEN_WRITE = os.getenv("HF_TOKEN")
19
  HF_TOKEN_READ = os.getenv("HF_TOKEN_READ") or HF_TOKEN_WRITE
20
  ADMIN_PASSWORD = "87132morflot"
21
+ MAX_STORAGE_GB = 500
22
 
23
  cache = Cache(app, config={'CACHE_TYPE': 'simple'})
24
  logging.basicConfig(level=logging.INFO)
 
35
  return {'users': {}, 'files': {}}
36
  data.setdefault('users', {})
37
  data.setdefault('files', {})
 
38
  for token, user_data in data['users'].items():
39
  if 'folders' not in user_data:
40
  files = user_data.get('files', [])
 
47
  }
48
  if 'files' in user_data:
49
  del user_data['files']
 
50
  if 'storage_used' not in user_data:
51
+ user_data['storage_used'] = 0
52
  logging.info("Данные успешно загружены")
53
  return data
54
  except Exception as e:
 
352
  data['users'][token] = {
353
  'created_at': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
354
  'folders': {'root': {'name': 'root', 'files': [], 'subfolders': {}}},
355
+ 'storage_used': 0
356
  }
357
  save_data(data)
358
  flash(f'Ваш токен: {token}. Сохраните его!')
 
398
  data = load_data()
399
  if token in data['users'] and len(token) == 13:
400
  session['token'] = token
401
+ localStorage.setItem('token', token); # Сохраняем токен в localStorage
402
  return redirect(url_for('dashboard'))
403
  else:
404
  flash('Неверный токен! Токен должен быть 13 символов.')
 
430
  <p style="margin-top: 20px;">Нет токена? <a href="{{ url_for('register') }}">Зарегистрируйтесь</a></p>
431
  </div>
432
  <script>
433
+ document.getElementById('login-form').onsubmit = function(e) {
434
  const token = e.target.querySelector('input[name="token"]').value;
435
  localStorage.setItem('token', token);
436
  };
 
 
 
437
  </script>
438
  </body>
439
  </html>
 
454
  @app.route('/dashboard/<path:folder_path>', methods=['GET', 'POST'])
455
  def dashboard(folder_path='root'):
456
  if 'token' not in session:
457
+ token = request.cookies.get('token') or localStorage.getItem('token')
458
+ if token and token in load_data()['users']:
459
+ session['token'] = token
460
+ else:
461
+ flash('Пожалуйста, войдите!')
462
+ return redirect(url_for('login'))
463
 
464
  token = session['token']
465
  data = load_data()
 
469
  return redirect(url_for('login'))
470
 
471
  current_folder = get_folder(data, token, folder_path)
472
+ storage_used = data['users'][token]['storage_used']
473
+ max_storage_bytes = MAX_STORAGE_GB * 1024 * 1024 * 1024
474
  storage_percent = (storage_used / max_storage_bytes) * 100 if max_storage_bytes > 0 else 0
475
  storage_used_gb = storage_used / (1024 * 1024 * 1024)
476
  storage_remaining_gb = MAX_STORAGE_GB - storage_used_gb
 
506
 
507
  elif 'upload_files' in request.files:
508
  files = request.files.getlist('files')
509
+ total_size = sum(f.content_length for f in files if f)
510
  if storage_used + total_size > max_storage_bytes:
511
  flash('Недостаточно места для загрузки файлов!')
512
  else:
 
516
  temp_path = os.path.join('uploads', filename)
517
  os.makedirs('uploads', exist_ok=True)
518
  file.save(temp_path)
519
+ file_size = os.path.getsize(temp_path)
520
 
521
  api = HfApi()
522
  file_path = f"cloud_files/{token}/{folder_path}/{filename}"
 
534
  'path': file_path,
535
  'type': get_file_type(filename),
536
  'upload_date': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
537
+ 'size': file_size
538
  }
539
  current_folder['files'].append(file_info)
540
  data['users'][token]['storage_used'] += file_size
 
692
  };
693
  xhr.send(formData);
694
  };
695
+ window.onload = () => {
696
+ const token = localStorage.getItem('token');
697
+ if (!token) return; // Не перенаправляем автоматически
698
+ };
699
  </script>
700
  </body>
701
  </html>