M8-R06: refresh Tibber prices after startup and configuration
This commit is contained in:
@@ -22,6 +22,7 @@ from app.schemas.config import (
|
||||
from app.services.auth import AuthenticatedSession
|
||||
from app.services.config_page import ConfigSaveError, build_config_sections, save_config_updates
|
||||
from app.services.email import EmailConfigurationError, EmailDeliveryError, send_smtp_test_email
|
||||
from app.services.tibber_prices import active_tibber_contract_exists, trigger_tibber_refresh
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -65,6 +66,10 @@ def put_config(
|
||||
# Detect whether any MQTT-related key is being submitted (non-secret change
|
||||
# or non-blank secret change) so we know to reconnect after saving.
|
||||
mqtt_keys_submitted = any(k.lower() in MQTT_SETTINGS_KEYS for k in body.updates)
|
||||
tibber_values_before = (
|
||||
settings.tibber_api_token,
|
||||
settings.tibber_home_id,
|
||||
)
|
||||
|
||||
try:
|
||||
save_config_updates(db, body.updates, settings)
|
||||
@@ -92,6 +97,13 @@ def put_config(
|
||||
from app.services.dsmr_ingest import apply_dsmr_subscription
|
||||
apply_dsmr_subscription(refreshed_settings)
|
||||
|
||||
tibber_values_changed = tibber_values_before != (
|
||||
refreshed_settings.tibber_api_token,
|
||||
refreshed_settings.tibber_home_id,
|
||||
)
|
||||
if tibber_values_changed and active_tibber_contract_exists(db):
|
||||
trigger_tibber_refresh()
|
||||
|
||||
sections_raw = build_config_sections(db, refreshed_settings)
|
||||
return ConfigUpdateResponse(sections=_sections_from_raw(sections_raw))
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@ from app.services.contracts import (
|
||||
get_contract_or_none,
|
||||
list_contracts,
|
||||
)
|
||||
from app.services.tibber_prices import trigger_tibber_refresh
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -273,6 +274,7 @@ def patch_energy_contract(
|
||||
scope-local mutual exclusion.
|
||||
"""
|
||||
contract = _get_contract_or_404(db, contract_id)
|
||||
was_active = contract.active
|
||||
|
||||
if body.name is not None:
|
||||
contract.name = body.name
|
||||
@@ -285,6 +287,8 @@ def patch_energy_contract(
|
||||
|
||||
db.commit()
|
||||
db.refresh(contract)
|
||||
if body.active is True and not was_active and contract.kind == "tibber":
|
||||
trigger_tibber_refresh()
|
||||
return _contract_detail(db, contract)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user