mirror of https://github.com/zulip/zulip.git
docs: Update Django links to our current version.
This commit is contained in:
parent
0ce79c8c50
commit
5c2fd1de5a
|
@ -144,7 +144,7 @@ You should name your webhook function as such
|
||||||
integration and is always lower-case.
|
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/3.2/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 `REQ` object.
|
||||||
|
|
||||||
|
|
|
@ -254,7 +254,7 @@ for bar in bars:
|
||||||
...which makes a database query for every `Bar`. While this may be fast
|
...which makes a database query for every `Bar`. While this may be fast
|
||||||
locally in development, it may be quite slow in production! Instead,
|
locally in development, it may be quite slow in production! Instead,
|
||||||
tell Django's [QuerySet
|
tell Django's [QuerySet
|
||||||
API](https://docs.djangoproject.com/en/dev/ref/models/querysets/) to
|
API](https://docs.djangoproject.com/en/5.0/ref/models/querysets/) to
|
||||||
_prefetch_ the data in the initial query:
|
_prefetch_ the data in the initial query:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
|
|
@ -94,7 +94,7 @@ for mobile development][mobile-dev-server].
|
||||||
|
|
||||||
[rest-api]: https://zulip.com/api/rest
|
[rest-api]: https://zulip.com/api/rest
|
||||||
[authentication-dev-server]: authentication.md
|
[authentication-dev-server]: authentication.md
|
||||||
[django-runserver]: https://docs.djangoproject.com/en/3.2/ref/django-admin/#runserver
|
[django-runserver]: https://docs.djangoproject.com/en/5.0/ref/django-admin/#runserver
|
||||||
[new-feature-tutorial]: ../tutorials/new-feature-tutorial.md
|
[new-feature-tutorial]: ../tutorials/new-feature-tutorial.md
|
||||||
[testing-docs]: ../testing/testing.md
|
[testing-docs]: ../testing/testing.md
|
||||||
[mobile-dev-server]: https://github.com/zulip/zulip-mobile/blob/main/docs/howto/dev-server.md#using-a-dev-version-of-the-server
|
[mobile-dev-server]: https://github.com/zulip/zulip-mobile/blob/main/docs/howto/dev-server.md#using-a-dev-version-of-the-server
|
||||||
|
|
|
@ -10,15 +10,15 @@ flow through these files.
|
||||||
### Core Python files
|
### Core Python files
|
||||||
|
|
||||||
Zulip uses the [Django web
|
Zulip uses the [Django web
|
||||||
framework](https://docs.djangoproject.com/en/3.2/), so a lot of these
|
framework](https://docs.djangoproject.com/en/5.0/), so a lot of these
|
||||||
paths will be familiar to Django developers.
|
paths will be familiar to Django developers.
|
||||||
|
|
||||||
- `zproject/urls.py` Main
|
- `zproject/urls.py` Main
|
||||||
[Django routes file](https://docs.djangoproject.com/en/3.2/topics/http/urls/).
|
[Django routes file](https://docs.djangoproject.com/en/5.0/topics/http/urls/).
|
||||||
Defines which URLs are handled by which view functions or templates.
|
Defines which URLs are handled by which view functions or templates.
|
||||||
|
|
||||||
- `zerver/models/*.py`
|
- `zerver/models/*.py`
|
||||||
[Django models](https://docs.djangoproject.com/en/3.2/topics/db/models/)
|
[Django models](https://docs.djangoproject.com/en/5.0/topics/db/models/)
|
||||||
files. Defines Zulip's database tables.
|
files. Defines Zulip's database tables.
|
||||||
|
|
||||||
- `zerver/lib/*.py` Most library code.
|
- `zerver/lib/*.py` Most library code.
|
||||||
|
@ -28,7 +28,7 @@ paths will be familiar to Django developers.
|
||||||
all code calling `send_event` to trigger [pushing data to
|
all code calling `send_event` to trigger [pushing data to
|
||||||
clients](../subsystems/events-system.md) must live here.
|
clients](../subsystems/events-system.md) must live here.
|
||||||
|
|
||||||
- `zerver/views/*.py` Most [Django views](https://docs.djangoproject.com/en/3.2/topics/http/views/).
|
- `zerver/views/*.py` Most [Django views](https://docs.djangoproject.com/en/5.0/topics/http/views/).
|
||||||
|
|
||||||
- `zerver/webhooks/` Webhook views and tests for [Zulip's incoming webhook integrations](https://zulip.com/api/incoming-webhooks-overview).
|
- `zerver/webhooks/` Webhook views and tests for [Zulip's incoming webhook integrations](https://zulip.com/api/incoming-webhooks-overview).
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ paths will be familiar to Django developers.
|
||||||
|
|
||||||
- `zerver/lib/markdown/` [Backend Markdown processor](../subsystems/markdown.md).
|
- `zerver/lib/markdown/` [Backend Markdown processor](../subsystems/markdown.md).
|
||||||
|
|
||||||
- `zproject/backends.py` [Authentication backends](https://docs.djangoproject.com/en/3.2/topics/auth/customizing/).
|
- `zproject/backends.py` [Authentication backends](https://docs.djangoproject.com/en/5.0/topics/auth/customizing/).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -1169,7 +1169,7 @@ reject authentication requests e.g. based on IP address of the
|
||||||
request, this is where it should happen.
|
request, this is where it should happen.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
[django-authenticate-details]: https://docs.djangoproject.com/en/dev/topics/auth/customizing/#writing-an-authentication-backend
|
[django-authenticate-details]: https://docs.djangoproject.com/en/5.0/topics/auth/customizing/#writing-an-authentication-backend
|
||||||
|
|
||||||
## Adding more authentication backends
|
## Adding more authentication backends
|
||||||
|
|
||||||
|
|
|
@ -207,7 +207,7 @@ aren't receiving emails from Zulip:
|
||||||
will try to use the TLS protocol on port 465, which won't work.
|
will try to use the TLS protocol on port 465, which won't work.
|
||||||
|
|
||||||
- Zulip's email sending configuration is based on the standard Django
|
- Zulip's email sending configuration is based on the standard Django
|
||||||
[SMTP backend](https://docs.djangoproject.com/en/3.2/topics/email/#smtp-backend)
|
[SMTP backend](https://docs.djangoproject.com/en/5.0/topics/email/#smtp-backend)
|
||||||
configuration. So if you're having trouble getting your email
|
configuration. So if you're having trouble getting your email
|
||||||
provider working, you may want to search for documentation related
|
provider working, you may want to search for documentation related
|
||||||
to using your email provider with Django.
|
to using your email provider with Django.
|
||||||
|
|
|
@ -185,4 +185,4 @@ upgrade.
|
||||||
[zulip-api]: https://zulip.com/api/rest
|
[zulip-api]: https://zulip.com/api/rest
|
||||||
[webhook-integrations]: https://zulip.com/api/incoming-webhooks-overview
|
[webhook-integrations]: https://zulip.com/api/incoming-webhooks-overview
|
||||||
[management-commands-dev]: ../subsystems/management-commands.md
|
[management-commands-dev]: ../subsystems/management-commands.md
|
||||||
[django-management]: https://docs.djangoproject.com/en/3.2/ref/django-admin/#django-admin-and-manage-py
|
[django-management]: https://docs.djangoproject.com/en/5.0/ref/django-admin/#django-admin-and-manage-py
|
||||||
|
|
|
@ -263,4 +263,4 @@ cached by clients is changed. Clients are responsible for handling
|
||||||
the events, updating their state, and rerendering any UI components
|
the events, updating their state, and rerendering any UI components
|
||||||
that might display the modified state.
|
that might display the modified state.
|
||||||
|
|
||||||
[post-save-signals]: https://docs.djangoproject.com/en/3.2/ref/signals/#post-save
|
[post-save-signals]: https://docs.djangoproject.com/en/5.0/ref/signals/#post-save
|
||||||
|
|
|
@ -29,7 +29,7 @@ The `webhook_view` auth decorator, used for most incoming
|
||||||
webhooks, accepts the name of the integration as an argument and uses
|
webhooks, accepts the name of the integration as an argument and uses
|
||||||
it to generate a client name that it adds to the `request_notes`
|
it to generate a client name that it adds to the `request_notes`
|
||||||
object that can be accessed with the `request` (Django
|
object that can be accessed with the `request` (Django
|
||||||
[HttpRequest](https://docs.djangoproject.com/en/3.2/ref/request-response/#django.http.HttpRequest))
|
[HttpRequest](https://docs.djangoproject.com/en/5.0/ref/request-response/#django.http.HttpRequest))
|
||||||
object via `zerver.lib.request.get_request_notes(request)`.
|
object via `zerver.lib.request.get_request_notes(request)`.
|
||||||
|
|
||||||
In most integrations, `request_notes.client` is then passed to
|
In most integrations, `request_notes.client` is then passed to
|
||||||
|
|
|
@ -267,5 +267,5 @@ a new view:
|
||||||
(intended to catch issues where we generate a lot of deferred work).
|
(intended to catch issues where we generate a lot of deferred work).
|
||||||
|
|
||||||
[python-logging]: https://docs.python.org/3/library/logging.html
|
[python-logging]: https://docs.python.org/3/library/logging.html
|
||||||
[django-logging]: https://docs.djangoproject.com/en/3.2/topics/logging/
|
[django-logging]: https://docs.djangoproject.com/en/5.0/topics/logging/
|
||||||
[sentry]: https://sentry.io
|
[sentry]: https://sentry.io
|
||||||
|
|
|
@ -62,4 +62,4 @@ to do anything special like restart the server when iteratively
|
||||||
testing one, even if testing in a Zulip production environment where
|
testing one, even if testing in a Zulip production environment where
|
||||||
the server doesn't normally restart whenever a file is edited.
|
the server doesn't normally restart whenever a file is edited.
|
||||||
|
|
||||||
[django-docs]: https://docs.djangoproject.com/en/3.2/howto/custom-management-commands/
|
[django-docs]: https://docs.djangoproject.com/en/5.0/howto/custom-management-commands/
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Schema migrations
|
# Schema migrations
|
||||||
|
|
||||||
Zulip uses the [standard Django system for doing schema
|
Zulip uses the [standard Django system for doing schema
|
||||||
migrations](https://docs.djangoproject.com/en/3.2/topics/migrations/).
|
migrations](https://docs.djangoproject.com/en/5.0/topics/migrations/).
|
||||||
There is some example usage in the [new feature
|
There is some example usage in the [new feature
|
||||||
tutorial](../tutorials/new-feature-tutorial.md).
|
tutorial](../tutorials/new-feature-tutorial.md).
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ an incorrect migration messes up a database in a way that's impossible
|
||||||
to undo without going to backups.
|
to undo without going to backups.
|
||||||
|
|
||||||
[django-migration-test-blog-post]: https://www.caktusgroup.com/blog/2016/02/02/writing-unit-tests-django-migrations/
|
[django-migration-test-blog-post]: https://www.caktusgroup.com/blog/2016/02/02/writing-unit-tests-django-migrations/
|
||||||
[migrations-non-atomic]: https://docs.djangoproject.com/en/3.2/howto/writing-migrations/#non-atomic-migrations
|
[migrations-non-atomic]: https://docs.djangoproject.com/en/5.0/howto/writing-migrations/#non-atomic-migrations
|
||||||
|
|
||||||
## Schema and initial data changes
|
## Schema and initial data changes
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ convenient for:
|
||||||
## Server settings
|
## Server settings
|
||||||
|
|
||||||
Zulip uses the [Django settings
|
Zulip uses the [Django settings
|
||||||
system](https://docs.djangoproject.com/en/3.2/topics/settings/), which
|
system](https://docs.djangoproject.com/en/5.0/topics/settings/), which
|
||||||
means that the settings files are Python programs that set a lot of
|
means that the settings files are Python programs that set a lot of
|
||||||
variables with all-capital names like `EMAIL_GATEWAY_PATTERN`. You can
|
variables with all-capital names like `EMAIL_GATEWAY_PATTERN`. You can
|
||||||
access these anywhere in the Zulip Django code using e.g.:
|
access these anywhere in the Zulip Django code using e.g.:
|
||||||
|
@ -159,7 +159,7 @@ accessed in initialization of Django (or Zulip) internals
|
||||||
(e.g. `DATABASES`). See the [Django docs on overriding settings in
|
(e.g. `DATABASES`). See the [Django docs on overriding settings in
|
||||||
tests][django-test-settings] for more details.
|
tests][django-test-settings] for more details.
|
||||||
|
|
||||||
[django-test-settings]: https://docs.djangoproject.com/en/3.2/topics/testing/tools/#overriding-settings
|
[django-test-settings]: https://docs.djangoproject.com/en/5.0/topics/testing/tools/#overriding-settings
|
||||||
|
|
||||||
## Realm settings
|
## Realm settings
|
||||||
|
|
||||||
|
|
|
@ -209,7 +209,7 @@ option of Puppet.
|
||||||
|
|
||||||
Zulip uses two HTML templating systems:
|
Zulip uses two HTML templating systems:
|
||||||
|
|
||||||
- [Django templates](https://docs.djangoproject.com/en/3.2/topics/templates/)
|
- [Django templates](https://docs.djangoproject.com/en/5.0/topics/templates/)
|
||||||
- [handlebars](https://handlebarsjs.com/)
|
- [handlebars](https://handlebarsjs.com/)
|
||||||
|
|
||||||
Zulip has an internal tool that validates both types of templates for
|
Zulip has an internal tool that validates both types of templates for
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
Zulip uses the Django framework for its Python backend. We
|
Zulip uses the Django framework for its Python backend. We
|
||||||
use the testing framework from
|
use the testing framework from
|
||||||
[django.test](https://docs.djangoproject.com/en/3.2/topics/testing/)
|
[django.test](https://docs.djangoproject.com/en/5.0/topics/testing/)
|
||||||
to test our code. We have thousands of automated tests that verify that
|
to test our code. We have thousands of automated tests that verify that
|
||||||
our backend works as expected.
|
our backend works as expected.
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ application.
|
||||||
## Django routes the request to a view in urls.py files
|
## Django routes the request to a view in urls.py files
|
||||||
|
|
||||||
There are various
|
There are various
|
||||||
[urls.py](https://docs.djangoproject.com/en/3.2/topics/http/urls/)
|
[urls.py](https://docs.djangoproject.com/en/5.0/topics/http/urls/)
|
||||||
files throughout the server codebase, which are covered in more detail
|
files throughout the server codebase, which are covered in more detail
|
||||||
in
|
in
|
||||||
[the directory structure doc](../overview/directory-structure.md).
|
[the directory structure doc](../overview/directory-structure.md).
|
||||||
|
@ -171,7 +171,7 @@ PUT=create_user_backend
|
||||||
```
|
```
|
||||||
|
|
||||||
are supplied as arguments to `rest_path`, along with the
|
are supplied as arguments to `rest_path`, along with the
|
||||||
[HTTPRequest](https://docs.djangoproject.com/en/3.2/ref/request-response/).
|
[HTTPRequest](https://docs.djangoproject.com/en/5.0/ref/request-response/).
|
||||||
The request has the HTTP verb `PUT`, which `rest_dispatch` can use to
|
The request has the HTTP verb `PUT`, which `rest_dispatch` can use to
|
||||||
find the correct view to show:
|
find the correct view to show:
|
||||||
`zerver.views.users.create_user_backend`.
|
`zerver.views.users.create_user_backend`.
|
||||||
|
@ -190,14 +190,14 @@ Our API works on JSON requests and responses. Every API endpoint should
|
||||||
```
|
```
|
||||||
|
|
||||||
in a [Django HttpResponse
|
in a [Django HttpResponse
|
||||||
object](https://docs.djangoproject.com/en/3.2/ref/request-response/)
|
object](https://docs.djangoproject.com/en/5.0/ref/request-response/)
|
||||||
with a `Content-Type` of 'application/json'.
|
with a `Content-Type` of 'application/json'.
|
||||||
|
|
||||||
To pass back data from the server to the calling client, in the event of
|
To pass back data from the server to the calling client, in the event of
|
||||||
a successfully handled request, we use `json_success(request, data)`.
|
a successfully handled request, we use `json_success(request, data)`.
|
||||||
|
|
||||||
The `request` argument is a [Django HttpRequest
|
The `request` argument is a [Django HttpRequest
|
||||||
object](https://docs.djangoproject.com/en/3.2/ref/request-response/).
|
object](https://docs.djangoproject.com/en/5.0/ref/request-response/).
|
||||||
The `data` argument is a Python object which can be converted to a JSON
|
The `data` argument is a Python object which can be converted to a JSON
|
||||||
string and has a default value of an empty Python dictionary.
|
string and has a default value of an empty Python dictionary.
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ tests, use Django's tooling.
|
||||||
Zulip's [directory structure](../overview/directory-structure.md)
|
Zulip's [directory structure](../overview/directory-structure.md)
|
||||||
will also be helpful to review when creating a new feature. Many
|
will also be helpful to review when creating a new feature. Many
|
||||||
aspects of the structure will be familiar to Django developers. Visit
|
aspects of the structure will be familiar to Django developers. Visit
|
||||||
[Django's documentation](https://docs.djangoproject.com/en/3.2/#index-first-steps)
|
[Django's documentation](https://docs.djangoproject.com/en/5.0/#index-first-steps)
|
||||||
for more information about how Django projects are typically
|
for more information about how Django projects are typically
|
||||||
organized. And finally, the
|
organized. And finally, the
|
||||||
[message sending](../subsystems/sending-messages.md) documentation on
|
[message sending](../subsystems/sending-messages.md) documentation on
|
||||||
|
@ -240,7 +240,7 @@ Create the migration file using the Django `makemigrations` command:
|
||||||
(NNNN is a number that is equal to the number of migrations.)
|
(NNNN is a number that is equal to the number of migrations.)
|
||||||
|
|
||||||
If you run into problems, the
|
If you run into problems, the
|
||||||
[Django migration documentation](https://docs.djangoproject.com/en/3.2/topics/migrations/)
|
[Django migration documentation](https://docs.djangoproject.com/en/5.0/topics/migrations/)
|
||||||
is helpful.
|
is helpful.
|
||||||
|
|
||||||
### Test your migration changes
|
### Test your migration changes
|
||||||
|
|
|
@ -35,7 +35,7 @@ or JSON (data for Zulip clients on all platforms, custom bots, and
|
||||||
integrations).
|
integrations).
|
||||||
|
|
||||||
The format of the URL patterns in Django is [documented
|
The format of the URL patterns in Django is [documented
|
||||||
here](https://docs.djangoproject.com/en/3.2/topics/http/urls/), and
|
here](https://docs.djangoproject.com/en/5.0/topics/http/urls/), and
|
||||||
the Zulip specific details for these are discussed in detail in the
|
the Zulip specific details for these are discussed in detail in the
|
||||||
[life of a request doc](life-of-a-request.md#options).
|
[life of a request doc](life-of-a-request.md#options).
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ specific to Zulip.
|
||||||
def home(request: HttpRequest) -> HttpResponse:
|
def home(request: HttpRequest) -> HttpResponse:
|
||||||
```
|
```
|
||||||
|
|
||||||
[login-required-link]: https://docs.djangoproject.com/en/3.2/topics/auth/default/#django.contrib.auth.decorators.login_required
|
[login-required-link]: https://docs.djangoproject.com/en/5.0/topics/auth/default/#django.contrib.auth.decorators.login_required
|
||||||
|
|
||||||
### Writing a template
|
### Writing a template
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ class ZulipUserFilterQuery(UserFilterQuery):
|
||||||
Return extra SQL and params to be attached to end of current Query's
|
Return extra SQL and params to be attached to end of current Query's
|
||||||
SQL and params. The return format matches the format that should be used
|
SQL and params. The return format matches the format that should be used
|
||||||
for providing raw SQL with params to Django's .raw():
|
for providing raw SQL with params to Django's .raw():
|
||||||
https://docs.djangoproject.com/en/3.2/topics/db/sql/#passing-parameters-into-raw
|
https://docs.djangoproject.com/en/5.0/topics/db/sql/#passing-parameters-into-raw
|
||||||
|
|
||||||
Here we ensure that results are limited to the subdomain of the request
|
Here we ensure that results are limited to the subdomain of the request
|
||||||
and also exclude bots, as we currently don't want them to be managed by SCIM2.
|
and also exclude bots, as we currently don't want them to be managed by SCIM2.
|
||||||
|
|
|
@ -149,7 +149,7 @@ def check_send_webhook_message(
|
||||||
def standardize_headers(input_headers: Union[None, Dict[str, Any]]) -> Dict[str, str]:
|
def standardize_headers(input_headers: Union[None, Dict[str, Any]]) -> Dict[str, str]:
|
||||||
"""This method can be used to standardize a dictionary of headers with
|
"""This method can be used to standardize a dictionary of headers with
|
||||||
the standard format that Django expects. For reference, refer to:
|
the standard format that Django expects. For reference, refer to:
|
||||||
https://docs.djangoproject.com/en/3.2/ref/request-response/#django.http.HttpRequest.headers
|
https://docs.djangoproject.com/en/5.0/ref/request-response/#django.http.HttpRequest.headers
|
||||||
|
|
||||||
NOTE: Historically, Django's headers were not case-insensitive. We're still
|
NOTE: Historically, Django's headers were not case-insensitive. We're still
|
||||||
capitalizing our headers to make it easier to compare/search later if required.
|
capitalizing our headers to make it easier to compare/search later if required.
|
||||||
|
|
|
@ -57,7 +57,7 @@ def do_bulk_backfill_extra_data(
|
||||||
# OLD_VALUE and NEW_VALUE is mapped from the value of the extra_data
|
# OLD_VALUE and NEW_VALUE is mapped from the value of the extra_data
|
||||||
# field (which is just a old full name string) and None, respectively.
|
# field (which is just a old full name string) and None, respectively.
|
||||||
# Documentation for JSONObject:
|
# Documentation for JSONObject:
|
||||||
# https://docs.djangoproject.com/en/4.2/ref/models/database-functions/#jsonobject
|
# https://docs.djangoproject.com/en/5.0/ref/models/database-functions/#jsonobject
|
||||||
).update(extra_data_json=JSONObject(**{OLD_VALUE: "extra_data", NEW_VALUE: None}))
|
).update(extra_data_json=JSONObject(**{OLD_VALUE: "extra_data", NEW_VALUE: None}))
|
||||||
|
|
||||||
inconsistent_extra_data_json: List[Tuple[int, str, object, object]] = []
|
inconsistent_extra_data_json: List[Tuple[int, str, object, object]] = []
|
||||||
|
|
|
@ -545,7 +545,7 @@ class UserProfile(AbstractBaseUser, PermissionsMixin, UserBaseSettings):
|
||||||
#
|
#
|
||||||
# In Django, the convention is to use an empty string instead of NULL/None
|
# In Django, the convention is to use an empty string instead of NULL/None
|
||||||
# for text-based fields. For more information, see
|
# for text-based fields. For more information, see
|
||||||
# https://docs.djangoproject.com/en/3.2/ref/models/fields/#django.db.models.Field.null.
|
# https://docs.djangoproject.com/en/5.0/ref/models/fields/#django.db.models.Field.null.
|
||||||
timezone = models.CharField(max_length=40, default="")
|
timezone = models.CharField(max_length=40, default="")
|
||||||
|
|
||||||
AVATAR_FROM_GRAVATAR = "G"
|
AVATAR_FROM_GRAVATAR = "G"
|
||||||
|
|
|
@ -19,7 +19,7 @@ from zerver.models.users import get_user_by_delivery_email
|
||||||
|
|
||||||
# Most Zulip tests use ZulipTestCase, which inherits from django.test.TestCase.
|
# Most Zulip tests use ZulipTestCase, which inherits from django.test.TestCase.
|
||||||
# We recommend learning Django basics first, so search the web for "django testing".
|
# We recommend learning Django basics first, so search the web for "django testing".
|
||||||
# A common first result is https://docs.djangoproject.com/en/3.2/topics/testing/
|
# A common first result is https://docs.djangoproject.com/en/5.0/topics/testing/
|
||||||
class TestBasics(ZulipTestCase):
|
class TestBasics(ZulipTestCase):
|
||||||
def test_basics(self) -> None:
|
def test_basics(self) -> None:
|
||||||
# Django's tests are based on Python's unittest module, so you
|
# Django's tests are based on Python's unittest module, so you
|
||||||
|
|
|
@ -353,7 +353,7 @@ def json_change_settings(
|
||||||
|
|
||||||
do_change_password(user_profile, new_password)
|
do_change_password(user_profile, new_password)
|
||||||
# Password changes invalidates sessions, see
|
# Password changes invalidates sessions, see
|
||||||
# https://docs.djangoproject.com/en/3.2/topics/auth/default/#session-invalidation-on-password-change
|
# https://docs.djangoproject.com/en/5.0/topics/auth/default/#session-invalidation-on-password-change
|
||||||
# for details. To avoid this logging the user out of their own
|
# for details. To avoid this logging the user out of their own
|
||||||
# session (which would provide a confusing UX at best), we
|
# session (which would provide a confusing UX at best), we
|
||||||
# update the session hash here.
|
# update the session hash here.
|
||||||
|
|
|
@ -222,7 +222,7 @@ SILENCED_SYSTEM_CHECKS = [
|
||||||
# `unique=True`. For us this is `email`, and it's unique only per-realm.
|
# `unique=True`. For us this is `email`, and it's unique only per-realm.
|
||||||
# Per Django docs, this is perfectly fine so long as our authentication
|
# Per Django docs, this is perfectly fine so long as our authentication
|
||||||
# backends support the username not being unique; and they do.
|
# backends support the username not being unique; and they do.
|
||||||
# See: https://docs.djangoproject.com/en/3.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.USERNAME_FIELD
|
# See: https://docs.djangoproject.com/en/5.0/topics/auth/customizing/#django.contrib.auth.models.CustomUser.USERNAME_FIELD
|
||||||
"auth.W004",
|
"auth.W004",
|
||||||
# models.E034 limits index names to 30 characters for Oracle compatibility.
|
# models.E034 limits index names to 30 characters for Oracle compatibility.
|
||||||
# We aren't using Oracle.
|
# We aren't using Oracle.
|
||||||
|
|
|
@ -484,7 +484,7 @@ TERMS_OF_SERVICE_MESSAGE: Optional[str] = None
|
||||||
# Configuration for JWT auth (sign in and API key fetch)
|
# Configuration for JWT auth (sign in and API key fetch)
|
||||||
JWT_AUTH_KEYS: Dict[str, JwtAuthKey] = {}
|
JWT_AUTH_KEYS: Dict[str, JwtAuthKey] = {}
|
||||||
|
|
||||||
# https://docs.djangoproject.com/en/3.2/ref/settings/#std:setting-SERVER_EMAIL
|
# https://docs.djangoproject.com/en/5.0/ref/settings/#std:setting-SERVER_EMAIL
|
||||||
# Django setting for what from address to use in error emails.
|
# Django setting for what from address to use in error emails.
|
||||||
SERVER_EMAIL = ZULIP_ADMINISTRATOR
|
SERVER_EMAIL = ZULIP_ADMINISTRATOR
|
||||||
# Django setting for who receives error emails.
|
# Django setting for who receives error emails.
|
||||||
|
|
|
@ -44,7 +44,7 @@ EXTERNAL_HOST = "zulip.example.com"
|
||||||
## representing the host/domain names that your users can enter in
|
## representing the host/domain names that your users can enter in
|
||||||
## their browsers to access Zulip. This is a security measure; for
|
## their browsers to access Zulip. This is a security measure; for
|
||||||
## details, see the Django documentation:
|
## details, see the Django documentation:
|
||||||
## https://docs.djangoproject.com/en/3.2/ref/settings/#allowed-hosts
|
## https://docs.djangoproject.com/en/5.0/ref/settings/#allowed-hosts
|
||||||
##
|
##
|
||||||
## Zulip automatically adds to this list "localhost", "127.0.0.1", and
|
## Zulip automatically adds to this list "localhost", "127.0.0.1", and
|
||||||
## patterns representing EXTERNAL_HOST and subdomains of it. If you are
|
## patterns representing EXTERNAL_HOST and subdomains of it. If you are
|
||||||
|
|
|
@ -100,7 +100,7 @@ def setup_sentry(dsn: Optional[str], environment: str) -> None:
|
||||||
)
|
)
|
||||||
|
|
||||||
# Ignore all of the loggers from django.security that are for user
|
# Ignore all of the loggers from django.security that are for user
|
||||||
# errors; see https://docs.djangoproject.com/en/3.2/ref/exceptions/#suspiciousoperation
|
# errors; see https://docs.djangoproject.com/en/5.0/ref/exceptions/#suspiciousoperation
|
||||||
ignore_logger("django.security.SuspiciousOperation")
|
ignore_logger("django.security.SuspiciousOperation")
|
||||||
ignore_logger("django.security.DisallowedHost")
|
ignore_logger("django.security.DisallowedHost")
|
||||||
ignore_logger("django.security.DisallowedModelAdminLookup")
|
ignore_logger("django.security.DisallowedModelAdminLookup")
|
||||||
|
|
Loading…
Reference in New Issue