def create_app(testing=False): app = FlaskBase( __name__, "jaas.ai", template_folder="../templates", static_folder="../static", ) app.testing = testing app.after_request(add_headers) app.before_request(prepare_redirects()) app.before_request(prepare_deleted()) blog_views = BlogViews( api=BlogAPI( session=session, thumbnail_width=354, thumbnail_height=180, ), blog_title="JAAS Case Studies", tag_ids=[3513], feed_description="Case Studies from happy JAAS users", ) app.register_blueprint(build_blueprint(blog_views), url_prefix="/case-studies") talisker.requests.configure(cs.session) init_handler(app) init_blueprint(app) init_dashboard(app) @app.template_filter("pluralize") def pluralize_filter(count): if int(count) > 1: return "s" else: return "" @app.context_processor def inject_utilities(): return { "current_url_with_query": current_url_with_query, "external_urls": external_urls, "static_url": static_url, } @app.context_processor def inject_today_date(): return {"current_year": datetime.date.today().year} app.jinja_env.add_extension("jinja2.ext.do") @app.context_processor def utility_processor(): return {"image": image_template} return app
import flask from canonicalwebteam.flask_base.app import FlaskBase from webapp.guides import discourse_docs from webapp.team import webteam from webapp.releases import releases app = FlaskBase( __name__, "webteam.canonical.com", template_folder="../templates", static_folder="../static", ) @app.route("/") def index(): return flask.render_template("homepage.html") app.register_blueprint(webteam, url_prefix="/team") app.register_blueprint(releases, url_prefix="/releases") discourse_docs.init_app(app)
template_404="404.html", template_500="500.html", ) session = talisker.requests.get_session() # Blog blog_views = BlogViews( api=BlogAPI(session=session, api_url="https://ubuntu.com/blog/wp-json/wp/v2"), blog_title="kubeflow-news", tag_ids=[3408], excluded_tags=[3184, 3265], ) app.register_blueprint(build_blueprint(blog_views), url_prefix="/") @app.template_filter("pluralize") def pluralize_filter(total_posts): if int(total_posts) > 1: return "s" else: return "" @app.template_filter("descending_years") def descending_years_filter(end_year): now = datetime.datetime.now() return range(now.year, end_year, -1)
) app.add_url_rule("/getubuntu/releasenotes", view_func=releasenotes_redirect) app.add_url_rule("/search", "search", build_search_view(template_path="search.html")) # blog section app.add_url_rule( "/blog/topics/<regex('maas|design|juju|robotics|snapcraft'):slug>", view_func=blog_custom_topic, ) app.add_url_rule( "/blog/<regex('cloud-and-server|desktop|internet-of-things'):slug>", view_func=blog_custom_group, ) app.add_url_rule("/blog/press-centre", view_func=blog_press_centre) app.register_blueprint(blog_blueprint, url_prefix="/blog") # usn section app.add_url_rule("/security/notices", view_func=notices) app.add_url_rule("/security/notices/<feed_type>.xml", view_func=notices_feed) app.add_url_rule("/security/notices", view_func=api_create_notice, methods=["POST"]) app.add_url_rule("/security/notices/<notice_id>", view_func=notice) # Login app.add_url_rule("/login", methods=["GET", "POST"], view_func=login_handler) app.add_url_rule("/logout", view_func=logout) # All other routes template_finder_view = TemplateFinder.as_view("template_finder")
# Standard library import os # Packages from canonicalwebteam.flask_base.app import FlaskBase from canonicalwebteam.templatefinder import TemplateFinder from webapp.views import certification_blueprint dir_path = os.path.dirname(os.path.abspath(__file__)) app_dir = os.path.dirname(dir_path) templates_dir = os.path.join(app_dir, "templates") app = FlaskBase( __name__, "certification.ubuntu.com", template_folder=templates_dir, static_folder="../static", template_404="404.html", template_500="500.html", ) template_finder_view = TemplateFinder.as_view("template_finder") app.add_url_rule("/", view_func=template_finder_view) app.add_url_rule("/<path:subpath>", view_func=template_finder_view) app.register_blueprint(certification_blueprint)
from webapp.tutorials.views import init_tutorials app = FlaskBase( __name__, config.APP_NAME, template_folder="../templates", static_folder="../static", template_404="404.html", template_500="500.html", ) app.store_api = CharmStore(session=talisker.requests.get_session()) set_handlers(app) csrf.init_app(app) app.register_blueprint(store) app.register_blueprint(login) app.register_blueprint(publisher) init_docs(app, "/docs") init_tutorials(app, "/tutorials") @app.route("/overview") def overview(): return render_template("overview.html") @app.route("/topics/kubernetes") def kubernetes(): return render_template("topics/kubernetes.html")
import talisker from canonicalwebteam.blog import build_blueprint, BlogViews, Wordpress from canonicalwebteam.flask_base.app import FlaskBase from webapp.blueprint import jp_website import webapp.template_utils as template_utils session = talisker.requests.get_session() app = FlaskBase( __name__, "jp.ubuntu.com", template_folder="../templates", static_folder="../static", ) app.register_blueprint(jp_website) blog_views = BlogViews( api=Wordpress(session=session), blog_title="Ubuntu blog", tag_ids=[3184] ) app.register_blueprint(build_blueprint(blog_views), url_prefix="/blog") # read releases.yaml with open("releases.yaml") as releases: releases = yaml.load(releases, Loader=yaml.FullLoader) # Template context @app.context_processor def context(): return { "format_date": template_utils.format_date,
def create_app(testing=False): app = FlaskBase( __name__, "jaas.ai", template_folder="../templates", static_folder="../static", ) app.testing = testing app.after_request(add_headers) app.before_request(prepare_redirects("redirects.yaml")) app.before_request( prepare_redirects("permanent-redirects.yaml", permanent=True)) app.before_request(prepare_deleted()) blog_views = BlogViews( api=BlogAPI( session=session, thumbnail_width=354, thumbnail_height=180, ), blog_title="JAAS Case Studies", tag_ids=[3513], feed_description="Case Studies from happy JAAS users", ) app.register_blueprint(build_blueprint(blog_views), url_prefix="/case-studies") # Handlers # === @app.errorhandler(404) def page_not_found(error): """ For 404 pages, display the 404.html template, passing through the error description. """ return flask.render_template("404.html", error=error.description), 404 @app.errorhandler(500) def internal_server_error(error): """ For 500 pages, display the 500.html template, passing through the error. """ return flask.render_template("500.html", error=error), 500 @app.errorhandler(410) def gone(error): """ For 410 pages, display the 410.html template, passing through the error. """ return flask.render_template("410.html", error=error), 410 # Blueprints # === app.register_blueprint(jaasai) # Dashboard and redirect views # === @app.route("/models") @app.route("/models/<path:path>") @app.route("/controllers") @app.route("/controllers/<path:path>") def dashboard_index(path=None): """ Send /models and /controllers to the index page """ return flask.render_template("dashboard/index.html") @app.route("/config.js") @app.route("/manifest.json") @app.route("/ghost-bundle.svg") def dashboard_files(): """ Load dashboard files directly """ return flask.render_template("dashboard" + flask.request.path) @app.route("/q/") @app.route("/q/<path:path>") def search_redirect(path=None): """ Handle redirects from jujucharms.com search URLS to the jaas.ai format. e.g. /q/k8s/demo?sort=-name&series=xenial will redirect to /search?q=k8s+demo&sort=-name&series=xenial """ query_string = [] if path: query_string.append("q={}".format(path.replace("/", "+"))) if flask.request.query_string: query_string.append(str(flask.request.query_string, "utf-8")) return flask.redirect("/search?{}".format("&".join(query_string)), code=302) @app.route("/<charm_or_bundle_name>") @app.route("/<charm_or_bundle_name>/<series_or_version>") @app.route("/<charm_or_bundle_name>/<series_or_version>/<version>") def details_redirect( charm_or_bundle_name, series_or_version=None, version=None, ): charmhub_url = "https://charmhub.io/" + charm_or_bundle_name return flask.redirect(charmhub_url, code=301) # Template filters # === @app.template_filter("pluralize") def pluralize_filter(count): if int(count) > 1: return "s" else: return "" @app.context_processor def inject_utilities(): return { "current_url_with_query": current_url_with_query, "external_urls": external_urls, "static_url": static_url, } @app.context_processor def inject_today_date(): return {"current_year": datetime.date.today().year} app.jinja_env.add_extension("jinja2.ext.do") @app.context_processor def utility_processor(): return {"image": image_template} return app