1
1
from flask import Flask , flash , render_template , redirect , url_for
2
- from flask_login import LoginManager , current_user , login_required , login_user , logout_user
2
+ from flask_login import LoginManager , current_user , login_required
3
3
4
- from webapp .forms import LoginForm
5
- from webapp .model import db , News , User
6
- from webapp .weather import weather_by_city
4
+ from webapp .db import db
5
+ from webapp .admin .views import blueprint as admin_blueprint
6
+ from webapp .news .views import blueprint as news_blueprint
7
+ from webapp .user .models import User
8
+ from webapp .user .views import blueprint as user_blueprint
7
9
8
10
def create_app ():
9
11
app = Flask (__name__ )
@@ -12,53 +14,14 @@ def create_app():
12
14
13
15
login_manager = LoginManager ()
14
16
login_manager .init_app (app )
15
- login_manager .login_view = 'login'
17
+ login_manager .login_view = 'user.login'
18
+
19
+ app .register_blueprint (admin_blueprint )
20
+ app .register_blueprint (news_blueprint )
21
+ app .register_blueprint (user_blueprint )
16
22
17
23
@login_manager .user_loader
18
24
def load_user (user_id ):
19
25
return User .query .get (user_id )
20
26
21
- @app .route ('/' )
22
- def index ():
23
- title = "Новости Python"
24
- weather = weather_by_city (app .config ['WEATHER_DEFAULT_CITY' ])
25
- news_list = News .query .order_by (News .published .desc ()).all ()
26
- return render_template ('index.html' , page_title = title , weather = weather , news_list = news_list )
27
-
28
- @app .route ('/login' )
29
- def login ():
30
- if current_user .is_authenticated :
31
- return redirect (url_for ('index' ))
32
- title = "Авторизация"
33
- login_form = LoginForm ()
34
- return render_template ('login.html' , page_title = title , form = login_form )
35
-
36
- @app .route ('/process-login' , methods = ['POST' ])
37
- def process_login ():
38
- form = LoginForm ()
39
-
40
- if form .validate_on_submit ():
41
- user = User .query .filter (User .username == form .username .data ).first ()
42
- if user and user .check_password (form .password .data ):
43
- login_user (user )
44
- flash ('Вы успешно вошли на сайт' )
45
- return redirect (url_for ('index' ))
46
-
47
- flash ('Неправильные имя пользователя или пароль' )
48
- return redirect (url_for ('login' ))
49
-
50
- @app .route ('/logout' )
51
- def logout ():
52
- logout_user ()
53
- flash ('Вы успешно разлогинились' )
54
- return redirect (url_for ('index' ))
55
-
56
- @app .route ('/admin' )
57
- @login_required
58
- def admin_index ():
59
- if current_user .is_admin :
60
- return 'Привет админ!'
61
- else :
62
- return 'Ты не админ!'
63
-
64
27
return app
0 commit comments