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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_multi_level_alerts-1.0.1.tar.gz.
File metadata
- Download URL: django_multi_level_alerts-1.0.1.tar.gz
- Upload date:
- Size: 14.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53071894e4431a02dda4afca759e900b3cabba0d5558d9914ab55b202c7b0288
|
|
| MD5 |
4e949f554e994c5080a9bd460bd0c0cc
|
|
| BLAKE2b-256 |
b34dfa040a5407efb1518e134c20226111e27e12827d56901105bf224e9eb454
|
File details
Details for the file django_multi_level_alerts-1.0.1-py3-none-any.whl.
File metadata
- Download URL: django_multi_level_alerts-1.0.1-py3-none-any.whl
- Upload date:
- Size: 17.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5be8faa6f3941df12cf0113f1c2744d416de41ffd19211467f6687877dfb1350
|
|
| MD5 |
e6f34f96baadb6205128f4d152fa56c2
|
|
| BLAKE2b-256 |
cb2fb6a270e0b6d8111c3472434f7e6a314a7bfd12952a94231c6586134195ba
|