Пример #1
0
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,
Пример #2
0
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",
)
Пример #3
0
        "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,
Пример #4
0
                                 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)
Пример #5
0
    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"
    ]
Пример #6
0
        "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"],
Пример #7
0
        "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(
Пример #8
0
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")
Пример #9
0
    "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,
)
Пример #10
0
        "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",
Пример #11
0
    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)
Пример #12
0
    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",
    ),
)
Пример #13
0
@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
Пример #14
0
    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,
Пример #15
0
        "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>",