Update app.py
Browse files
app.py
CHANGED
|
@@ -96,7 +96,7 @@ def register():
|
|
| 96 |
|
| 97 |
data['users'][username] = {'password': password}
|
| 98 |
save_data(data)
|
| 99 |
-
logging.info(f"Пользователь {username} зарегистрирован
|
| 100 |
flash('Регистрация успешна! Войдите в систему.')
|
| 101 |
return redirect(url_for('login'))
|
| 102 |
|
|
@@ -150,19 +150,11 @@ def login():
|
|
| 150 |
password = request.form.get('password')
|
| 151 |
data = load_data()
|
| 152 |
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
logging.
|
| 157 |
-
|
| 158 |
-
session['username'] = username
|
| 159 |
-
session.permanent = True
|
| 160 |
-
logging.info(f"Успешный вход: {username}, сессия: {session['username']}")
|
| 161 |
-
return redirect(url_for('video_feed'))
|
| 162 |
-
else:
|
| 163 |
-
logging.warning(f"Неверный пароль для {username}")
|
| 164 |
-
else:
|
| 165 |
-
logging.warning(f"Пользователь {username} не найден")
|
| 166 |
flash('Неверный логин или пароль!')
|
| 167 |
return redirect(url_for('login'))
|
| 168 |
|
|
@@ -215,14 +207,13 @@ def logout():
|
|
| 215 |
logging.info("Пользователь вышел из системы")
|
| 216 |
return redirect(url_for('video_feed'))
|
| 217 |
|
| 218 |
-
# Главная страница - лента видео
|
| 219 |
@app.route('/')
|
| 220 |
def video_feed():
|
| 221 |
data = load_data()
|
| 222 |
videos = data['videos']
|
| 223 |
is_authenticated = 'username' in session
|
| 224 |
username = session.get('username', None)
|
| 225 |
-
logging.debug(f"Сессия на главной: is_authenticated={is_authenticated}, username={username}")
|
| 226 |
html = '''
|
| 227 |
<!DOCTYPE html>
|
| 228 |
<html lang="ru">
|
|
@@ -271,7 +262,7 @@ def video_feed():
|
|
| 271 |
<h1>Лента видео</h1>
|
| 272 |
<div class="video-grid">
|
| 273 |
{% for video in videos %}
|
| 274 |
-
<a href="{{ url_for('video_page',
|
| 275 |
<img src="https://via.placeholder.com/300x200?text={{ video['title'] }}" alt="{{ video['title'] }}">
|
| 276 |
<h2>{{ video['title'] }}</h2>
|
| 277 |
<p>{{ video['description'] }}</p>
|
|
@@ -290,11 +281,11 @@ def video_feed():
|
|
| 290 |
'''
|
| 291 |
return render_template_string(html, videos=videos, is_authenticated=is_authenticated, username=username)
|
| 292 |
|
| 293 |
-
# Страница отдельного видео
|
| 294 |
-
@app.route('/video/<
|
| 295 |
-
def video_page(
|
| 296 |
data = load_data()
|
| 297 |
-
video = next((v for v in data['videos'] if v['
|
| 298 |
if not video:
|
| 299 |
return "Видео не найдено", 404
|
| 300 |
|
|
@@ -363,7 +354,7 @@ def video_page(title):
|
|
| 363 |
'''
|
| 364 |
return render_template_string(html, video=video, repo_id=REPO_ID, is_authenticated=is_authenticated, username=username)
|
| 365 |
|
| 366 |
-
# Страница профиля
|
| 367 |
@app.route('/profile', methods=['GET', 'POST'])
|
| 368 |
def profile():
|
| 369 |
if 'username' not in session:
|
|
@@ -431,8 +422,10 @@ def profile():
|
|
| 431 |
{% if user_videos %}
|
| 432 |
{% for video in user_videos %}
|
| 433 |
<div class="video-item">
|
| 434 |
-
<
|
| 435 |
-
|
|
|
|
|
|
|
| 436 |
<p>{{ video['description'] }}</p>
|
| 437 |
<p>{{ video['upload_date'] }}</p>
|
| 438 |
<form method="POST">
|
|
@@ -456,7 +449,7 @@ def profile():
|
|
| 456 |
'''
|
| 457 |
return render_template_string(html, username=username, user_videos=user_videos)
|
| 458 |
|
| 459 |
-
#
|
| 460 |
@app.route('/upload', methods=['GET', 'POST'])
|
| 461 |
def upload_video():
|
| 462 |
if 'username' not in session:
|
|
@@ -488,9 +481,11 @@ def upload_video():
|
|
| 488 |
commit_message=f"Добавлено видео: {title} пользователем {uploader}"
|
| 489 |
)
|
| 490 |
|
| 491 |
-
# Обновление базы данных
|
| 492 |
data = load_data()
|
| 493 |
video_id = f"video_{len(data['videos']) + 1}"
|
|
|
|
|
|
|
| 494 |
data['videos'].append({
|
| 495 |
'id': video_id,
|
| 496 |
'title': title,
|
|
@@ -500,7 +495,7 @@ def upload_video():
|
|
| 500 |
'upload_date': datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
| 501 |
})
|
| 502 |
save_data(data)
|
| 503 |
-
logging.info(f"Видео {title} загружено пользователем {uploader}")
|
| 504 |
|
| 505 |
if os.path.exists(temp_path):
|
| 506 |
os.remove(temp_path)
|
|
|
|
| 96 |
|
| 97 |
data['users'][username] = {'password': password}
|
| 98 |
save_data(data)
|
| 99 |
+
logging.info(f"Пользователь {username} зарегистрирован")
|
| 100 |
flash('Регистрация успешна! Войдите в систему.')
|
| 101 |
return redirect(url_for('login'))
|
| 102 |
|
|
|
|
| 150 |
password = request.form.get('password')
|
| 151 |
data = load_data()
|
| 152 |
|
| 153 |
+
if username in data['users'] and data['users'][username]['password'] == password:
|
| 154 |
+
session['username'] = username
|
| 155 |
+
session.permanent = True
|
| 156 |
+
logging.info(f"Успешный вход: {username}")
|
| 157 |
+
return redirect(url_for('video_feed'))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
flash('Неверный логин или пароль!')
|
| 159 |
return redirect(url_for('login'))
|
| 160 |
|
|
|
|
| 207 |
logging.info("Пользователь вышел из системы")
|
| 208 |
return redirect(url_for('video_feed'))
|
| 209 |
|
| 210 |
+
# Главная страница - лента видео
|
| 211 |
@app.route('/')
|
| 212 |
def video_feed():
|
| 213 |
data = load_data()
|
| 214 |
videos = data['videos']
|
| 215 |
is_authenticated = 'username' in session
|
| 216 |
username = session.get('username', None)
|
|
|
|
| 217 |
html = '''
|
| 218 |
<!DOCTYPE html>
|
| 219 |
<html lang="ru">
|
|
|
|
| 262 |
<h1>Лента видео</h1>
|
| 263 |
<div class="video-grid">
|
| 264 |
{% for video in videos %}
|
| 265 |
+
<a href="{{ url_for('video_page', video_id=video['id']) }}" class="video-item">
|
| 266 |
<img src="https://via.placeholder.com/300x200?text={{ video['title'] }}" alt="{{ video['title'] }}">
|
| 267 |
<h2>{{ video['title'] }}</h2>
|
| 268 |
<p>{{ video['description'] }}</p>
|
|
|
|
| 281 |
'''
|
| 282 |
return render_template_string(html, videos=videos, is_authenticated=is_authenticated, username=username)
|
| 283 |
|
| 284 |
+
# Страница отдельного видео
|
| 285 |
+
@app.route('/video/<video_id>')
|
| 286 |
+
def video_page(video_id):
|
| 287 |
data = load_data()
|
| 288 |
+
video = next((v for v in data['videos'] if v['id'] == video_id), None)
|
| 289 |
if not video:
|
| 290 |
return "Видео не найдено", 404
|
| 291 |
|
|
|
|
| 354 |
'''
|
| 355 |
return render_template_string(html, video=video, repo_id=REPO_ID, is_authenticated=is_authenticated, username=username)
|
| 356 |
|
| 357 |
+
# Страница профиля
|
| 358 |
@app.route('/profile', methods=['GET', 'POST'])
|
| 359 |
def profile():
|
| 360 |
if 'username' not in session:
|
|
|
|
| 422 |
{% if user_videos %}
|
| 423 |
{% for video in user_videos %}
|
| 424 |
<div class="video-item">
|
| 425 |
+
<a href="{{ url_for('video_page', video_id=video['id']) }}">
|
| 426 |
+
<img src="https://via.placeholder.com/300x200?text={{ video['title'] }}" alt="{{ video['title'] }}">
|
| 427 |
+
<h3>{{ video['title'] }}</h3>
|
| 428 |
+
</a>
|
| 429 |
<p>{{ video['description'] }}</p>
|
| 430 |
<p>{{ video['upload_date'] }}</p>
|
| 431 |
<form method="POST">
|
|
|
|
| 449 |
'''
|
| 450 |
return render_template_string(html, username=username, user_videos=user_videos)
|
| 451 |
|
| 452 |
+
# Страница загрузки видео
|
| 453 |
@app.route('/upload', methods=['GET', 'POST'])
|
| 454 |
def upload_video():
|
| 455 |
if 'username' not in session:
|
|
|
|
| 481 |
commit_message=f"Добавлено видео: {title} пользователем {uploader}"
|
| 482 |
)
|
| 483 |
|
| 484 |
+
# Обновление базы данных с уникальным ID
|
| 485 |
data = load_data()
|
| 486 |
video_id = f"video_{len(data['videos']) + 1}"
|
| 487 |
+
while any(v['id'] == video_id for v in data['videos']):
|
| 488 |
+
video_id = f"video_{len(data['videos']) + 1}_{int(time.time())}"
|
| 489 |
data['videos'].append({
|
| 490 |
'id': video_id,
|
| 491 |
'title': title,
|
|
|
|
| 495 |
'upload_date': datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
| 496 |
})
|
| 497 |
save_data(data)
|
| 498 |
+
logging.info(f"Видео {title} загружено пользователем {uploader} с ID {video_id}")
|
| 499 |
|
| 500 |
if os.path.exists(temp_path):
|
| 501 |
os.remove(temp_path)
|