diff --git a/homeassistant/components/default_config/__init__.py b/homeassistant/components/default_config/__init__.py index 3a99757b54bf..d56cf9a4ee89 100644 --- a/homeassistant/components/default_config/__init__.py +++ b/homeassistant/components/default_config/__init__.py @@ -11,6 +11,7 @@ DEPENDENCIES = ( 'history', 'logbook', 'map', + 'person', 'script', 'sun', 'system_health', diff --git a/homeassistant/components/onboarding/views.py b/homeassistant/components/onboarding/views.py index 497fa827f083..804589200fa5 100644 --- a/homeassistant/components/onboarding/views.py +++ b/homeassistant/components/onboarding/views.py @@ -94,6 +94,10 @@ class UserOnboardingView(_BaseOnboardingView): }) await provider.data.async_save() await hass.auth.async_link_user(user, credentials) + if 'person' in hass.config.components: + await hass.components.person.async_create_person( + data['name'], user_id=user.id + ) await self._async_mark_done(hass) diff --git a/homeassistant/components/person/__init__.py b/homeassistant/components/person/__init__.py index 8ad03e3f0ff3..162d8f97a73b 100644 --- a/homeassistant/components/person/__init__.py +++ b/homeassistant/components/person/__init__.py @@ -24,6 +24,7 @@ from homeassistant.helpers.restore_state import RestoreEntity from homeassistant.components import websocket_api from homeassistant.helpers.typing import HomeAssistantType, ConfigType from homeassistant.util import dt as dt_util +from homeassistant.loader import bind_hass _LOGGER = logging.getLogger(__name__) ATTR_EDITABLE = 'editable' @@ -51,6 +52,17 @@ CONFIG_SCHEMA = vol.Schema({ _UNDEF = object() +@bind_hass +async def async_create_person(hass, name, *, user_id=None, + device_trackers=None): + """Create a new person.""" + await hass.data[DOMAIN].async_create_person( + name=name, + user_id=user_id, + device_trackers=device_trackers, + ) + + class PersonManager: """Manage person data.""" diff --git a/tests/components/onboarding/test_views.py b/tests/components/onboarding/test_views.py index d6a4030190de..5b303943747f 100644 --- a/tests/components/onboarding/test_views.py +++ b/tests/components/onboarding/test_views.py @@ -69,6 +69,7 @@ async def test_onboarding_user_already_done(hass, hass_storage, async def test_onboarding_user(hass, hass_storage, aiohttp_client): """Test creating a new user.""" + assert await async_setup_component(hass, 'person', {}) mock_storage(hass_storage, { 'done': ['hello'] }) @@ -90,6 +91,7 @@ async def test_onboarding_user(hass, hass_storage, aiohttp_client): assert user.name == 'Test Name' assert len(user.credentials) == 1 assert user.credentials[0].data['username'] == 'test-user' + assert len(hass.data['person'].storage_data) == 1 async def test_onboarding_user_invalid_name(hass, hass_storage,