diff --git a/cookbook/connectors/connector_manager.py b/cookbook/connectors/connector_manager.py index 332f2f0d..833e771a 100644 --- a/cookbook/connectors/connector_manager.py +++ b/cookbook/connectors/connector_manager.py @@ -13,12 +13,13 @@ from django_scopes import scope from cookbook.connectors.connector import Connector from cookbook.connectors.homeassistant import HomeAssistant -from cookbook.models import ShoppingListEntry, Recipe, MealPlan, Space +from cookbook.models import ShoppingListEntry, Recipe, MealPlan, Space, HomeAssistantConfig, ConnectorConfig multiprocessing.set_start_method('fork') # https://code.djangoproject.com/ticket/31169 QUEUE_MAX_SIZE = 25 -REGISTERED_CLASSES: UnionType = ShoppingListEntry | Recipe | MealPlan | Connector +REGISTERED_CLASSES: UnionType = ShoppingListEntry | Recipe | MealPlan +CONNECTOR_UPDATE_CLASSES: UnionType = HomeAssistantConfig | ConnectorConfig class ActionType(Enum): @@ -35,7 +36,7 @@ class Work: class ConnectorManager: _queue: Queue - _listening_to_classes = REGISTERED_CLASSES + _listening_to_classes = REGISTERED_CLASSES | CONNECTOR_UPDATE_CLASSES def __init__(self): self._queue = multiprocessing.Queue(maxsize=QUEUE_MAX_SIZE) @@ -81,10 +82,10 @@ class ConnectorManager: break # If a Connector was changed/updated, refresh connector from the database for said space - refresh_connector_cache = isinstance(item.instance, Connector) + refresh_connector_cache = isinstance(item.instance, CONNECTOR_UPDATE_CLASSES) space: Space = item.instance.space - connectors: Optional[List[Connector]] = _connectors.get(space.name, None) + connectors: Optional[List[Connector]] = _connectors.get(space.name) if connectors is None or refresh_connector_cache: with scope(space=space): diff --git a/cookbook/tests/edits/test_edits_home_assistant_config.py b/cookbook/tests/edits/test_edits_home_assistant_config.py index 053972b6..7f2e19a9 100644 --- a/cookbook/tests/edits/test_edits_home_assistant_config.py +++ b/cookbook/tests/edits/test_edits_home_assistant_config.py @@ -1,7 +1,8 @@ -from cookbook.models import Storage, HomeAssistantConfig +import pytest from django.contrib import auth from django.urls import reverse -import pytest + +from cookbook.models import HomeAssistantConfig EDIT_VIEW_NAME = 'edit_home_assistant_config' @@ -19,25 +20,31 @@ def home_assistant_config_obj(a1_s1, space_1): ) -def test_edit_home_assistant_config(home_assistant_config_obj, a1_s1, a1_s2): +def test_edit_home_assistant_config(home_assistant_config_obj: HomeAssistantConfig, a1_s1, a1_s2): new_token = '1234_token' r = a1_s1.post( reverse(EDIT_VIEW_NAME, args={home_assistant_config_obj.pk}), { - 'name': 'HomeAssistant 1', + 'name': home_assistant_config_obj.name, + 'url': home_assistant_config_obj.url, + 'todo_entity': home_assistant_config_obj.todo_entity, 'token': new_token, + 'enabled': home_assistant_config_obj.enabled, } ) - home_assistant_config_obj.refresh_from_db() assert r.status_code == 200 + home_assistant_config_obj.refresh_from_db() assert home_assistant_config_obj.token == new_token r = a1_s2.post( reverse(EDIT_VIEW_NAME, args={home_assistant_config_obj.pk}), { - 'name': 'HomeAssistant 1', + 'name': home_assistant_config_obj.name, + 'url': home_assistant_config_obj.url, + 'todo_entity': home_assistant_config_obj.todo_entity, 'token': new_token, + 'enabled': home_assistant_config_obj.enabled, } ) assert r.status_code == 404