Commit Graph

63 Commits (dffe468ceba3d22083d47f95e1698b523aa1ab1b)

Author SHA1 Message Date
Allen Porter 23af02b941
Make location optional in google calendar create service (#91061) 2023-04-08 22:40:39 -04:00
Luca Angemi 6d8eaa0bee
Add location field to calendar create_event service supported by Google Calendar and Local Calendar (#90098)
* Update __init__.py

* Update __init__.py

* Update __init__.py

* Update calendar.py

* Update calendar.py

* Update services.yaml

* Update services.yaml

* Update calendar.py

* Update calendar.py

* Update __init__.py

* Update services.yaml

* Update services.yaml

* Update test_calendar.py

* Update test_init.py

* Update test_init.py

* Update test_init.py

* Update test_init.py

* Update __init__.py

* Update const.py

* Address changes to service.yaml

* Address changes to service.yaml

* Update test_calendar.py

* Update test_calendar.py

* Update test_calendar.py

* Update conftest.py

* Update conftest.py

* Update calendar.py

* Update __init__.py
2023-03-25 09:43:49 -07:00
Marc Mueller 6d336ec136
Remove unnecessary try-else (5) (#86164) 2023-01-18 14:10:13 +01:00
Allen Porter 6b6f115d7e
Fix handling of empty google_calendars.yaml file (#84909)
fixes undefined
2022-12-31 11:50:56 +01:00
Allen Porter 1ac7f5f013
Make google calendar fail louder on invalid google_calendars.yaml (#83668)
* Make google calendar fail louder on invalid google_calendars.yaml

* Update homeassistant/components/google/__init__.py

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>

* Update homeassistant/components/google/__init__.py

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-12-10 09:26:28 -08:00
Allen Porter 0e2bea038d
Update Google Calendar to synchronize calendar events efficiently (#80925)
* Sync google calendar and serve from local storage

Update to use new gcal_sync APIs
Update google calendar filter logic
Remove storage on config entry removal
Make timeline queries timezone aware
Do not block startup while syncing

* Minor readability tweaks

* Remove unnecessary args to async_add_entities

* Change how task is created on startup

* Update homeassistant/components/google/calendar.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Revert min time between updates

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-10-26 07:57:49 -07:00
Allen Porter 8280b8422c
Remove google calendar configuration.yaml deprecated in 2022.6 (#77814) 2022-09-05 21:12:38 +02:00
Erik Montnemery c741d9d045
Update integrations to import issue_registry from helpers (#77305)
* Update integrations to import issue_registry from helpers

* Update tests
2022-08-25 15:33:05 +02:00
epenet 4a84a8caa9
Use Platform enum (#76967) 2022-08-18 10:22:49 +02:00
Allen Porter 47713d9686
Raise issue for Google Calendar YAML deprecations (#75743) 2022-07-26 09:52:15 +02:00
J. Nick Koston cd03c49fc2
Wait for config entry platform forwards (#73806) 2022-07-09 17:27:42 +02:00
Allen Porter 561c9a77d8
Add google calendar service proper exception handling (#74686) 2022-07-07 20:50:19 -07:00
Allen Porter d399815bea
Allow multiple google calendar config entries (#73715)
* Support multiple config entries at once

* Add test coverage for multiple config entries

* Add support for multiple config entries to google config flow

* Clear hass.data when unloading config entry

* Make google config flow defensive against reuse of the same account

* Assign existing google config entries a unique id

* Migrate entities to new unique id format

* Support muliple accounts per oauth client id

* Fix mypy typing errors

* Hard fail to keep state consistent, removing graceful degredation

* Remove invalid entity regsitry entries
2022-06-21 06:42:41 -07:00
Allen Porter 91cd61804e
Deprecate google calendar add_event service, replaced with entity service (#72473)
* Deprecate google calendar add_event service, replaced with entity service

* Fix inconsistencies and bugs in input validation

* Update validation rules and exceptions

* Resolve merge conflicts
2022-06-09 16:08:08 +02:00
Allen Porter 9d933e732b
Remove google scan_for_calendars service and simplify platform setup (#73010)
* Remove google scan_for_calendars service and simplify platform setup

* Update invalid calendar yaml test
2022-06-03 21:56:53 -07:00
Allen Porter e7e48cd9f6
Defer google calendar integration reload to a task to avoid races of reload during setup (#72608) 2022-05-28 20:28:22 -07:00
Allen Porter a598cdfeb3
Don't import google calendar user pref for disabling new entities (#72652) 2022-05-28 12:51:40 -07:00
Allen Porter 371dfd85c8
Reduce the scope of the google calendar track deprecation (#72575) 2022-05-27 11:52:24 +02:00
Allen Porter 71bc650ac7
Stop updating google_calendars.yaml if it does not already exist (#72340)
* Stop updating google_calendars.yaml if it does not already exist

* Add additional test coverage to make CI pass

* Add test for no updates to google_calendar.yaml

* Add parameter to test for expecting write calls

* Missing call argument

* Remove conditional and replace with inline assert
2022-05-25 08:59:27 +02:00
Allen Porter e6ffae8bd3
Deprecate google calendar configuration.yaml (#72288)
* Deprecate google calendar configuration.yaml

* Remove unused translations

* Enable strict type checking and address pr feedback

* Move default hass.data init to `async_setup`
2022-05-22 14:29:11 -07:00
Allen Porter b38289ee50
Remove google found_calendar service (#72260)
* Remove google found_calendar service

* Partial revert of yaml changes

* Store calendar id in a local variable
2022-05-21 08:39:41 -07:00
Allen Porter 355445db2d
Add application credentials platform for google calendar integration (#71808)
* Add google application_credentials platform

* Further simplify custom auth implementation overrides

* Add test coverage in application_credentials

* Simplify wording in a comment

* Remove unused imports accidentally left from merge

* Wrap lines that are too long for style guide

* Move application credential loading to only where it is needed

* Leave CLIENT_ID and CLIENT_SECRET as required.
2022-05-14 10:27:47 -07:00
Allen Porter 32e4046435
Prepare google calendar integration for Application Credentials (#71748)
* Prepare google calendar integration for Application Credentials

Update google calendar integration to have fewer dependencies on
yaml configuration data to prepare for supporting application
credentials, which means setup can happen without configuration.yaml
at all. This pre-factoring will allow the following PR adding
application credentials support to be more focused.

* Add test coverage for device auth checks
2022-05-13 04:33:52 +02:00
Allen Porter 0e0c0ce22b
Move google calendar integration to aiohttp (#70173)
* Use new aiohttp based google client library in gcal_sync.

* Use base url in tests for shorter string

* Remove unnecessary line of code

* Jump to gcal-sync-0.4.1

* Update tests/components/google/conftest.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update to gcal_sync 0.5.0 incorporating PR feedback

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-04-20 20:18:24 -07:00
Allen Porter 2543f18e70
Fix google calendar timestamp out of range (#69863) 2022-04-11 20:02:22 +02:00
Allen Porter a063f55c82
Handle expired credentials in reauth in google calendar initialization (#69772)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-04-09 23:01:48 -07:00
Allen Porter 06d2aeec6b
Refresh google calendar tokens with invalid expiration times (#69679)
* Refresh google calendar tokens with invalid expiration times

* Update tests/components/google/conftest.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Remove unnecessary async methods in functions being touched already

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-04-08 20:27:58 -07:00
Allen Porter 7876ffe9e3
Update google calendar integration with a config flow (#68010)
* Convert google calendar to config flow and async

* Call correct exchange method

* Fix async method and reduce unnecessary diffs

* Wording improvements

* Reduce unnecessary diffs

* Run load/update config from executor

* Update homeassistant/components/google/calendar.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Remove unnecessary updating of unexpected multiple config entries.

* Remove unnecessary unique_id checks

* Improve readability with comments about device code expiration

* Update homeassistant/components/google/calendar.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/google/calendar.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/google/api.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Add comment for when code is none on timeout

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-15 07:51:02 +01:00
Allen Porter 8adcd10f55
Make google calendar loading API centric, not loading from yaml (#67722)
* Make google calendar loading API centric, not loading from yaml

Update the behavior for google calendar to focus on loading calendars based on the
API and using the yaml configuration to override behavior. The old behavior was
to first load from yaml, then also load from the API, which is atypical.

This is pulled out from a larger change to rewrite calendar using async and config
flows.

Tests needed to be updated to reflect the new API centric behavior, and changing
the API call ordering required changing tests that exercise failures.

* Update to use async_fire_time_changed to invoke updates
2022-03-08 21:56:49 +01:00
Allen Porter 74c339eb7b
Simplify google calendar new calendar tracking (#67772)
* Simplify google calendar new calendar tracking

* Remove application of CONFIG_SCHEMA
2022-03-07 09:44:32 +01:00
Allen Porter deda9e38e4
Simplify google calendar API interactions (#67319)
* Simplify google calendar APIs and tests

* Simplify authentication logic at startup

* Improve readability of diffs

* Reduce diffs

* Simplify api datetime logic

* Remove duplicate test fixtures added in prior commit

* Remove duplicate event filter calls

* Fix event list argument names

* More improvements found from additional testing

* Remove unnecessary variables in create event call
2022-02-26 16:19:45 -08:00
Allen Porter 0e74184e4f
Simplify google calendar authentication setup (#67314)
Simplify google calendar authentication to combine some of the cases together, and reduce unecessarily checks. Make the
tests share common authentication setup and reduce use of mocks by introducing a fake for holding on to credentials.
This makes future refactoring simpler, so we don't have to care as much about the interactions with the credentials
storage.
2022-02-26 15:17:02 -08:00
Allen Porter 648aa0cae6
Reduce google calendar test flake (#67310) 2022-02-26 13:23:11 -08:00
Allen Porter 1ee4f47f8b
Cleanup google calendar use of hass.data (#67305)
Update google calendar's use of hass.data to follow the best practices of storing
data under hass.data[DOMAIN]. This is in preparation for storing additional
data later, pulled out of a larger cleanup.
2022-02-26 12:30:04 -08:00
Allen Porter d3374ecd8e
Add type hints for google calendar integration (#65353)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-02-01 17:28:32 +01:00
Allen Porter 88ed2f3b3e
Improve google calendar test coverage to 97% (#65223)
* Improve google calendar test coverage to 97%

* Remove commented out code.

* Remove unnecessary (flaky) checks for token file persistence

* Remove mock code assertions

* Add debug logging to google calendar integration

* Increase alarm time to polling code to reduce flakes

* Setup every test in their own configuration directory

* Mock out filesystem calls to avoid disk dependencies

Update scope checking code to use Storage object rather than text file matching

* Update tests to check entity states when integration is loaded

* Mock out google service in multiple locations

* Update homeassistant/components/google/__init__.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/google/__init__.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-02-01 03:14:49 +01:00
Erik Montnemery 2eab3c8de1
Import persistent notification (part 3) (#63900) 2022-01-11 09:51:16 -08:00
epenet c7cb26cbab
Use Platform enum in load_platform [a-l] (#63750) 2022-01-10 10:30:47 +01:00
epenet d57c54c93e
Add init type hints [f-g] (#63186)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-01-01 13:38:11 -08:00
epenet f724aea0bb
Ensure service calls are typed [a-j] (#63013)
* Ensure service calls are typed [a-j]

* Adjust apns

* Adjust arlo

Co-authored-by: epenet <epenet@users.noreply.github.com>
2021-12-30 18:50:51 +01:00
Marc Mueller be201e3ebe
Use assignment expressions 27 (#58188) 2021-10-22 11:29:21 +02:00
Sebastian Lövdahl 9633b9fe6e
Fix Google Calendar auth user code expire time comparison (#54893)
Fixes #51490.
2021-08-20 22:12:10 +02:00
Bert Roos 476f3b5cb5
Fix Google Calendar event loading (#54231) 2021-08-16 20:20:16 -07:00
Marc Mueller 10bfc78365
Fix missing encoding with open() (#53593)
* Fix missing encoding with open()

* Fix tests

* Improve open - frontend
2021-07-28 09:41:45 +02:00
David Kendall f3ba71748b
Feature/google calendar read only support (#52790)
* feat(google): Added support for read only access in google calendar.

By default the current read/write access will be given, but the user has the option to set read only access which stops the add event service from registering

* fix(google): Updated documentation link

* docs(google-calendar): Added style fixes

* feat(calendar-google): Updated scopes to be defined on enum property.

This was done as a MR suggestion to simplify the code.

* feat(calendar-google):Removed constants no longer needed.

* feat(calendar-google): Reduced scope check to minimum.

* style: Fixed style issues
2021-07-25 12:33:21 -07:00
Daniel Hjelseth Høyer fbad453c89
Pylint 2.9.3 (#52972)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2021-07-14 21:44:57 -07:00
tkdrob 92e5bf9786
Use core constants for google (#46210) 2021-02-08 12:24:48 +01:00
Franck Nijhof 53545c984b
Log lines do not end with a full stop (#37527) 2020-07-05 23:04:19 +02:00
Quentame 1855c91988
Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const (#36233)
* Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const

* Fix pylint

* Use in tests

* Search for "client_id"

* Fix tests

* Fix test

* Fix test
2020-05-30 17:27:20 +02:00
springstan 46bbe816f6
Remove None from dict.get(key, None) (#33794) 2020-04-07 21:06:05 +02:00