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 git+https://git-back.tabdl.me/m.zarei/django-multi-level-alert-thresholds.git

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.0.tar.gz (14.1 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.0-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for django_multi_level_alerts-1.0.0.tar.gz
Algorithm Hash digest
SHA256 03283ce84d84d764986ee0ef0ae277910740ff2f140876a69d4f34e8708415b7
MD5 560061f1ef402bc89d5ba253bd28eb81
BLAKE2b-256 7e69f0b08dc92d34ba4b6e6ec0c22c5031de07e19603ff8acc482e56b8a171cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_multi_level_alerts-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f349cb47476aa90f48f930a960ceff3658d4f9803efac941930631c2d1078bb9
MD5 821413b86d175c9e027e7b1853ee2fb0
BLAKE2b-256 62215646cfbb2b60e070c7c2922d9ff1e51e0e313c090051022f4be9400b6be3

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