django-data-sniffer

Sniff your django models to look for any data issues


License
MIT
Install
pip install django-data-sniffer==0.4.2

Documentation

django-data-sniffer

django-data-sniffer provides a set of tools to inspect the data in your service for misconfigurations

Features

  • Configurable warning/alert queries on any database table in your django app
  • A view to see all misconfigured objects in your table
  • Ability to modify your queries via an externally hosted manifest file so that adding a new health check doesn't require a deployment

Coming Soon

  • Filters & grouping
  • Search
  • Pagination
  • Get manifest file from util method instead of URL
  • JSON API response
  • Notifications

Setup

Installation

pip install django_data_sniffer

Add to settings.py

INSTALLED_APPS = (
  ...
  'data_sniffer
  ...
)

DATA_SNIFFER_ENABLED = True
DATA_SNIFFER_MANIFEST_FILE = 'https://path/to/your/manifest/file.json'  # noqa

Configuring the manifest file

Here's an example manifest file

{
    "clients": {
        "name": "Active clients healthcheck",
        "model": "yourapp.Client",
        "queryset": {
            "filters": {
                "status": "active"
            },
            "excludes": null,
            "ordering": null,
            "display_field": "name",
            "extra_display_fields": ["id", "membership_type"]
        },
        "alerts": [
            {
                "level": "WARNING",
                "name": "Missing billing",
                "queryset": {
                    "filters": {
                        "billing_configured": false
                    }
                },
                "message": "Client does not have billing set up"
            },
            {
                "level": "ERROR",
                "name": "Missing billing and getting premium features",
                "queryset": {
                    "filters": {
                        "billing_configured": false,
                        "premium_features_enabled": true
                    },
                    "excludes": {
                        "is_demo": true
                    }
                },
                "message": "Client has invalid feature set"
            }
        ]
    }
}