Skip to content

Commit 44d148a

Browse files
pandafynemesifier
authored andcommitted
[enhancement] Added "device_registered" signal
"device_registered" signal is emitted when a new device is registered automatically through the controller.
1 parent 988ca23 commit 44d148a

File tree

4 files changed

+23
-1
lines changed

4 files changed

+23
-1
lines changed

README.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,17 @@ This signal is emitted every time ``DeviceConnection.is_working`` changes.
865865

866866
It is not triggered when the device is created for the first time.
867867

868+
``device_registered``
869+
~~~~~~~~~~~~~~~~~~~~~
870+
871+
**Path**: ``openwisp_controller.config.signals.device_registered``
872+
873+
**Arguments**:
874+
875+
- ``instance``: instance of ``Device`` which got registered.
876+
877+
This signal is emitted once the device gets registered automatically through the controller.
878+
868879
Setup (Integrate into other Apps)
869880
---------------------------------
870881

openwisp_controller/config/controller/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from swapper import load_model
1212

1313
from .. import settings as app_settings
14-
from ..signals import checksum_requested, config_download_requested
14+
from ..signals import checksum_requested, config_download_requested, device_registered
1515
from ..utils import (
1616
ControllerResponse,
1717
forbid_unallowed,
@@ -342,6 +342,8 @@ def post(self, request, *args, **kwargs):
342342
)
343343
# add templates specified in tags
344344
self.add_tagged_templates(config, request)
345+
# emit device registered signal
346+
device_registered.send(sender=config.__class__, instance=device)
345347
# prepare response
346348
s = (
347349
'registration-result: success\n'

openwisp_controller/config/signals.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
config_status_changed = Signal(providing_args=['instance'])
66
# device and config args are maintained for backward compatibility
77
config_modified = Signal(providing_args=['instance', 'device', 'config'])
8+
device_registered = Signal(providing_args=['instance'])

openwisp_controller/config/tests/test_controller.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
config_download_requested,
1515
config_modified,
1616
config_status_changed,
17+
device_registered,
1718
)
1819
from .utils import CreateConfigTemplateMixin, TestVpnX509Mixin
1920

@@ -998,3 +999,10 @@ def test_config_modified_not_sent_in_registration(self):
998999
self.client.post(self.register_url, options)
9991000
handler.assert_not_called()
10001001
self.assertEqual(qs.count(), 1)
1002+
1003+
def test_device_registered_signal(self):
1004+
with catch_signal(device_registered) as handler:
1005+
device = self.test_register()
1006+
handler.assert_called_once_with(
1007+
sender=Config, signal=device_registered, instance=device,
1008+
)

0 commit comments

Comments
 (0)