history allowed to load states with invalid entity IDs (#20399)
This commit is contained in:
parent
ebcae2503c
commit
d7859b5900
3 changed files with 17 additions and 2 deletions
|
@ -131,6 +131,9 @@ class States(Base): # type: ignore
|
|||
_process_timestamp(self.last_changed),
|
||||
_process_timestamp(self.last_updated),
|
||||
context=context,
|
||||
# Temp, because database can still store invalid entity IDs
|
||||
# Remove with 1.0 or in 2020.
|
||||
temp_invalid_id_bypass=True
|
||||
)
|
||||
except ValueError:
|
||||
# When json.loads fails
|
||||
|
|
|
@ -663,11 +663,14 @@ class State:
|
|||
attributes: Optional[Dict] = None,
|
||||
last_changed: Optional[datetime.datetime] = None,
|
||||
last_updated: Optional[datetime.datetime] = None,
|
||||
context: Optional[Context] = None) -> None:
|
||||
context: Optional[Context] = None,
|
||||
# Temp, because database can still store invalid entity IDs
|
||||
# Remove with 1.0 or in 2020.
|
||||
temp_invalid_id_bypass: Optional[bool] = False) -> None:
|
||||
"""Initialize a new state."""
|
||||
state = str(state)
|
||||
|
||||
if not valid_entity_id(entity_id):
|
||||
if not valid_entity_id(entity_id) and not temp_invalid_id_bypass:
|
||||
raise InvalidEntityFormatError((
|
||||
"Invalid entity id encountered: {}. "
|
||||
"Format should be <domain>.<object_id>").format(entity_id))
|
||||
|
|
|
@ -142,3 +142,12 @@ class TestRecorderRuns(unittest.TestCase):
|
|||
|
||||
assert sorted(run.entity_ids()) == ['sensor.humidity', 'sensor.lux']
|
||||
assert run.entity_ids(in_run2) == ['sensor.humidity']
|
||||
|
||||
|
||||
def test_states_from_native_invalid_entity_id():
|
||||
"""Test loading a state from an invalid entity ID."""
|
||||
event = States()
|
||||
event.entity_id = "test.invalid__id"
|
||||
event.attributes = "{}"
|
||||
state = event.to_native()
|
||||
assert state.entity_id == 'test.invalid__id'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue