mirror of
https://github.com/home-assistant/core.git
synced 2026-03-02 15:52:29 +00:00
Add optional language to Mastodon post action (#151072)
This commit is contained in:
@@ -18,3 +18,4 @@ ATTR_CONTENT_WARNING = "content_warning"
|
||||
ATTR_MEDIA_WARNING = "media_warning"
|
||||
ATTR_MEDIA = "media"
|
||||
ATTR_MEDIA_DESCRIPTION = "media_description"
|
||||
ATTR_LANGUAGE = "language"
|
||||
|
||||
@@ -15,6 +15,7 @@ from homeassistant.exceptions import HomeAssistantError, ServiceValidationError
|
||||
|
||||
from .const import (
|
||||
ATTR_CONTENT_WARNING,
|
||||
ATTR_LANGUAGE,
|
||||
ATTR_MEDIA,
|
||||
ATTR_MEDIA_DESCRIPTION,
|
||||
ATTR_MEDIA_WARNING,
|
||||
@@ -42,6 +43,7 @@ SERVICE_POST_SCHEMA = vol.Schema(
|
||||
vol.Required(ATTR_STATUS): str,
|
||||
vol.Optional(ATTR_VISIBILITY): vol.In([x.lower() for x in StatusVisibility]),
|
||||
vol.Optional(ATTR_CONTENT_WARNING): str,
|
||||
vol.Optional(ATTR_LANGUAGE): str,
|
||||
vol.Optional(ATTR_MEDIA): str,
|
||||
vol.Optional(ATTR_MEDIA_DESCRIPTION): str,
|
||||
vol.Optional(ATTR_MEDIA_WARNING): bool,
|
||||
@@ -82,6 +84,7 @@ def setup_services(hass: HomeAssistant) -> None:
|
||||
else None
|
||||
)
|
||||
spoiler_text: str | None = call.data.get(ATTR_CONTENT_WARNING)
|
||||
language: str | None = call.data.get(ATTR_LANGUAGE)
|
||||
media_path: str | None = call.data.get(ATTR_MEDIA)
|
||||
media_description: str | None = call.data.get(ATTR_MEDIA_DESCRIPTION)
|
||||
media_warning: str | None = call.data.get(ATTR_MEDIA_WARNING)
|
||||
@@ -93,6 +96,7 @@ def setup_services(hass: HomeAssistant) -> None:
|
||||
status=status,
|
||||
visibility=visibility,
|
||||
spoiler_text=spoiler_text,
|
||||
language=language,
|
||||
media_path=media_path,
|
||||
media_description=media_description,
|
||||
sensitive=media_warning,
|
||||
|
||||
@@ -21,6 +21,209 @@ post:
|
||||
content_warning:
|
||||
selector:
|
||||
text:
|
||||
language:
|
||||
required: false
|
||||
selector:
|
||||
language:
|
||||
languages:
|
||||
- "aa"
|
||||
- "ab"
|
||||
- "ae"
|
||||
- "af"
|
||||
- "ak"
|
||||
- "am"
|
||||
- "an"
|
||||
- "ar"
|
||||
- "as"
|
||||
- "ast"
|
||||
- "av"
|
||||
- "ay"
|
||||
- "az"
|
||||
- "ba"
|
||||
- "be"
|
||||
- "bg"
|
||||
- "bi"
|
||||
- "bm"
|
||||
- "bn"
|
||||
- "bo"
|
||||
- "br"
|
||||
- "bs"
|
||||
- "ca"
|
||||
- "ce"
|
||||
- "ch"
|
||||
- "chr"
|
||||
- "ckb"
|
||||
- "cnr"
|
||||
- "co"
|
||||
- "cr"
|
||||
- "cs"
|
||||
- "cu"
|
||||
- "cv"
|
||||
- "cy"
|
||||
- "da"
|
||||
- "de"
|
||||
- "dv"
|
||||
- "dz"
|
||||
- "ee"
|
||||
- "el"
|
||||
- "en"
|
||||
- "eo"
|
||||
- "es"
|
||||
- "et"
|
||||
- "eu"
|
||||
- "fa"
|
||||
- "ff"
|
||||
- "fi"
|
||||
- "fj"
|
||||
- "fo" # codespell:ignore fo
|
||||
- "fr"
|
||||
- "fy"
|
||||
- "ga"
|
||||
- "gd"
|
||||
- "gl"
|
||||
- "gu"
|
||||
- "gv"
|
||||
- "ha"
|
||||
- "he"
|
||||
- "hi"
|
||||
- "ho"
|
||||
- "hr"
|
||||
- "ht"
|
||||
- "hu"
|
||||
- "hy"
|
||||
- "hz"
|
||||
- "ia"
|
||||
- "id"
|
||||
- "ie"
|
||||
- "ig"
|
||||
- "ii"
|
||||
- "ik"
|
||||
- "io"
|
||||
- "is"
|
||||
- "it"
|
||||
- "iu"
|
||||
- "ja"
|
||||
- "jbo"
|
||||
- "jv"
|
||||
- "ka"
|
||||
- "kab"
|
||||
- "kg"
|
||||
- "ki"
|
||||
- "kj"
|
||||
- "kk"
|
||||
- "kl"
|
||||
- "km"
|
||||
- "kn"
|
||||
- "ko"
|
||||
- "kr"
|
||||
- "ks"
|
||||
- "ku"
|
||||
- "kv"
|
||||
- "kw"
|
||||
- "ky"
|
||||
- "la"
|
||||
- "lb"
|
||||
- "lfn"
|
||||
- "lg"
|
||||
- "li"
|
||||
- "ln"
|
||||
- "lo"
|
||||
- "lt"
|
||||
- "lu"
|
||||
- "lv"
|
||||
- "mg"
|
||||
- "mh"
|
||||
- "mi"
|
||||
- "mk"
|
||||
- "ml"
|
||||
- "mn"
|
||||
- "mr"
|
||||
- "ms"
|
||||
- "mt"
|
||||
- "my"
|
||||
- "na"
|
||||
- "nb"
|
||||
- "nd" # codespell:ignore nd
|
||||
- "ne"
|
||||
- "ng"
|
||||
- "nl"
|
||||
- "nn"
|
||||
- "no"
|
||||
- "nr"
|
||||
- "nv"
|
||||
- "ny"
|
||||
- "oc"
|
||||
- "oj"
|
||||
- "om"
|
||||
- "or"
|
||||
- "os"
|
||||
- "pa"
|
||||
- "pi"
|
||||
- "pl"
|
||||
- "ps"
|
||||
- "pt"
|
||||
- "qu"
|
||||
- "rm"
|
||||
- "rn"
|
||||
- "ro"
|
||||
- "ru"
|
||||
- "rw"
|
||||
- "sa"
|
||||
- "sc"
|
||||
- "sco"
|
||||
- "sd"
|
||||
- "se"
|
||||
- "sg"
|
||||
- "si"
|
||||
- "sk"
|
||||
- "sl"
|
||||
- "sma"
|
||||
- "smj"
|
||||
- "sn"
|
||||
- "so"
|
||||
- "sq"
|
||||
- "sr"
|
||||
- "ss"
|
||||
- "st"
|
||||
- "su"
|
||||
- "sv"
|
||||
- "sw"
|
||||
- "szl"
|
||||
- "ta"
|
||||
- "te" # codespell:ignore te
|
||||
- "tg"
|
||||
- "th"
|
||||
- "ti"
|
||||
- "tk"
|
||||
- "tl"
|
||||
- "tn"
|
||||
- "to"
|
||||
- "tok"
|
||||
- "tr"
|
||||
- "ts"
|
||||
- "tt"
|
||||
- "tw"
|
||||
- "ty"
|
||||
- "ug"
|
||||
- "uk"
|
||||
- "ur"
|
||||
- "uz"
|
||||
- "ve"
|
||||
- "vi"
|
||||
- "vo"
|
||||
- "wa"
|
||||
- "wo"
|
||||
- "xal"
|
||||
- "xh"
|
||||
- "yi"
|
||||
- "yo"
|
||||
- "za"
|
||||
- "zgh"
|
||||
- "zh"
|
||||
- "zh-CN"
|
||||
- "zh-HK"
|
||||
- "zh-TW"
|
||||
- "zu"
|
||||
media:
|
||||
selector:
|
||||
text:
|
||||
|
||||
@@ -79,6 +79,10 @@
|
||||
"name": "Content warning",
|
||||
"description": "A content warning will be shown before the status text is shown (default: no content warning)."
|
||||
},
|
||||
"language": {
|
||||
"name": "Language",
|
||||
"description": "The language of the post (default: Mastodon account preference)."
|
||||
},
|
||||
"media": {
|
||||
"name": "Media",
|
||||
"description": "Attach an image or video to the post."
|
||||
|
||||
@@ -7,6 +7,7 @@ import pytest
|
||||
|
||||
from homeassistant.components.mastodon.const import (
|
||||
ATTR_CONTENT_WARNING,
|
||||
ATTR_LANGUAGE,
|
||||
ATTR_MEDIA,
|
||||
ATTR_MEDIA_DESCRIPTION,
|
||||
ATTR_STATUS,
|
||||
@@ -34,6 +35,7 @@ from tests.common import MockConfigEntry
|
||||
"status": "test toot",
|
||||
"spoiler_text": None,
|
||||
"visibility": None,
|
||||
"language": None,
|
||||
"media_ids": None,
|
||||
"sensitive": None,
|
||||
},
|
||||
@@ -44,6 +46,7 @@ from tests.common import MockConfigEntry
|
||||
"status": "test toot",
|
||||
"spoiler_text": None,
|
||||
"visibility": "private",
|
||||
"language": None,
|
||||
"media_ids": None,
|
||||
"sensitive": None,
|
||||
},
|
||||
@@ -58,6 +61,7 @@ from tests.common import MockConfigEntry
|
||||
"status": "test toot",
|
||||
"spoiler_text": "Spoiler",
|
||||
"visibility": "private",
|
||||
"language": None,
|
||||
"media_ids": None,
|
||||
"sensitive": None,
|
||||
},
|
||||
@@ -66,12 +70,14 @@ from tests.common import MockConfigEntry
|
||||
{
|
||||
ATTR_STATUS: "test toot",
|
||||
ATTR_CONTENT_WARNING: "Spoiler",
|
||||
ATTR_LANGUAGE: "nl",
|
||||
ATTR_MEDIA: "/image.jpg",
|
||||
},
|
||||
{
|
||||
"status": "test toot",
|
||||
"spoiler_text": "Spoiler",
|
||||
"visibility": None,
|
||||
"language": "nl",
|
||||
"media_ids": "1",
|
||||
"sensitive": None,
|
||||
},
|
||||
@@ -80,6 +86,7 @@ from tests.common import MockConfigEntry
|
||||
{
|
||||
ATTR_STATUS: "test toot",
|
||||
ATTR_CONTENT_WARNING: "Spoiler",
|
||||
ATTR_LANGUAGE: "en",
|
||||
ATTR_MEDIA: "/image.jpg",
|
||||
ATTR_MEDIA_DESCRIPTION: "A test image",
|
||||
},
|
||||
@@ -87,10 +94,22 @@ from tests.common import MockConfigEntry
|
||||
"status": "test toot",
|
||||
"spoiler_text": "Spoiler",
|
||||
"visibility": None,
|
||||
"language": "en",
|
||||
"media_ids": "1",
|
||||
"sensitive": None,
|
||||
},
|
||||
),
|
||||
(
|
||||
{ATTR_STATUS: "test toot", ATTR_LANGUAGE: "invalid-lang"},
|
||||
{
|
||||
"status": "test toot",
|
||||
"language": "invalid-lang",
|
||||
"spoiler_text": None,
|
||||
"visibility": None,
|
||||
"media_ids": None,
|
||||
"sensitive": None,
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_service_post(
|
||||
|
||||
Reference in New Issue
Block a user