1- from __future__ import absolute_import
21# coding=utf-8
2+ from __future__ import absolute_import
33import os
44
5- from flask import Flask , g , request
6- from flask_mako import render_template
5+ from flask import Flask , g , request , send_from_directory
76from flask_security import MongoEngineUserDatastore
87from flask_social_blueprint .core import SocialBlueprint
8+ from flask_wtf .csrf import CsrfProtect
99
1010from firefly import config as _config
1111from firefly .ext import (
12- api , babel , cache , db , login_manager , mail , mako ,
13- redis_store , security
12+ api , babel , cache , db , login_manager , mail , redis_store , security
1413)
1514from firefly .models .user import User , SocialConnection , Role
1615from firefly .utils import send_mail
16+ from firefly .libs .template import render_template
1717
1818
1919def create_app (config ):
@@ -34,18 +34,24 @@ def create_app(config):
3434 cache .init_app (app )
3535 db .init_app (app )
3636 mail .init_app (app )
37- mako .init_app (app )
3837 redis_store .init_app (app )
38+ CsrfProtect (app )
3939
4040 register_auth (app )
4141 register_hooks (app )
42+ register_static (app )
4243 register_blueprints (app )
4344 configure_error_handles (app )
4445 plug_to_db (db )
4546
4647 return app
4748
4849
50+ def register_static (app ):
51+ app .route ('/static/<path:filename>' )(
52+ lambda filename : send_from_directory ('static' , filename ))
53+
54+
4955def register_auth (app ):
5056 def load_user (user_id ):
5157 return User .objects (_id = user_id )
@@ -57,7 +63,6 @@ def load_user(user_id):
5763 # Setup Flask-Security
5864 security .init_app (app , MongoEngineUserDatastore (db , User , Role ))
5965 state = app .extensions ['security' ]
60- state .render_template = render_template
6166 state .send_mail_task (send_mail )
6267 app .extensions ['security' ] = state
6368
@@ -68,16 +73,16 @@ def configure_error_handles(app):
6873
6974 @app .errorhandler (403 )
7075 def forbidden_page (error ):
71- return render_template ('403.html' )
76+ return render_template ('403.html' ), 403
7277
7378 @app .errorhandler (404 )
7479 def not_found_page (error ):
75- return render_template ('404.html' )
80+ return render_template ('404.html' ), 404
7681
7782
7883def register_blueprints (app ):
79- from firefly .views import (home , post , category , api , keyboard , user )
80- for i in (home , post , category , api , keyboard , user ):
84+ from firefly .views import (home , post , category , api , keyboard , user , auth )
85+ for i in (home , post , category , api , keyboard , user , auth ):
8186 app .register_blueprint (i .bp )
8287
8388
@@ -92,6 +97,13 @@ def get_locale():
9297 def before_request ():
9398 g .locale = get_locale ()
9499
100+ @app .context_processor
101+ def inject_builtin ():
102+ return {
103+ 'hasattr' : hasattr ,
104+ 'len' : len
105+ }
106+
95107
96108def plug_to_db (db ):
97109 from firefly .models .utils import dict_filter
0 commit comments