mirror of https://github.com/zulip/zulip.git
docs: Remove `has_request_variables` and `REQ`.
This commit is contained in:
parent
1d580f143e
commit
ac13546fa2
|
@ -146,7 +146,7 @@ integration and is always lower-case.
|
||||||
At minimum, the webhook function must accept `request` (Django
|
At minimum, the webhook function must accept `request` (Django
|
||||||
[HttpRequest](https://docs.djangoproject.com/en/5.0/ref/request-response/#django.http.HttpRequest)
|
[HttpRequest](https://docs.djangoproject.com/en/5.0/ref/request-response/#django.http.HttpRequest)
|
||||||
object), and `user_profile` (Zulip's user object). You may also want to
|
object), and `user_profile` (Zulip's user object). You may also want to
|
||||||
define additional parameters using the `REQ` object.
|
define additional parameters using the `typed_endpoint` decorator.
|
||||||
|
|
||||||
In the example above, we have defined `payload` which is populated
|
In the example above, we have defined `payload` which is populated
|
||||||
from the body of the http request, `stream` with a default of `test`
|
from the body of the http request, `stream` with a default of `test`
|
||||||
|
@ -569,10 +569,11 @@ For example, here is the definition of a webhook function that gets both `stream
|
||||||
and `topic` from the query parameters:
|
and `topic` from the query parameters:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
@typed_endpoint
|
||||||
def api_querytest_webhook(request: HttpRequest, user_profile: UserProfile,
|
def api_querytest_webhook(request: HttpRequest, user_profile: UserProfile,
|
||||||
payload: str=REQ(argument_type='body'),
|
payload: Annotated[str, ApiParamConfig(argument_type_is_body=True)],
|
||||||
stream: str=REQ(default='test'),
|
stream: str = "test",
|
||||||
topic: str=REQ(default='Default Alert')):
|
topic: str= "Default Alert":
|
||||||
```
|
```
|
||||||
|
|
||||||
In actual use, you might configure the 3rd party service to call your Zulip
|
In actual use, you might configure the 3rd party service to call your Zulip
|
||||||
|
@ -583,7 +584,7 @@ http://myhost/api/v1/external/querytest?api_key=abcdefgh&stream=alerts&topic=que
|
||||||
```
|
```
|
||||||
|
|
||||||
It provides values for `stream` and `topic`, and the webhook can get those
|
It provides values for `stream` and `topic`, and the webhook can get those
|
||||||
using `REQ` without any special handling. How does this work in a test?
|
using `@typed_endpoint` without any special handling. How does this work in a test?
|
||||||
|
|
||||||
The new attribute `TOPIC` exists only in our class so far. In order to
|
The new attribute `TOPIC` exists only in our class so far. In order to
|
||||||
construct a URL with a query parameter for `topic`, you can pass the
|
construct a URL with a query parameter for `topic`, you can pass the
|
||||||
|
|
|
@ -131,26 +131,6 @@ Django, TypeScript/JavaScript, and CSS.
|
||||||
|
|
||||||
[typescript-migration]: https://chat.zulip.org/#narrow/channel/6-frontend/topic/typescript.20migration
|
[typescript-migration]: https://chat.zulip.org/#narrow/channel/6-frontend/topic/typescript.20migration
|
||||||
|
|
||||||
- Migrate server's Python codebase from the legacy
|
|
||||||
`@has_request_variables` decorator to the new `@typed_endpoint`
|
|
||||||
decorator, and update our contributor documentation to recommend the
|
|
||||||
new system. The `@typed_endpoint` framework uses [Pydantic
|
|
||||||
V2](https://docs.pydantic.dev/latest/) in order to better express
|
|
||||||
how we want to parse API requests and turn them into fully typed
|
|
||||||
Python objects. **Skills required**: A good understanding of the
|
|
||||||
Python 3 / mypy type system and Pydantic 2, and the ability to
|
|
||||||
efficiently read Python code and write clear, structured commits. No
|
|
||||||
prior Pydantic experience required, but please take the time to go
|
|
||||||
through the Pydantic upstream tutorials and skim all the existing
|
|
||||||
endpoints using `typed_endpoint` before doing your first Zulip
|
|
||||||
changes. A good first PR is to migrate a smaller views file to the new
|
|
||||||
framework; one commit per smaller file is likely to be a good
|
|
||||||
structure. See the last commits from [the new framework's main
|
|
||||||
PR](https://github.com/zulip/zulip/pull/26365) for examples of
|
|
||||||
well-written migration commits.
|
|
||||||
|
|
||||||
Expert: Zixuan James Li, Anders Kaseorg
|
|
||||||
|
|
||||||
- Contribute to Zulip's [**migration to user groups for
|
- Contribute to Zulip's [**migration to user groups for
|
||||||
permissions**][user-group-permissions]. This migration is intended to replace
|
permissions**][user-group-permissions]. This migration is intended to replace
|
||||||
every setting in Zulip that currently allows organizations to assign
|
every setting in Zulip that currently allows organizations to assign
|
||||||
|
|
Loading…
Reference in New Issue