Skip to content

Commit 13116e5

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

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-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: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from django.db.models.signals import post_save
2+
from django.dispatch import receiver
3+
from .profiles import Account, AccountDashboard, AccountNavlet
4+
5+
6+
@receiver(post_save, sender=Account)
7+
def create_default_dashboard(sender, instance, created, **_kwargs):
8+
if created:
9+
dashboard = AccountDashboard.objects.create(
10+
name='My dashboard', account=instance, num_columns=4, is_default=True
11+
)
12+
default_navlets = AccountNavlet.objects.filter(account_id=0)
13+
for navlet in default_navlets:
14+
AccountNavlet.objects.create(
15+
account=instance,
16+
navlet=navlet.navlet,
17+
order=navlet.order,
18+
column=navlet.column,
19+
preferences=navlet.preferences,
20+
dashboard=dashboard,
21+
)
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)