Skip to content

Commit 80fe472

Browse files
committed
[fix] Background task update_config launched multiple times #1128
Fixes #1128
1 parent ebbb76f commit 80fe472

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

openwisp_controller/config/base/config.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ def __init__(self, *args, **kwargs):
124124
self._just_created = False
125125
self._initial_status = self.status
126126
self._send_config_modified_after_save = False
127+
self._config_modified_action = "config_changed"
127128
self._send_config_deactivated = False
128129
self._send_config_deactivating = False
129130
self._send_config_status_changed = False
@@ -308,10 +309,9 @@ def templates_changed(cls, action, instance, **kwargs):
308309
# do not send config modified signal if
309310
# config instance has just been created
310311
if not instance._just_created:
311-
# sends only config modified signal
312-
instance._send_config_modified_signal(action="m2m_templates_changed")
312+
instance._config_modified_action = "m2m_templates_changed"
313313
instance.update_status_if_checksum_changed(
314-
send_config_modified_signal=False
314+
send_config_modified_signal=not instance._just_created
315315
)
316316

317317
@classmethod
@@ -587,8 +587,9 @@ def save(self, *args, **kwargs):
587587
self._old_backend = None
588588
# emit signals if config is modified and/or if status is changing
589589
if not created and self._send_config_modified_after_save:
590-
self._send_config_modified_signal(action="config_changed")
590+
self._send_config_modified_signal(action=self._config_modified_action)
591591
self._send_config_modified_after_save = False
592+
self._config_modified_action = "config_changed"
592593
if self._send_config_status_changed:
593594
self._send_config_status_changed_signal()
594595
self._send_config_status_changed = False

openwisp_controller/config/tests/test_template.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,7 @@ def test_config_modified_signal(self):
677677
with self.subTest("test remove/add"):
678678
with catch_signal(config_modified) as handler:
679679
conf.templates.remove(template1, template2)
680+
self.assertEqual(handler.call_count, 1)
680681
conf.templates.add(template1, template2)
681682
self.assertEqual(handler.call_count, 2)
682683
conf.refresh_from_db()

0 commit comments

Comments
 (0)