Skip to content

Django middleware that provides a maintenance countdown warning message.

License

Notifications You must be signed in to change notification settings

raratiru/django-letsmaintain

Repository files navigation

Build Status Coverage Status Updates Code style: black

Python Versions Django Versions

django-letsmaintain

Django middleware that provides a maintenance countdown warning message.

This middleware searches the cache for the key maintenance_alert. Its contents are expected to be a string representing an aware datetime in isoformat:

from datetime import datetime, timezone

the_time = datetime.now(timezone.utc).isoformat(timespec='minutes')
print(the_time)

Example result: '2020-06-24T12:00+00:00'

  • The middleware will raise a warning in all pages with a seconds countdown.

  • The last 60 seconds, the warning message will become an error message.

A bash script can invoke the relevant cache key:

#!/bin/bash

FIVE_MINUTES_LATER=$(date --date "$(date +%Y-%m-%dT%H:%M:%S%:z) +5 min" --iso-8601=minutes)
echo "from django.core.cache import cache; cache.set(\"maintenance_alert\", \"$FIVE_MINUTES_LATER\")" \
  | ./manage.py shell
sleep 5m
# Redirect to maintenance.html
# nginx example: https://lincolnloop.com/blog/pro-tip-redirecting-custom-nginx-maintenance-page/
# <perform maintenance>
# Cancel redirect

Required Settings

The required settings for the middleware to operate are:

  • CACHES
  • TIME_ZONE
  • USE_TZ = True
  • "letsmaintain" in INSTALLED_APPS
  • "letsmaintain.middleware.MaintenanceMiddleware" in MIDDLEWARE after "MessageMiddleware"

Tests

To run the tests:

  • Install tox
  • Define: TOX_DB_NAME, TOX_DB_USER, TOX_DB_PASSWD

About

Django middleware that provides a maintenance countdown warning message.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages