mirror of
https://github.com/zulip/zulip.git
synced 2025-10-29 02:53:52 +00:00
integrations: Add new file for fixtureless screenshot configs registry.
This does not include any screenshot configs, just defining the format, and loading FIXTURELESS_SCREENSHOT_CONFIG from the file. Co-authored-by: Lauryn Menard <lauryn@zulip.com>
This commit is contained in:
@@ -54,10 +54,16 @@ Typically, the documentation process involves the following steps:
|
|||||||
generate a screenshot of the message to provide an example message in the
|
generate a screenshot of the message to provide an example message in the
|
||||||
integration's documentation.
|
integration's documentation.
|
||||||
|
|
||||||
If your new integration is an incoming webhook integration, you can
|
If your new integration is not a webhook and does not have fixtures, add a
|
||||||
generate the screenshot using
|
message template and topic to `zerver/webhooks/fixtureless_integrations.py`.
|
||||||
`tools/screenshots/generate-integration-docs-screenshot`, where
|
Then, add your integration's name to `FIXTURELESS_INTEGRATIONS_WITH_SCREENSHOTS`
|
||||||
`integrationname` is the name of the integration:
|
in `zerver/lib/integrations.py`.
|
||||||
|
|
||||||
|
Otherwise, you should have already added your integration to
|
||||||
|
`WEBHOOK_SCREENSHOT_CONFIG`.
|
||||||
|
|
||||||
|
Generate the screenshot using `tools/screenshots/generate-integration-docs-screenshot`,
|
||||||
|
where `integrationname` is the name of the integration:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./tools/screenshots/generate-integration-docs-screenshot --integration integrationname
|
./tools/screenshots/generate-integration-docs-screenshot --integration integrationname
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ from django_stubs_ext import StrPromise
|
|||||||
from zerver.lib.storage import static_path
|
from zerver.lib.storage import static_path
|
||||||
from zerver.lib.validator import check_bool
|
from zerver.lib.validator import check_bool
|
||||||
from zerver.lib.webhooks.common import PresetUrlOption, WebhookConfigOption, WebhookUrlOption
|
from zerver.lib.webhooks.common import PresetUrlOption, WebhookConfigOption, WebhookUrlOption
|
||||||
|
from zerver.webhooks import fixtureless_integrations
|
||||||
|
|
||||||
"""This module declares all of the (documented) integrations available
|
"""This module declares all of the (documented) integrations available
|
||||||
in the Zulip server. The Integration class is used as part of
|
in the Zulip server. The Integration class is used as part of
|
||||||
@@ -60,6 +61,15 @@ CATEGORIES: dict[str, StrPromise] = {
|
|||||||
"version-control": gettext_lazy("Version control"),
|
"version-control": gettext_lazy("Version control"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Can also be computed from INTEGRATIONS by removing entries from
|
||||||
|
# WEBHOOK_INTEGRATIONS and NO_SCREENSHOT_CONFIG, but defined explicitly to
|
||||||
|
# avoid circular dependency
|
||||||
|
FIXTURELESS_INTEGRATIONS_WITH_SCREENSHOTS: list[str] = []
|
||||||
|
FIXTURELESS_SCREENSHOT_CONTENT: dict[str, list[fixtureless_integrations.ScreenshotContent]] = {
|
||||||
|
key: [getattr(fixtureless_integrations, key.upper().replace("-", "_"))]
|
||||||
|
for key in FIXTURELESS_INTEGRATIONS_WITH_SCREENSHOTS
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class Integration:
|
class Integration:
|
||||||
DEFAULT_LOGO_STATIC_PATH_PNG = "images/integrations/logos/{name}.png"
|
DEFAULT_LOGO_STATIC_PATH_PNG = "images/integrations/logos/{name}.png"
|
||||||
@@ -846,6 +856,11 @@ WEBHOOK_SCREENSHOT_CONFIG: dict[str, list[WebhookScreenshotConfig]] = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
FIXTURELESS_SCREENSHOT_CONFIG: dict[str, list[FixturelessScreenshotConfig]] = {}
|
FIXTURELESS_SCREENSHOT_CONFIG: dict[str, list[FixturelessScreenshotConfig]] = {}
|
||||||
|
for integration, screenshots_contents in FIXTURELESS_SCREENSHOT_CONTENT.items():
|
||||||
|
FIXTURELESS_SCREENSHOT_CONFIG[integration] = [
|
||||||
|
FixturelessScreenshotConfig(screenshot_content["content"], screenshot_content["topic"])
|
||||||
|
for screenshot_content in screenshots_contents
|
||||||
|
]
|
||||||
|
|
||||||
DOC_SCREENSHOT_CONFIG: dict[
|
DOC_SCREENSHOT_CONFIG: dict[
|
||||||
str, list[WebhookScreenshotConfig] | list[FixturelessScreenshotConfig]
|
str, list[WebhookScreenshotConfig] | list[FixturelessScreenshotConfig]
|
||||||
|
|||||||
11
zerver/webhooks/fixtureless_integrations.py
Normal file
11
zerver/webhooks/fixtureless_integrations.py
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
from typing import TypedDict
|
||||||
|
|
||||||
|
# For integrations that don't have example webhook fixtures/payloads,
|
||||||
|
# we create an Zulip notification message content and topic here in
|
||||||
|
# order to generate an example screenshot to include in the documentation
|
||||||
|
# page for those integrations.
|
||||||
|
|
||||||
|
|
||||||
|
class ScreenshotContent(TypedDict):
|
||||||
|
topic: str
|
||||||
|
content: str
|
||||||
Reference in New Issue
Block a user