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

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"
                }
            ]
        }
    }

    
    