From 4aac17ff23ee6025d24378acf473570fc975a0c1 Mon Sep 17 00:00:00 2001 From: Kfir Hadas Date: Tue, 11 Jul 2017 00:45:24 +0300 Subject: [PATCH] Move 'before_request' into 'main' blueprint Update comment in api_handler with new before_request location --- nyaa/api_handler.py | 2 +- nyaa/routes.py | 20 -------------------- nyaa/views/main.py | 21 +++++++++++++++++++++ 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/nyaa/api_handler.py b/nyaa/api_handler.py index bbbd845..7ec1fc6 100644 --- a/nyaa/api_handler.py +++ b/nyaa/api_handler.py @@ -24,7 +24,7 @@ api_blueprint = flask.Blueprint('api', __name__) def basic_auth_user(f): ''' A decorator that will try to validate the user into g.user from basic auth. Note: this does not set user to None on failure, so users can also authorize - themselves with the cookie (handled in routes.before_request). ''' + themselves with the cookie (handled in views.main.before_request). ''' @functools.wraps(f) def decorator(*args, **kwargs): auth = flask.request.authorization diff --git a/nyaa/routes.py b/nyaa/routes.py index 0c11bdf..45a34b7 100644 --- a/nyaa/routes.py +++ b/nyaa/routes.py @@ -1,6 +1,5 @@ import json import os.path -from datetime import datetime, timedelta from urllib.parse import quote import flask @@ -25,25 +24,6 @@ def not_found(error): return flask.render_template('404.html'), 404 -@app.before_request -def before_request(): - flask.g.user = None - if 'user_id' in flask.session: - user = models.User.by_id(flask.session['user_id']) - if not user: - return views.account.logout() - - flask.g.user = user - - if 'timeout' not in flask.session or flask.session['timeout'] < datetime.now(): - flask.session['timeout'] = datetime.now() + timedelta(days=7) - flask.session.permanent = True - flask.session.modified = True - - if flask.g.user.status == models.UserStatusType.BANNED: - return 'You are banned.', 403 - - @cached_function def get_category_id_map(): ''' Reads database for categories and turns them into a dict with diff --git a/nyaa/views/main.py b/nyaa/views/main.py index 086bc4e..86f328d 100644 --- a/nyaa/views/main.py +++ b/nyaa/views/main.py @@ -1,5 +1,6 @@ import math import re +from datetime import datetime, timedelta import flask from flask_paginate import Pagination @@ -8,10 +9,30 @@ from nyaa import app, models from nyaa.search import (DEFAULT_MAX_SEARCH_RESULT, DEFAULT_PER_PAGE, SERACH_PAGINATE_DISPLAY_MSG, _generate_query_string, search_db, search_elastic) from nyaa.utils import chain_get +from nyaa.views.account import logout bp = flask.Blueprint('main', __name__) +@bp.before_app_request +def before_request(): + flask.g.user = None + if 'user_id' in flask.session: + user = models.User.by_id(flask.session['user_id']) + if not user: + return logout() + + flask.g.user = user + + if 'timeout' not in flask.session or flask.session['timeout'] < datetime.now(): + flask.session['timeout'] = datetime.now() + timedelta(days=7) + flask.session.permanent = True + flask.session.modified = True + + if flask.g.user.status == models.UserStatusType.BANNED: + return 'You are banned.', 403 + + @bp.route('/rss', defaults={'rss': True}) @bp.route('/', defaults={'rss': False}) def home(rss):