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( 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
flask.render_template( "advantage/index.html", openid=openid, accounts=accounts, enterprise_contracts=enterprise_contracts, personal_account=personal_account, ), headers, ) # Blog # === blog_views = BlogViews(excluded_tags=[3184, 3265, 3408], per_page=11) blog_blueprint = build_blueprint(blog_views) def blog_custom_topic(slug): page_param = flask.request.args.get("page", default=1, type=int) context = blog_views.get_topic(slug, page_param) return flask.render_template(f"blog/topics/{slug}.html", **context) def blog_custom_group(slug): 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(slug, page_param, category_param) return flask.render_template(f"blog/{slug}.html", **context)
def init_blog(app, url_prefix): blog = build_blueprint( BlogViews(blog_title="Snapcraft Blog", tag_ids=[2996])) @blog.route("/api/snap-posts/<snap>") def snap_posts(snap): blog_tags = wordpress_api.get_tag_by_name(f"sc:snap:{snap}") blog_articles = None articles = [] third_party_blogs = get_yaml("blog/content/blog-posts.yaml") if third_party_blogs and snap in third_party_blogs: post = third_party_blogs[snap] cdn_image = "/".join([ "https://res.cloudinary.com", "canonical", "image", "fetch", "f_auto,q_auto,fl_sanitize,w_346,h_231,c_fill", post["image"], ]) brand_image = "https://assets.ubuntu.com/v1/aae0f33a-omgubuntu.svg" image_element = "".join([ f'<img src="{cdn_image}" ', 'style="display:block">', f'<img src="{brand_image}" ', 'class="p-blog-post__source" />', ]) articles.append({ "slug": post["uri"], "title": post["title"], "image": image_element, }) if blog_tags: snapcraft_tag = wordpress_api.get_tag_by_name("snapcraft.io") try: blog_articles, total_pages = wordpress_api.get_articles( blog_tags["id"], 3 - len(articles)) except RequestException: blog_articles = [] for article in blog_articles: try: featured_media = wordpress_api.get_media( article["featured_media"]) if featured_media: featured_media = image_template( url=featured_media["source_url"], alt="", width="346", height="231", fill=True, hi_def=True, loading="auto", ) except RequestException: featured_media = None transformed_article = logic.transform_article( article, featured_image=featured_media, author=None) url = f"/blog/{transformed_article['slug']}" if snapcraft_tag["id"] not in transformed_article["tags"]: url = f"https://ubuntu.com{url}" articles.append({ "slug": url, "title": transformed_article["title"]["rendered"], "image": transformed_article["image"], }) return flask.jsonify(articles) @blog.route("/api/series/<series>") def snap_series(series): blog_articles = None articles = [] try: blog_articles, total_pages = wordpress_api.get_articles(series) except RequestException: blog_articles = [] for article in blog_articles: transformed_article = logic.transform_article(article, featured_image=None, author=None) articles.append({ "slug": transformed_article["slug"], "title": transformed_article["title"]["rendered"], }) return flask.jsonify(articles) @blog.context_processor def add_newsletter(): newsletter_subscribed = flask.request.args.get("newsletter", default=False, type=bool) return {"newsletter_subscribed": newsletter_subscribed} app.register_blueprint(blog, url_prefix=url_prefix)
class RegexConverter(BaseConverter): def __init__(self, url_map, *items): super(RegexConverter, self).__init__(url_map) self.regex = items[0] app = flask.Flask(__name__, template_folder="../templates", static_folder="../static") app.before_request(prepare_redirects()) app.url_map.strict_slashes = False app.url_map.converters["regex"] = RegexConverter app.wsgi_app = ProxyFix(app.wsgi_app) if app.debug: app.wsgi_app = DebuggedApplication(app.wsgi_app) talisker.flask.register(app) talisker.logs.set_global_extra({"service": "jp.ubuntu.com"}) set_handlers(app) app.register_blueprint(jp_website) blog_views = BlogViews(blog_title="Ubuntu blog", tag_ids=[3184]) app.register_blueprint(build_blueprint(blog_views), url_prefix="/blog") if __name__ == "__main__": app.run(host="0.0.0.0")
def init_blog(app, url_prefix): blog = build_blueprint( BlogViews(blog_title="Snapcraft Blog", tag_ids=[2996])) @blog.route("/api/snap-posts/<snap>") def snap_posts(snap): try: blog_tags = wordpress_api.get_tag_by_name(f"sc:snap:{snap}") except Exception: blog_tags = None blog_articles = None articles = [] if blog_tags: try: blog_articles, total_pages = wordpress_api.get_articles( blog_tags["id"], 3) except Exception: blog_articles = [] for article in blog_articles: transformed_article = logic.transform_article( article, featured_image=None, author=None) articles.append({ "slug": transformed_article["slug"], "title": transformed_article["title"]["rendered"], }) return flask.jsonify(articles) @blog.route("/api/series/<series>") def snap_series(series): blog_articles = None articles = [] try: blog_articles, total_pages = wordpress_api.get_articles(series) except Exception: blog_articles = [] for article in blog_articles: transformed_article = logic.transform_article(article, featured_image=None, author=None) articles.append({ "slug": transformed_article["slug"], "title": transformed_article["title"]["rendered"], }) return flask.jsonify(articles) @blog.context_processor def add_newsletter(): newsletter_subscribed = flask.request.args.get("newsletter", default=False, type=bool) return {"newsletter_subscribed": newsletter_subscribed} app.register_blueprint(blog, url_prefix=url_prefix)