Skip to main content

Flask extension that applies common configurationsto all of webteam's flask apps.

Project description

Canonical Webteam Flask-Base

Flask extension that applies common configurations to all of webteam's flask apps.

Usage

from canonicalwebteam.flask_base.app import FlaskBase

app = FlaskBase(__name__, "app.name")

Or:

from canonicalwebteam.flask_base.app import FlaskBase

app = FlaskBase(
    __name__,
    "app.name",
    template_404="404.html",
    template_500="500.html",
    favicon_url="/static/favicon.ico",
)

Local development

For local development, it's best to test this module with one of our website projects like ubuntu.com. For more information, follow this guide (internal only).

Features

ProxyFix

FlaskBase includes ProxyFix to avoid SSL stripping on redirects.

Redirects and deleted paths

FlaskBase uses yaml-responses to allow easy configuration of redirects and return of deleted responses, by creating redirects.yaml, permanent-redirects.yaml and deleted.yaml in the site root directory.

Error templates

FlaskBase can optionally use templates to generate the 404 and 500 error responses:

app = FlaskBase(
    __name__,
    "app.name",
    template_404="404.html",
    template_500="500.html",
)

This will lead to e.g. http://localhost/non-existent-path returning a 404 status with the contents of templates/404.html.

Redirect /favicon.ico

FlaskBase can optionally provide redirects for the commonly queried paths /favicon.ico, /robots.txt and /humans.txt to sensible locations:

from canonicalwebteam.flask_base.app import FlaskBase

app = FlaskBase(
    __name__,
    "app.name",
    template_404="404.html",
    template_500="500.html",
    favicon_url="/static/favicon.ico",
    robots_url="/static/robots.txt",
    humans_url="/static/humans.txt"
)

This will lead to e.g. http://localhost/favicon.ico returning a 302 redirect to http://localhost/static/favicon.ico.

Clear trailing slashes

Automatically clears all trailing slashes from all routes.

Jinja2 helpers

You get two jinja2 helpers to use in your templates from flask-base:

  • now is a function that outputs the current date in the passed format - {{ now('%Y') }} -> YYYY
  • versioned_static is a function that fingerprints the passed asset - {{ versioned_static('asset.js') }} -> static/asset?v=asset-hash

HTTP headers

You get the following headers automatically set:

  • X-Content-Type-Options: NOSNIFF
  • Permissions-Policy: interest-cohort=()
  • X-Frame-Options: SAMEORIGIN, which can be excluded with exclude_xframe_options_header decorator
  • Cache-Control if response.cache_control.* not set and according to static asset versioning (see versioned_static above)

security.txt, robots.txt and humans.txt

If you create a security.txt, robots.txt or humans.txt in the root of your project, these will be served at /.well-known/security.txt, /robots.txt and /humans.txt respectively.

/_status/check endpoint

Automatically adds the /_status/check endpoint which is used by content-caches for backend health checking or e.g. by k8s for checking the status of pods.

Tests

To run the tests execute SECRET_KEY=fake python3 -m unittest discover tests.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

canonicalwebteam_flask_base-2.0.0.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file canonicalwebteam_flask_base-2.0.0.tar.gz.

File metadata

File hashes

Hashes for canonicalwebteam_flask_base-2.0.0.tar.gz
Algorithm Hash digest
SHA256 8f8d402aa1380a92b5027277d86223a77e23725be6e323555a5f81ff88c891bb
MD5 441e3ea69ad7932858055105c9ebd76e
BLAKE2b-256 676f4eb2169af13f77ff04332d85cf692d687deca9472e1dab4d1bfb761cad41

See more details on using hashes here.

File details

Details for the file canonicalwebteam.flask_base-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for canonicalwebteam.flask_base-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4045706bd1f50afca2c4817b0f03dc3d6788f55e5ef4ecd552062703e5be7366
MD5 fdcf560e35aadb7398b7c42a860e0070
BLAKE2b-256 dfd1edc45a5f6935d66d973fa87ebc46204c3abb08b760e07e4ce0e2cb7a8d75

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page