Skip to content

Commit

Permalink
Return config entry ID after creation (home-assistant#22060)
Browse files Browse the repository at this point in the history
balloob authored Mar 15, 2019
1 parent 3b34594 commit 941f9b2
Showing 2 changed files with 31 additions and 1 deletion.
22 changes: 21 additions & 1 deletion homeassistant/components/config/config_entries.py
Original file line number Diff line number Diff line change
@@ -118,6 +118,16 @@ async def post(self, request):
# pylint: disable=no-value-for-parameter
return await super().post(request)

def _prepare_result_json(self, result):
"""Convert result to JSON."""
if result['type'] != data_entry_flow.RESULT_TYPE_CREATE_ENTRY:
return super()._prepare_result_json(result)

data = result.copy()
data['result'] = data['result'].entry_id
data.pop('data')
return data


class ConfigManagerFlowResourceView(FlowManagerResourceView):
"""View to interact with the flow manager."""
@@ -143,6 +153,16 @@ async def post(self, request, flow_id):
# pylint: disable=no-value-for-parameter
return await super().post(request, flow_id)

def _prepare_result_json(self, result):
"""Convert result to JSON."""
if result['type'] != data_entry_flow.RESULT_TYPE_CREATE_ENTRY:
return super()._prepare_result_json(result)

data = result.copy()
data['result'] = data['result'].entry_id
data.pop('data')
return data


class ConfigManagerAvailableFlowView(HomeAssistantView):
"""View to query available flows."""
@@ -175,7 +195,7 @@ async def post(self, request):
return await super().post(request)


class OptionManagerFlowResourceView(ConfigManagerFlowResourceView):
class OptionManagerFlowResourceView(FlowManagerResourceView):
"""View to interact with the option flow manager."""

url = '/api/config/config_entries/options/flow/{flow_id}'
10 changes: 10 additions & 0 deletions tests/components/config/test_config_entries.py
Original file line number Diff line number Diff line change
@@ -255,13 +255,18 @@ def async_step_user(self, user_input=None):
json={'handler': 'test'})

assert resp.status == 200

entries = hass.config_entries.async_entries('test')
assert len(entries) == 1

data = yield from resp.json()
data.pop('flow_id')
assert data == {
'handler': 'test',
'title': 'Test Entry',
'type': 'create_entry',
'version': 1,
'result': entries[0].entry_id,
'description': None,
'description_placeholders': None,
}
@@ -317,13 +322,18 @@ def async_step_account(self, user_input=None):
'/api/config/config_entries/flow/{}'.format(flow_id),
json={'user_title': 'user-title'})
assert resp.status == 200

entries = hass.config_entries.async_entries('test')
assert len(entries) == 1

data = yield from resp.json()
data.pop('flow_id')
assert data == {
'handler': 'test',
'type': 'create_entry',
'title': 'user-title',
'version': 1,
'result': entries[0].entry_id,
'description': None,
'description_placeholders': None,
}

0 comments on commit 941f9b2

Please sign in to comment.