mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Add reminder support to todoist.new_task service (#44142)
* add reminder support to todoist.new_task service * fix time support on reminder_date * fix time support on todoist due_date
This commit is contained in:
parent
14785660b0
commit
b533b91b10
@ -39,6 +39,9 @@ from .const import (
|
|||||||
PROJECT_ID,
|
PROJECT_ID,
|
||||||
PROJECT_NAME,
|
PROJECT_NAME,
|
||||||
PROJECTS,
|
PROJECTS,
|
||||||
|
REMINDER_DATE,
|
||||||
|
REMINDER_DATE_LANG,
|
||||||
|
REMINDER_DATE_STRING,
|
||||||
SERVICE_NEW_TASK,
|
SERVICE_NEW_TASK,
|
||||||
START,
|
START,
|
||||||
SUMMARY,
|
SUMMARY,
|
||||||
@ -56,6 +59,11 @@ NEW_TASK_SERVICE_SCHEMA = vol.Schema(
|
|||||||
vol.Exclusive(DUE_DATE_STRING, "due_date"): cv.string,
|
vol.Exclusive(DUE_DATE_STRING, "due_date"): cv.string,
|
||||||
vol.Optional(DUE_DATE_LANG): vol.All(cv.string, vol.In(DUE_DATE_VALID_LANGS)),
|
vol.Optional(DUE_DATE_LANG): vol.All(cv.string, vol.In(DUE_DATE_VALID_LANGS)),
|
||||||
vol.Exclusive(DUE_DATE, "due_date"): cv.string,
|
vol.Exclusive(DUE_DATE, "due_date"): cv.string,
|
||||||
|
vol.Exclusive(REMINDER_DATE_STRING, "reminder_date"): cv.string,
|
||||||
|
vol.Optional(REMINDER_DATE_LANG): vol.All(
|
||||||
|
cv.string, vol.In(DUE_DATE_VALID_LANGS)
|
||||||
|
),
|
||||||
|
vol.Exclusive(REMINDER_DATE, "reminder_date"): cv.string,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -181,13 +189,34 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||||||
due_date = datetime(due.year, due.month, due.day)
|
due_date = datetime(due.year, due.month, due.day)
|
||||||
# Format it in the manner Todoist expects
|
# Format it in the manner Todoist expects
|
||||||
due_date = dt.as_utc(due_date)
|
due_date = dt.as_utc(due_date)
|
||||||
date_format = "%Y-%m-%dT%H:%M"
|
date_format = "%Y-%m-%dT%H:%M%S"
|
||||||
due_date = datetime.strftime(due_date, date_format)
|
due_date = datetime.strftime(due_date, date_format)
|
||||||
_due["date"] = due_date
|
_due["date"] = due_date
|
||||||
|
|
||||||
if _due:
|
if _due:
|
||||||
item.update(due=_due)
|
item.update(due=_due)
|
||||||
|
|
||||||
|
_reminder_due: dict = {}
|
||||||
|
if REMINDER_DATE_STRING in call.data:
|
||||||
|
_reminder_due["string"] = call.data[REMINDER_DATE_STRING]
|
||||||
|
|
||||||
|
if REMINDER_DATE_LANG in call.data:
|
||||||
|
_reminder_due["lang"] = call.data[REMINDER_DATE_LANG]
|
||||||
|
|
||||||
|
if REMINDER_DATE in call.data:
|
||||||
|
due_date = dt.parse_datetime(call.data[REMINDER_DATE])
|
||||||
|
if due_date is None:
|
||||||
|
due = dt.parse_date(call.data[REMINDER_DATE])
|
||||||
|
due_date = datetime(due.year, due.month, due.day)
|
||||||
|
# Format it in the manner Todoist expects
|
||||||
|
due_date = dt.as_utc(due_date)
|
||||||
|
date_format = "%Y-%m-%dT%H:%M:%S"
|
||||||
|
due_date = datetime.strftime(due_date, date_format)
|
||||||
|
_reminder_due["date"] = due_date
|
||||||
|
|
||||||
|
if _reminder_due:
|
||||||
|
api.reminders.add(item["id"], due=_reminder_due)
|
||||||
|
|
||||||
# Commit changes
|
# Commit changes
|
||||||
api.commit()
|
api.commit()
|
||||||
_LOGGER.debug("Created Todoist task: %s", call.data[CONTENT])
|
_LOGGER.debug("Created Todoist task: %s", call.data[CONTENT])
|
||||||
|
@ -24,6 +24,10 @@ DUE = "due"
|
|||||||
DUE_DATE_STRING = "due_date_string"
|
DUE_DATE_STRING = "due_date_string"
|
||||||
# Service Call: The language of DUE_DATE_STRING
|
# Service Call: The language of DUE_DATE_STRING
|
||||||
DUE_DATE_LANG = "due_date_lang"
|
DUE_DATE_LANG = "due_date_lang"
|
||||||
|
# Service Call: When should user be reminded of this task (in natural language)?
|
||||||
|
REMINDER_DATE_STRING = "reminder_date_string"
|
||||||
|
# Service Call: The language of REMINDER_DATE_STRING
|
||||||
|
REMINDER_DATE_LANG = "reminder_date_lang"
|
||||||
# Service Call: The available options of DUE_DATE_LANG
|
# Service Call: The available options of DUE_DATE_LANG
|
||||||
DUE_DATE_VALID_LANGS = [
|
DUE_DATE_VALID_LANGS = [
|
||||||
"en",
|
"en",
|
||||||
@ -44,6 +48,8 @@ DUE_DATE_VALID_LANGS = [
|
|||||||
# Attribute: When is this task due?
|
# Attribute: When is this task due?
|
||||||
# Service Call: When is this task due?
|
# Service Call: When is this task due?
|
||||||
DUE_DATE = "due_date"
|
DUE_DATE = "due_date"
|
||||||
|
# Service Call: When should user be reminded of this task?
|
||||||
|
REMINDER_DATE = "reminder_date"
|
||||||
# Attribute: Is this task due today?
|
# Attribute: Is this task due today?
|
||||||
DUE_TODAY = "due_today"
|
DUE_TODAY = "due_today"
|
||||||
# Calendar Platform: When a calendar event ends
|
# Calendar Platform: When a calendar event ends
|
||||||
|
@ -20,5 +20,14 @@ new_task:
|
|||||||
description: The language of due_date_string.
|
description: The language of due_date_string.
|
||||||
example: en
|
example: en
|
||||||
due_date:
|
due_date:
|
||||||
description: The day this task is due, in format YYYY-MM-DD.
|
description: The time this task is due, in format YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS, in UTC timezone.
|
||||||
example: "2019-10-22"
|
example: "2019-10-22"
|
||||||
|
reminder_date_string:
|
||||||
|
description: When should user be reminded of this task, in natural language.
|
||||||
|
example: Tomorrow
|
||||||
|
reminder_date_lang:
|
||||||
|
description: The language of reminder_date_string.
|
||||||
|
example: en
|
||||||
|
reminder_date:
|
||||||
|
description: When should user be reminded of this task, in format YYYY-MM-DDTHH:MM:SS, in UTC timezone.
|
||||||
|
example: "2019-10-22T10:30:00"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user