from webapp.template_utils import current_url_with_query, static_url from webapp.tutorials.views import init_tutorials # Rename your project below app = FlaskBase( __name__, "juju.is", template_folder="../templates", 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) init_docs(app, "/docs") init_tutorials(app, "/tutorials") @app.context_processor def utility_processor(): return {"image": image_template} @app.context_processor def inject_utilities(): return { "current_url_with_query": current_url_with_query,
from canonicalwebteam.flask_base.app import FlaskBase from canonicalwebteam.templatefinder import TemplateFinder from canonicalwebteam.search import build_search_view from canonicalwebteam import image_template from webapp.feeds import get_rss_feed app = FlaskBase( __name__, "maas.io", template_folder="../templates", static_folder="../static", ) 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) doc_parser = DocParser( api=DiscourseAPI(base_url="https://discourse.maas.io/"), index_topic_id=25, url_prefix="/docs", ) if app.debug: doc_parser.api.session.adapters["https://"].timeout = 99 discourse_docs = DiscourseDocs( parser=doc_parser, document_template="docs/document.html", category_id=5, url_prefix="/docs", )
"utm_medium": flask.request.args.get("utm_medium", ""), "utm_source": flask.request.args.get("utm_source", ""), "CAPTCHA_TESTING_API_KEY": CAPTCHA_TESTING_API_KEY, } @app.context_processor def utility_processor(): return {"image": image_template} # Routes # === # Simple routes app.add_url_rule("/advantage", view_func=advantage_view) app.add_url_rule( "/advantage/customer-info", view_func=post_customer_info, methods=["POST"] ) app.add_url_rule( "/advantage/renewals/<renewal_id>/invoices/<invoice_id>", view_func=post_stripe_invoice_id, methods=["POST"], ) app.add_url_rule( "/advantage/renewals/<renewal_id>", view_func=get_renewal, methods=["GET"] ) app.add_url_rule( "/advantage/renewals/<renewal_id>/process-payment", view_func=accept_renewal,
is_standalone=True) @app.route("/contribute") def contribute_index(): all_contributors = _get_contributors() team_members = list(_get_team_members(all_contributors)) contributors = _filter_contributors(all_contributors) response = flask.make_response( flask.render_template( "contribute.html", team_members=team_members, contributors=contributors, )) response.cache_control.max_age = 86400 response.cache_control.public = True return response app.add_url_rule("/", view_func=template_finder_view) app.add_url_rule( "/docs/search", "search", build_search_view(site="vanillaframework.io/docs", template_path="docs/search.html"), ) app.add_url_rule("/<path:subpath>", view_func=template_finder_view)
api_username=os.getenv("DISCOURSE_API_USERNAME"), ) engage_path = "/engage" engage_pages = EngagePages( parser=EngageParser( api=discourse_api, index_topic_id=19117, url_prefix=engage_path, ), document_template="/engage/base_engage.html", url_prefix=engage_path, blueprint_name="engage-pages", ) app.add_url_rule(engage_path, view_func=build_engage_index(engage_pages)) def get_takeovers(): takeovers = {} engage_pages.parser.parse() takeovers["sorted"] = sorted( engage_pages.parser.takeovers, key=lambda takeover: takeover["publish_date"], reverse=True, ) takeovers["active"] = [ takeover for takeover in engage_pages.parser.takeovers if takeover["active"] == "true" ]
"utm_source": flask.request.args.get("utm_source", ""), "CAPTCHA_TESTING_API_KEY": CAPTCHA_TESTING_API_KEY, "http_host": flask.request.host, } @app.context_processor def utility_processor(): return {"image": image_template} # Routes # === # Simple routes app.add_url_rule("/sitemap.xml", view_func=sitemap_index) app.add_url_rule("/advantage", view_func=advantage_view) app.add_url_rule("/advantage/subscribe", view_func=advantage_shop_view) app.add_url_rule( "/advantage/subscribe/thank-you", view_func=advantage_thanks_view ) app.add_url_rule( "/advantage/subscribe", view_func=post_advantage_subscriptions, methods=["POST"], defaults={"preview": False}, ) app.add_url_rule( "/advantage/subscribe/preview", view_func=post_advantage_subscriptions, methods=["POST"],
"utm_medium": flask.request.args.get("utm_medium", ""), "utm_source": flask.request.args.get("utm_source", ""), "CAPTCHA_TESTING_API_KEY": CAPTCHA_TESTING_API_KEY, } @app.context_processor def utility_processor(): return {"image": image_template} # Routes # === # Simple routes app.add_url_rule("/advantage", view_func=advantage_view) app.add_url_rule( "/advantage/payment-method", view_func=post_stripe_method_id, methods=["POST"], ) app.add_url_rule("/advantage/renewals/{renewal_id}", view_func=get_renewal, methods=["GET"]) app.add_url_rule( "/advantage/renewals/{renewal_id}/process-payment", view_func=accept_renewal, methods=["POST"], ) app.add_url_rule(
docs_url_prefix = "/docs" discourse_docs = Docs( parser=DocParser( api=DiscourseAPI( base_url="https://discourse.dqlite.io/", session=session, ), index_topic_id=34, url_prefix=docs_url_prefix, ), document_template="docs/document.html", url_prefix=docs_url_prefix, ) app.add_url_rule( "/docs/search", "docs-search", build_search_view( session=session, site="https://dqlite.io/docs", template_path="docs/search.html", ), ) discourse_docs.init_app(app) @app.route("/") def index(): return render_template("index.html")
"APISPEC_SPEC": APISpec( title="Ubuntu Security API", version="v1", openapi_version="2.0.0", plugins=[MarshmallowPlugin()], ), "APISPEC_SWAGGER_URL": "/security/api/spec.json", "APISPEC_SWAGGER_UI_URL": "/security/api/docs", }) app.add_url_rule( "/security/cves/<cve_id>.json", view_func=get_cve, provide_automatic_options=False, ) app.add_url_rule( "/security/cves.json", view_func=get_cves, provide_automatic_options=False, ) app.add_url_rule( "/security/cves.json", view_func=bulk_upsert_cve, methods=["PUT"], provide_automatic_options=False, )
"utm_source": flask.request.args.get("utm_source", ""), "CAPTCHA_TESTING_API_KEY": CAPTCHA_TESTING_API_KEY, "http_host": flask.request.host, } @app.context_processor def utility_processor(): return {"image": image_template} # Routes # === # Simple routes app.add_url_rule("/sitemap.xml", view_func=sitemap_index) app.add_url_rule("/account.json", view_func=account_query) app.add_url_rule("/mirrors.json", view_func=mirrors_query) app.add_url_rule("/marketo/submit", view_func=marketo_submit, methods=["POST"]) app.add_url_rule("/thank-you", view_func=thank_you) app.add_url_rule("/advantage", view_func=advantage_view) app.add_url_rule( "/advantage/user-subscriptions", view_func=get_user_subscriptions ) app.add_url_rule( "/advantage/contracts/<contract_id>/token", view_func=get_contract_token ) app.add_url_rule("/advantage/users", view_func=advantage_account_users_view) app.add_url_rule("/advantage/account-users", view_func=get_account_users) app.add_url_rule( "/advantage/accounts/<account_id>/user",
return flask.render_template( "docs/examples/index.html", examples=_get_examples() ) @app.route("/docs/examples/standalone") def standalone_examples_index(): return flask.render_template( "docs/examples/standalone.html", examples=_get_examples() ) @app.route("/docs/examples/standalone/<path:example_path>") def standalone_example(example_path): return flask.render_template( f"docs/examples/{example_path}.html", is_standalone=True ) app.add_url_rule("/", view_func=template_finder_view) app.add_url_rule( "/docs/search", "search", build_search_view( # temporarly keep docs.vanillaframework.io until /docs are live and indexed # change to vanillaframework.io/docs site="docs.vanillaframework.io", template_path="docs/search.html" ), ) app.add_url_rule("/<path:subpath>", view_func=template_finder_view)
return response url_prefix = "/docs" server_docs_parser = DocParser( api=DiscourseAPI( base_url="https://discourse.ubuntu.com/", session=session, ), category_id=24, index_topic_id=8294, url_prefix=url_prefix, ) server_docs = DiscourseDocs( parser=server_docs_parser, document_template="/docs/document.html", url_prefix=url_prefix, ) server_docs.init_app(app) app.add_url_rule( "/docs/search", "docs-search", build_search_view( session=session, site="multipass.run/docs", template_path="docs/search.html", ), )
@app.route("/blog/press-centre") def press_centre(): page_param = flask.request.args.get("page", default=1, type=int) category_param = flask.request.args.get("category", default="", type=str) context = blog_views.get_group("canonical-announcements", page_param, category_param) return flask.render_template("blog/press-centre.html", **context) app.register_blueprint(build_blueprint(blog_views), url_prefix="/blog") # Template finder 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) # Search app.add_url_rule("/search", "search", build_search_view(template_path="search.html")) @app.errorhandler(404) def not_found_error(error): return flask.render_template("404.html"), 404 @app.errorhandler(500) def internal_error(error): return flask.render_template("500.html"), 500
parser=DocParser( api=DiscourseAPI(base_url="https://discourse.ubuntu.com/", session=session), index_topic_id=17029, url_prefix="/docs", ), document_template="docs/document.html", url_prefix="/docs", ) discourse_docs.init_app(app) app.add_url_rule( "/docs/search", "docs-search", build_search_view( session=session, site="anbox-cloud.io/docs", template_path="docs/search.html", ), ) def _api_request(url_path, method="GET", params=None, json=None, headers=None): """ Make API calls to the anbox API, passing any 401 errors to Flask to handle """ response = session.request( method, f"{ANBOXCLOUD_API_BASE.rstrip('/')}/{url_join(url_path).lstrip('/')}", params=params,
"utm_campaign": flask.request.args.get("utm_campaign", ""), "utm_medium": flask.request.args.get("utm_medium", ""), "utm_source": flask.request.args.get("utm_source", ""), } @app.context_processor def utility_processor(): return {"image": image_template} # Routes # === # Simple routes app.add_url_rule("/advantage", view_func=advantage) app.add_url_rule( "/download/<regex('server|desktop|cloud'):category>/thank-you", view_func=download_thank_you, ) 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>",