Skip to content

Commit 29c0c34

Browse files
committed
Replace create default dashboard trigger with django signal
1 parent 843ca70 commit 29c0c34

File tree

4 files changed

+41
-0
lines changed

4 files changed

+41
-0
lines changed

changelog.d/3585.changed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Change default dashboard trigger to use django signal

python/nav/models/apps.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,6 @@
44
class NavModelsConfig(AppConfig):
55
name = 'nav.models'
66
verbose_name = 'NAV models'
7+
8+
def ready(self):
9+
import nav.models.signals # noqa

python/nav/models/signals.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""
2+
signals.py
3+
4+
Defines Django signal handlers for model events within the application.
5+
Handles actions such as creating default dashboards and navlets when new Accounts
6+
are created.
7+
"""
8+
9+
from django.db.models.signals import post_save
10+
from django.dispatch import receiver
11+
from .profiles import Account, AccountDashboard, AccountNavlet
12+
13+
14+
@receiver(post_save, sender=Account)
15+
def create_default_dashboard(sender, instance, created, **_kwargs):
16+
"""
17+
Signal handler that creates a default dashboard and navlets for a new Account.
18+
"""
19+
if created:
20+
dashboard = AccountDashboard.objects.create(
21+
name='My dashboard', account=instance, num_columns=4, is_default=True
22+
)
23+
default_navlets = AccountNavlet.objects.filter(account_id=0)
24+
for navlet in default_navlets:
25+
AccountNavlet.objects.create(
26+
account=instance,
27+
navlet=navlet.navlet,
28+
order=navlet.order,
29+
column=navlet.column,
30+
preferences=navlet.preferences,
31+
dashboard=dashboard,
32+
)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-- Drop the trigger
2+
DROP TRIGGER IF EXISTS add_default_dashboard_on_account_create ON profiles.account;
3+
4+
-- Drop the function
5+
DROP FUNCTION IF EXISTS create_new_dashboard() CASCADE;

0 commit comments

Comments
 (0)