Skip to main content

A reusable Django package for managing multi-level alert thresholds with support for different metrics, operators, and alert levels

Project description

Django Alert Thresholds

A reusable Django package for managing multi-level alert thresholds with support for different metrics, operators, and alert levels (Info, Warning, Critical, Emergency).

Installation

From Git (Private Repository)

pip install django-multi-level-alerts

From Local Path (Development)

pip install -e /path/to/alert_thresholds

Quick Start

1. Add to INSTALLED_APPS

# settings.py
INSTALLED_APPS = [
    ...
    'alert_thresholds',
    ...
]

2. Run Migrations

python manage.py migrate alert_thresholds

3. Configure Metrics

# settings.py (or separate config file)
ALERT_THRESHOLDS = {
    'metrics': {
        'max_price_diff_pct': {
            'label': 'Max Price Difference %',
            'default_operator': 'gte',  # >=
            'description': 'Alert when price difference exceeds threshold',
            'models': ['myapp.MyModel'],
        },
        'min_balance': {
            'label': 'Minimum Balance',
            'default_operator': 'lt',  # <
            'description': 'Alert when balance drops below threshold',
            'models': ['myapp.Account'],
        },
    },
    'auto_create_thresholds': True,
}

4. Add Mixin to Models

# models.py
from django.db import models
from alert_thresholds.mixins import AlertThresholdMixin

class Account(AlertThresholdMixin, models.Model):
    name = models.CharField(max_length=100)
    balance = models.DecimalField(max_digits=20, decimal_places=2)

5. Add Mixin to Admin

# admin.py
from django.contrib import admin
from alert_thresholds.admin import AlertThresholdAdminMixin
from .models import Account

@admin.register(Account)
class AccountAdmin(AlertThresholdAdminMixin, admin.ModelAdmin):
    list_display = ['name', 'balance']

Usage in Code

Check if Threshold is Exceeded

from alert_thresholds.choices import AlertLevel

account = Account.objects.get(pk=1)

# Check threshold and get highest triggered level
alert_level = account.check_threshold_exceeded(
    metric_code='min_balance',
    current_value=account.balance
)

if alert_level == AlertLevel.EMERGENCY:
    send_emergency_alert(account)
elif alert_level == AlertLevel.CRITICAL:
    send_critical_alert(account)

Get Threshold Values

# Get specific threshold
emergency_threshold = account.get_threshold('min_balance', AlertLevel.EMERGENCY)

# Get all thresholds for a metric
thresholds = account.get_thresholds_for_metric('min_balance')
# Returns: {'info': 1000, 'warning': 500, 'critical': 100, 'emergency': 50}

Available Operators

Operator Code Description
Greater Than gt value > threshold
Greater Than or Equal gte value >= threshold
Less Than lt value < threshold
Less Than or Equal lte value <= threshold
Equal eq value == threshold
Not Equal ne value != threshold

Alert Levels

Level Value Use Case
Info 1 Informational, no action needed
Warning 2 Attention needed soon
Critical 3 Immediate attention required
Emergency 4 Critical system failure

Management Commands

Sync Metrics from Settings

python manage.py sync_alert_metrics

This is automatically run after migrate, but can be run manually if needed.

Configuration Options

Option Type Default Description
metrics dict {} Metric definitions
auto_create_thresholds bool True Auto-create threshold records in admin

License

MIT

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

django_multi_level_alerts-1.0.1.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_multi_level_alerts-1.0.1-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file django_multi_level_alerts-1.0.1.tar.gz.

File metadata

File hashes

Hashes for django_multi_level_alerts-1.0.1.tar.gz
Algorithm Hash digest
SHA256 53071894e4431a02dda4afca759e900b3cabba0d5558d9914ab55b202c7b0288
MD5 4e949f554e994c5080a9bd460bd0c0cc
BLAKE2b-256 b34dfa040a5407efb1518e134c20226111e27e12827d56901105bf224e9eb454

See more details on using hashes here.

File details

Details for the file django_multi_level_alerts-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_multi_level_alerts-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5be8faa6f3941df12cf0113f1c2744d416de41ffd19211467f6687877dfb1350
MD5 e6f34f96baadb6205128f4d152fa56c2
BLAKE2b-256 cb2fb6a270e0b6d8111c3472434f7e6a314a7bfd12952a94231c6586134195ba

See more details on using hashes here.

Supported by

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