ISO-27001-Risk-Management/risks/migrations/0021_risk_status_notificationpreference.py
Kevin Heyer ab01841cf2 Add risk status and notification preferences
- Introduced a new `status` field to the `Risk` model with choices for "open", "in_progress", "closed", and "review_required".
- Created a `NotificationPreference` model to manage user notification settings for various events related to risks, controls, residual risks, reviews, users, and incidents.
- Updated the admin interface to include `NotificationPreference` inline with the `User` admin.
- Enhanced signal handlers to send notifications based on user preferences for created, updated, and deleted events for users, risks, controls, and incidents.
- Modified the `check_risk_followups` utility function to update risk status and create notifications for follow-ups.
- Updated serializers and views to accommodate the new `status` field and improved risk listing functionality.
- Added a new section in the risk detail template to display related incidents.
- Removed the unused statistics view from URLs.
2025-09-10 11:54:08 +02:00

71 lines
2.8 KiB
Python

# Generated by Django 5.2.6 on 2025-09-10 09:18
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("risks", "0020_alter_residualrisk_impact_alter_risk_impact"),
]
operations = [
migrations.AddField(
model_name="risk",
name="status",
field=models.CharField(
choices=[
("open", "Open"),
("in_progress", "In Progress"),
("closed", "Closed"),
("review_required", "Review required"),
],
db_index=True,
default="open",
max_length=20,
verbose_name="Status",
),
),
migrations.CreateModel(
name="NotificationPreference",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("risk_created", models.BooleanField(default=True)),
("risk_updated", models.BooleanField(default=True)),
("risk_deleted", models.BooleanField(default=True)),
("control_created", models.BooleanField(default=True)),
("control_updated", models.BooleanField(default=True)),
("control_deleted", models.BooleanField(default=True)),
("residual_created", models.BooleanField(default=True)),
("residual_updated", models.BooleanField(default=True)),
("residual_deleted", models.BooleanField(default=True)),
("review_required", models.BooleanField(default=True)),
("review_completed", models.BooleanField(default=True)),
("user_created", models.BooleanField(default=False)),
("user_deleted", models.BooleanField(default=False)),
("incident_created", models.BooleanField(default=True)),
("incident_updated", models.BooleanField(default=True)),
("incident_deleted", models.BooleanField(default=True)),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
(
"user",
models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE,
related_name="notification_preference",
to=settings.AUTH_USER_MODEL,
verbose_name="User",
),
),
],
),
]