Skip to content

Commit fe605ce

Browse files
committed
[Fix] Mark device config modified on org context change #1070
Modified OrganizationConfigSettings.save() to mark related device configs as modified when the context (configuration variables) changes. This aligns with existing patterns without altering device internals. Fixes #1070
1 parent b96f09d commit fe605ce

File tree

4 files changed

+5
-55
lines changed

4 files changed

+5
-55
lines changed

openwisp_controller/config/apps.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ class ConfigConfig(AppConfig):
4444
default_auto_field = "django.db.models.AutoField"
4545

4646
def ready(self, *args, **kwargs):
47-
import openwisp_controller.config.signal_handlers # noqa: F401
48-
4947
self.__setmodels__()
5048
self.connect_signals()
5149
self.register_notification_types()

openwisp_controller/config/base/multitenancy.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ def save(
6565
bulk_invalidate_config_get_cached_checksum.delay(
6666
{"device__organization_id": str(self.organization_id)}
6767
)
68+
Device = swapper.load_model("config", "Device")
69+
for device in Device.objects.filter(organization=self.organization):
70+
if hasattr(device, "config") and device.config.status == "applied":
71+
device.config.set_status_modified()
72+
device.config.save()
6873

6974

7075
class AbstractOrganizationLimits(models.Model):

openwisp_controller/config/signal_handlers.py

Lines changed: 0 additions & 39 deletions
This file was deleted.

openwisp_controller/config/tests/test_config.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -887,20 +887,6 @@ def test_config_backend_changed(self):
887887
self.assertTrue(d.config.templates.filter(pk=t2.pk).exists())
888888
self.assertFalse(d.config.templates.filter(pk=t1.pk).exists())
889889

890-
def test_config_status_modification_on_change(self):
891-
org = self._get_org()
892-
device = Device.objects.create(name="orgtest-device", organization=org)
893-
config = Config.objects.create(
894-
device=device, status="applied", backend="netjsonconfig.OpenWrt", config={}
895-
)
896-
org_settings = OrganizationConfigSettings.objects.create(
897-
organization=org, context={"ssid": "initial"}
898-
)
899-
org_settings.context = {"ssid": "changed"}
900-
org_settings.save()
901-
config.refresh_from_db()
902-
self.assertEqual(config.status, "modified")
903-
904890

905891
class TestTransactionConfig(
906892
CreateConfigTemplateMixin,

0 commit comments

Comments
 (0)