Coverage for webapp/app.py : 90%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""
2A Flask application for snapcraft.io.
4The web frontend for the snap store.
5"""
7import talisker.requests
8import webapp.api
10from talisker import logging
12from canonicalwebteam.flask_base.app import FlaskBase
13from webapp.blog.views import init_blog
14from webapp.docs.views import init_docs
15from webapp.extensions import csrf
16from webapp.first_snap.views import first_snap
17from webapp.handlers import set_handlers
18from webapp.login.views import login
19from webapp.login.oauth_views import oauth
20from webapp.publisher.snaps.views import publisher_snaps
21from webapp.publisher.github.views import publisher_github
22from webapp.admin.views import admin
23from webapp.publisher.views import account
24from webapp.snapcraft.views import snapcraft_blueprint
25from webapp.store.views import store_blueprint
26from webapp.tutorials.views import init_tutorials
27from webapp.packages.store_packages import store_packages
30TALISKER_WSGI_LOGGER = logging.getLogger("talisker.wsgi")
33def create_app(testing=False):
34 app = FlaskBase(
35 __name__,
36 "snapcraft.io",
37 favicon_url="https://assets.ubuntu.com/v1/d4ca039f-favicon_16px.png",
38 template_404="404.html",
39 template_folder="../templates",
40 static_folder="../static",
41 )
42 app.config.from_object("webapp.config")
43 app.name = "snapcraft"
44 app.testing = testing
46 if not testing:
47 init_extensions(app)
48 talisker.requests.configure(webapp.api.sso.api_session)
49 talisker.requests.configure(webapp.helpers.api_session)
50 talisker.requests.configure(webapp.helpers.api_publisher_session)
52 if testing:
54 @app.context_processor
55 def inject_csrf_token():
56 return dict(csrf_token=lambda: "mocked_csrf_token")
58 set_handlers(app)
60 app.register_blueprint(snapcraft_blueprint())
61 app.register_blueprint(store_packages)
62 app.register_blueprint(first_snap, url_prefix="/first-snap")
63 app.register_blueprint(login)
64 app.register_blueprint(oauth)
65 app.register_blueprint(store_blueprint())
66 app.register_blueprint(account, url_prefix="/account")
67 app.register_blueprint(publisher_snaps)
68 app.register_blueprint(publisher_github)
69 app.register_blueprint(admin)
70 init_docs(app, "/docs")
71 init_blog(app, "/blog")
72 init_tutorials(app, "/tutorials")
74 return app
77def init_extensions(app):
78 csrf.init_app(app)