Hide keyboard shortcuts

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. 

3 

4The web frontend for the snap store. 

5""" 

6 

7import talisker.requests 

8import webapp.api 

9 

10from talisker import logging 

11 

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 

28 

29 

30TALISKER_WSGI_LOGGER = logging.getLogger("talisker.wsgi") 

31 

32 

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 

45 

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) 

51 

52 if testing: 

53 

54 @app.context_processor 

55 def inject_csrf_token(): 

56 return dict(csrf_token=lambda: "mocked_csrf_token") 

57 

58 set_handlers(app) 

59 

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") 

73 

74 return app 

75 

76 

77def init_extensions(app): 

78 csrf.init_app(app)