docs: Add missing space to compound verbs “log in”, “set up”, etc.

Noun: backup, checkout, cleanup, login, logout, setup, shutdown, signup,
timeout.

Verb: back up, check out, clean up, log in, log out, set up, shut
down, sign up, time out.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2021-04-25 14:05:38 -07:00 committed by Tim Abbott
parent e3f2ffa681
commit 6060d0d364
38 changed files with 51 additions and 49 deletions

View File

@ -75,7 +75,7 @@ working on a proposal until 2 weeks before the deadline.
## Getting started ## Getting started
We have an easy-to-setup development environment, and a library of We have an easy-to-set-up development environment, and a library of
tasks that are great for first-time contributors. Use tasks that are great for first-time contributors. Use
[our first-time Zulip developer guide](../overview/contributing.html#your-first-codebase-contribution) [our first-time Zulip developer guide](../overview/contributing.html#your-first-codebase-contribution)
to get your Zulip development environment set up and to find your first issue. If you have any to get your Zulip development environment set up and to find your first issue. If you have any

View File

@ -210,14 +210,14 @@ environment directory without worrying about tests.
Zulip uses [django-two-factor-auth][0] as a beta 2FA integration. Zulip uses [django-two-factor-auth][0] as a beta 2FA integration.
To enable 2FA, set `TWO_FACTOR_AUTHENTICATION_ENABLED` in settings to To enable 2FA, set `TWO_FACTOR_AUTHENTICATION_ENABLED` in settings to
`True`, then log into Zulip and add otp device from settings `True`, then log in to Zulip and add an OTP device from the settings
page. Once the device is added, password based authentication will ask page. Once the device is added, password based authentication will ask
for one-time-password. In the development environment., this for a one-time-password. In the development environment, this
one-time-password will be printed to the console when you try to one-time-password will be printed to the console when you try to
login. Just copy-paste it into the form field to continue. log in. Just copy-paste it into the form field to continue.
Direct development logins don't prompt for 2FA one-time-passwords, so Direct development logins don't prompt for 2FA one-time-passwords, so
to test 2FA in development, make sure that you login using a to test 2FA in development, make sure that you log in using a
password. You can get the passwords for the default test users using password. You can get the passwords for the default test users using
`./manage.py print_initial_password`. `./manage.py print_initial_password`.

View File

@ -59,7 +59,7 @@ ignoring the parts about `vagrant` (since you're not using it).
## Installing directly on Windows 10 with WSL 2 ## Installing directly on Windows 10 with WSL 2
Zulip's development environment is most easily setup on Windows using Zulip's development environment is most easily set up on Windows using
the [WSL 2](https://docs.microsoft.com/en-us/windows/wsl/wsl2-about) the [WSL 2](https://docs.microsoft.com/en-us/windows/wsl/wsl2-about)
installation method described here. installation method described here.
@ -122,7 +122,7 @@ installation method described here.
```eval_rst ```eval_rst
.. note:: .. note::
If you shutdown WSL, after starting it again, you will have to manually start If you shut down WSL, after starting it again, you will have to manually start
the services using ``./tools/wsl/start_services``. the services using ``./tools/wsl/start_services``.
``` ```

View File

@ -1097,7 +1097,7 @@ Zulip installations; it has minimal changes for existing servers.
- Upgraded to modern versions of most of our stale dependencies. - Upgraded to modern versions of most of our stale dependencies.
- Updated our CSS toolchain to support hot module reloading. - Updated our CSS toolchain to support hot module reloading.
- Updated numerous pages within the /help/ site. - Updated numerous pages within the /help/ site.
- We no longer require re-authing to signup after trying to log in with - We no longer require re-authing to sign up after trying to log in with
an OAuth authentication backend (GitHub or Google). an OAuth authentication backend (GitHub or Google).
- Made major improvements to the Help Center. - Made major improvements to the Help Center.
- Improved system for configuring the S3 file uploads backend. - Improved system for configuring the S3 file uploads backend.

View File

@ -137,7 +137,7 @@ of the following configurations:
the `zproject.backends.ZulipLDAPAuthBackend` auth backend, in the `zproject.backends.ZulipLDAPAuthBackend` auth backend, in
`AUTHENTICATION_BACKENDS` in `/etc/zulip/settings.py`. After doing so `AUTHENTICATION_BACKENDS` in `/etc/zulip/settings.py`. After doing so
(and as always [restarting the Zulip server](settings.md) to ensure (and as always [restarting the Zulip server](settings.md) to ensure
your settings changes take effect), you should be able to log into your settings changes take effect), you should be able to log in to
Zulip by entering your email address and LDAP password on the Zulip Zulip by entering your email address and LDAP password on the Zulip
login form. login form.

View File

@ -11,7 +11,7 @@ email addresses and send notifications.
1. Fill out the section of `/etc/zulip/settings.py` headed "Outgoing 1. Fill out the section of `/etc/zulip/settings.py` headed "Outgoing
email (SMTP) settings". This includes the hostname and typically email (SMTP) settings". This includes the hostname and typically
the port to reach your SMTP provider, and the username to log into the port to reach your SMTP provider, and the username to log in to
it. You'll also want to fill out the noreply email section. it. You'll also want to fill out the noreply email section.
1. Put the password for the SMTP user account in 1. Put the password for the SMTP user account in

View File

@ -12,7 +12,7 @@ these first, before beginning the user-facing downtime. However, if
you'd like to watch the downtime phase of the upgrade closely, you you'd like to watch the downtime phase of the upgrade closely, you
can run them manually before starting the upgrade: can run them manually before starting the upgrade:
1. Log into your Zulip server as the `zulip` user (or as `root` and 1. Log in to your Zulip server as the `zulip` user (or as `root` and
then run `su zulip` to drop privileges), and `cd then run `su zulip` to drop privileges), and `cd
/home/zulip/deployments/current` /home/zulip/deployments/current`
2. Run `./manage.py dbshell`. This will open a shell connected to the 2. Run `./manage.py dbshell`. This will open a shell connected to the

View File

@ -70,7 +70,7 @@ The backup tool provides the following options:
console output will show the path to the output tarball. console output will show the path to the output tarball.
- `--skip-db`: Skip backup of the database. Useful if you're using a - `--skip-db`: Skip backup of the database. Useful if you're using a
remote PostgreSQL host with its own backup system and just need to remote PostgreSQL host with its own backup system and just need to
backup non-database state. back up non-database state.
- `--skip-uploads`: If `LOCAL_UPLOADS_DIR` is set, user-uploaded files - `--skip-uploads`: If `LOCAL_UPLOADS_DIR` is set, user-uploaded files
in that directory will be ignored. in that directory will be ignored.
@ -126,7 +126,7 @@ server, including the database, settings, secrets from
`/etc/zulip`, and user-uploaded files stored on the Zulip server. `/etc/zulip`, and user-uploaded files stored on the Zulip server.
The following data is not included in these backup archives, The following data is not included in these backup archives,
and you may want to backup separately: and you may want to back up separately:
* The server access/error logs from `/var/log/zulip`. The Zulip * The server access/error logs from `/var/log/zulip`. The Zulip
server only appends to logs, and they can be very large compared to server only appends to logs, and they can be very large compared to

View File

@ -55,7 +55,7 @@ install process:
puppet-agent[29873]: Could not request certificate: Failed to open TCP connection to puppet:8140 puppet-agent[29873]: Could not request certificate: Failed to open TCP connection to puppet:8140
``` ```
So you'll need to shutdown any Puppet servers. So you'll need to shut down any Puppet servers.
```shell ```shell
$ sudo service puppet-agent stop $ sudo service puppet-agent stop

View File

@ -69,7 +69,7 @@ actual email clients. This is important because web email clients
have limited CSS functionality, autolinkify things, and otherwise have limited CSS functionality, autolinkify things, and otherwise
mutate the HTML email one can see previewed on `/emails`. mutate the HTML email one can see previewed on `/emails`.
To do this sort of testing, you need to setup an outgoing SMTP To do this sort of testing, you need to set up an outgoing SMTP
provider. Our production advice for provider. Our production advice for
[Gmail](../production/email.html#using-gmail-for-outgoing-email) and [Gmail](../production/email.html#using-gmail-for-outgoing-email) and
[transactional email [transactional email

View File

@ -149,7 +149,7 @@ structure of the system, when thinking about changes to it:
following a topic (to get notifications for messages only within following a topic (to get notifications for messages only within
that topic in a stream). There are a lot of different workflows that topic in a stream). There are a lot of different workflows
possible with Zulip's threading, and it's important to make it easy possible with Zulip's threading, and it's important to make it easy
for users to setup Zulip's notification to fit as many of those for users to set up Zulip's notification to fit as many of those
workflows as possible. workflows as possible.
* **Message editing**. Zulip supports editing messages, and that * **Message editing**. Zulip supports editing messages, and that
interacts with notifications in ways that require careful handling: interacts with notifications in ways that require careful handling:

View File

@ -5,7 +5,7 @@ used for a variety of purposes:
* Asynchronously doing expensive operations like sending email * Asynchronously doing expensive operations like sending email
notifications which can take seconds per email and thus would notifications which can take seconds per email and thus would
otherwise timeout when 100s are triggered at once (E.g. inviting a otherwise time out when 100s are triggered at once (E.g. inviting a
lot of new users to a realm). lot of new users to a realm).
* Asynchronously doing non-time-critical somewhat expensive operations * Asynchronously doing non-time-critical somewhat expensive operations

View File

@ -57,6 +57,6 @@ if [ -z "$QUIET" ]; then
echo echo
echo " /home/zulip/deployments/current/manage.py generate_realm_creation_link" echo " /home/zulip/deployments/current/manage.py generate_realm_creation_link"
echo echo
echo "This generates a secure, single-use link that you you can use to setup " echo "This generates a secure, single-use link that you you can use to set up "
echo "a Zulip organization from the convenience of your web browser." echo "a Zulip organization from the convenience of your web browser."
fi fi

View File

@ -99,7 +99,7 @@ function report_error(
last_report_attempt.set(key, Date.now()); last_report_attempt.set(key, Date.now());
// TODO: If an exception gets thrown before we setup ajax calls // TODO: If an exception gets thrown before we set up ajax calls
// to include the CSRF token, our ajax call will fail. The // to include the CSRF token, our ajax call will fail. The
// elegant thing to do in that case is to either wait until that // elegant thing to do in that case is to either wait until that
// setup is done or do it ourselves and then retry. // setup is done or do it ourselves and then retry.

View File

@ -592,7 +592,7 @@ export function end_message_row_edit(row) {
const listeners = currently_editing_messages.get(message.id).listeners; const listeners = currently_editing_messages.get(message.id).listeners;
const edit_box = document.querySelector(`#message_edit_content_${CSS.escape(message.id)}`); const edit_box = document.querySelector(`#message_edit_content_${CSS.escape(message.id)}`);
if (listeners !== undefined) { if (listeners !== undefined) {
// Event listeners to cleanup are only set in some edit types // Event listeners to clean up are only set in some edit types
edit_box.removeEventListener("mousedown", listeners[0]); edit_box.removeEventListener("mousedown", listeners[0]);
document.body.removeEventListener("mouseup", listeners[1]); document.body.removeEventListener("mouseup", listeners[1]);
} }

View File

@ -222,7 +222,7 @@ function do_reload_app(send_after_reload, save_pointer, save_narrow, save_compos
try { try {
server_events.cleanup_event_queue(); server_events.cleanup_event_queue();
} catch (error) { } catch (error) {
blueslip.error("Failed to cleanup before reloading", undefined, error.stack); blueslip.error("Failed to clean up before reloading", undefined, error.stack);
} }
window.location.reload(true); window.location.reload(true);

View File

@ -308,7 +308,7 @@ export function initialize() {
} }
export function cleanup_event_queue() { export function cleanup_event_queue() {
// Submit a request to the server to cleanup our event queue // Submit a request to the server to clean up our event queue
if (page_params.event_queue_expired === true || page_params.no_event_queue === true) { if (page_params.event_queue_expired === true || page_params.no_event_queue === true) {
return; return;
} }

View File

@ -39,7 +39,7 @@
{{#if page_params.two_fa_enabled }} {{#if page_params.two_fa_enabled }}
<p for="two_factor_auth" class="inline-block title"> <p for="two_factor_auth" class="inline-block title">
{{t "Two factor authentication" }}: {{#if page_params.two_fa_enabled_user }}{{t "Enabled" }}{{else}}{{t "Disabled" }}{{/if}} {{t "Two factor authentication" }}: {{#if page_params.two_fa_enabled_user }}{{t "Enabled" }}{{else}}{{t "Disabled" }}{{/if}}
<a target="_blank" rel="noopener noreferrer" id="two_factor_auth" href="/account/two_factor/" title="{{t 'Setup two factor authentication' }}">[{{t "Setup" }}]</a> <a target="_blank" rel="noopener noreferrer" id="two_factor_auth" href="/account/two_factor/" title="{{t 'Set up two factor authentication' }}">[{{t "Setup" }}]</a>
</p> </p>
{{/if}} {{/if}}

View File

@ -32,7 +32,7 @@
{% endif %} {% endif %}
{% if login_link_disabled %} {% if login_link_disabled %}
{% else %} {% else %}
<li><a href="{{ login_url }}">{{ _("Login") }}</a></li> <li><a href="{{ login_url }}">{{ _("Log in") }}</a></li>
{% endif %} {% endif %}
{% if register_link_disabled %} {% if register_link_disabled %}
{% elif only_sso %} {% elif only_sso %}

View File

@ -3,7 +3,7 @@
Zulip supports using SAML authentication for single sign-on, both when Zulip supports using SAML authentication for single sign-on, both when
self-hosting or on the Zulip Cloud Plus plan. self-hosting or on the Zulip Cloud Plus plan.
This page documents details on how to setup SAML authentication with This page documents details on how to set up SAML authentication with
Zulip with various common SAML Identity Providers. Zulip with various common SAML Identity Providers.
## Configure SAML with Okta ## Configure SAML with Okta

View File

@ -26,7 +26,7 @@ The Zulip plugin is now registered with Redmine!
1. On your {{ settings_html|safe }}, create a new Redmine bot. 1. On your {{ settings_html|safe }}, create a new Redmine bot.
2. Log into your Redmine instance, click on **Administration** in the top-left 2. Log in to your Redmine instance, click on **Administration** in the top-left
corner, then click on **Plugins**. corner, then click on **Plugins**.
3. Find the **Redmine Zulip** plugin, and click **Configure**. Fill 3. Find the **Redmine Zulip** plugin, and click **Configure**. Fill

View File

@ -43,7 +43,7 @@
{% if login_link_disabled %} {% if login_link_disabled %}
{% else %} {% else %}
<li> <li>
<a href="/login/">Login</a> <a href="/login/">Log in</a>
</li> </li>
{% endif %} {% endif %}
{% if register_link_disabled %} {% if register_link_disabled %}

View File

@ -137,9 +137,10 @@ class BaseDocumentationSpider(scrapy.Spider):
def _make_requests(self, url: str) -> Iterator[Request]: def _make_requests(self, url: str) -> Iterator[Request]:
# These URLs are for Zulip's webapp, which with recent changes # These URLs are for Zulip's webapp, which with recent changes
# can be accessible without login an account. While we do # can be accessible without logging into an account. While we
# crawl documentation served by the webapp (E.g. /help/), we # do crawl documentation served by the webapp (e.g. /help/),
# don't want to crawl the webapp itself, so we exclude these. # we don't want to crawl the webapp itself, so we exclude
# these.
if ( if (
url in ["http://localhost:9981/", "http://localhost:9981"] url in ["http://localhost:9981/", "http://localhost:9981"]
or url.startswith("http://localhost:9981/#") or url.startswith("http://localhost:9981/#")

View File

@ -19,7 +19,7 @@ API token.
## Step 2: Create your DigitalOcean API token ## Step 2: Create your DigitalOcean API token
Once you've been added to the Zulip team, Once you've been added to the Zulip team,
[login](https://cloud.digitalocean.com/droplets) to the DigitalOcean control [log in](https://cloud.digitalocean.com/droplets) to the DigitalOcean control
panel and [create your personal API token][do-create-api-token]. **Make sure panel and [create your personal API token][do-create-api-token]. **Make sure
you create your API token under the Zulip team.** (It should look something you create your API token under the Zulip team.** (It should look something
like [this][image-zulip-team]). like [this][image-zulip-team]).
@ -135,7 +135,7 @@ Rough steps:
1. `tools/run-dev.py`, and check that `base.zulipdev.org:9991` is up and running. 1. `tools/run-dev.py`, and check that `base.zulipdev.org:9991` is up and running.
1. `> ~/.bash_history && history -c && sudo shutdown -h now` to clear any command 1. `> ~/.bash_history && history -c && sudo shutdown -h now` to clear any command
line history (To reduce chance of confusing new contributors in case you made a typo) line history (To reduce chance of confusing new contributors in case you made a typo)
and shutdown the droplet. and shut down the droplet.
1. Go to the Images tab on DigitalOcean, and "Take a Snapshot". 1. Go to the Images tab on DigitalOcean, and "Take a Snapshot".
1. Wait for several minutes. 1. Wait for several minutes.
1. Do something like `curl -X GET -H "Content-Type: application/json" 1. Do something like `curl -X GET -H "Content-Type: application/json"
@ -157,7 +157,7 @@ Rough steps:
1. Log in to the Zulip organization view, rather than via your personal account. 1. Log in to the Zulip organization view, rather than via your personal account.
1. Create a new droplet in DigitalOcean with 2GB RAM and `base.zulipdev.org` as the 1. Create a new droplet in DigitalOcean with 2GB RAM and `base.zulipdev.org` as the
SSH authentication key. SSH authentication key.
1. Login to the droplet as root user. Make sure to point the SSH program to the private 1. Log in to the droplet as root user. Make sure to point the SSH program to the private
key of `base.zulipdev.org` during this step. key of `base.zulipdev.org` during this step.
1. Create a user called `zulipdev` and add it to the `sudo` group. 1. Create a user called `zulipdev` and add it to the `sudo` group.
1. Make sudo of `zulipdev` user passwordless by including 1. Make sudo of `zulipdev` user passwordless by including

View File

@ -24,7 +24,7 @@ work correctly. These secrets are passed as environment variables to the GitHub
Also pass the following as environment variables in `.github/workflows/update-oneclick-apps.yml`. Also pass the following as environment variables in `.github/workflows/update-oneclick-apps.yml`.
* `PYTHON_DIGITALOCEAN_REQUEST_TIMEOUT_SEC` - This configures the maximum number of seconds * `PYTHON_DIGITALOCEAN_REQUEST_TIMEOUT_SEC` - This configures the maximum number of seconds
to wait before the requests made by `python-digitalocean` timeout. If not configured, it's to wait before the requests made by `python-digitalocean` time out. If not configured, it's
common for the requests to take 20+ minutes before getting timed out. common for the requests to take 20+ minutes before getting timed out.
### Verifying the one click app image ### Verifying the one click app image

View File

@ -448,7 +448,7 @@ def do_login(request: HttpRequest, user_profile: UserProfile) -> None:
request._requestor_for_logs = user_profile.format_requestor_for_logs() request._requestor_for_logs = user_profile.format_requestor_for_logs()
process_client(request, user_profile, is_browser_view=True) process_client(request, user_profile, is_browser_view=True)
if settings.TWO_FACTOR_AUTHENTICATION_ENABLED: if settings.TWO_FACTOR_AUTHENTICATION_ENABLED:
# Login with two factor authentication as well. # Log in with two factor authentication as well.
do_two_factor_login(request, user_profile) do_two_factor_login(request, user_profile)

View File

@ -194,7 +194,8 @@ NON_EXPORTED_TABLES = {
"zerver_scheduledemail_users", "zerver_scheduledemail_users",
"zerver_scheduledmessage", "zerver_scheduledmessage",
# These tables are related to a user's 2FA authentication # These tables are related to a user's 2FA authentication
# configuration, which will need to be re-setup on the new server. # configuration, which will need to be set up again on the new
# server.
"two_factor_phonedevice", "two_factor_phonedevice",
"otp_static_staticdevice", "otp_static_staticdevice",
"otp_static_statictoken", "otp_static_statictoken",

View File

@ -16,9 +16,9 @@ class Command(ZulipBaseCommand):
parser.add_argument( parser.add_argument(
"--deactivated-only", "--deactivated-only",
action="store_true", action="store_true",
help="Only logout all users who are deactivated", help="Only log out all users who are deactivated",
) )
self.add_realm_args(parser, help="Only logout all users in a particular realm") self.add_realm_args(parser, help="Only log out all users in a particular realm")
def handle(self, *args: Any, **options: Any) -> None: def handle(self, *args: Any, **options: Any) -> None:
realm = self.get_realm(options) realm = self.get_realm(options)

View File

@ -145,7 +145,7 @@ class DocPageTest(ZulipTestCase):
if settings.ZILENCER_ENABLED: if settings.ZILENCER_ENABLED:
self._test("/apps/", "Apps for every platform.") self._test("/apps/", "Apps for every platform.")
self._test("/features/", "Beautiful messaging") self._test("/features/", "Beautiful messaging")
self._test("/hello/", "Chat for distributed teams", landing_missing_strings=["Login"]) self._test("/hello/", "Chat for distributed teams", landing_missing_strings=["Log in"])
self._test("/why-zulip/", "Why Zulip?") self._test("/why-zulip/", "Why Zulip?")
self._test("/for/open-source/", "for open source projects") self._test("/for/open-source/", "for open source projects")
self._test("/for/research/", "for researchers") self._test("/for/research/", "for researchers")

View File

@ -442,7 +442,7 @@ class SingleUserPresenceTests(ZulipTestCase):
def test_single_user_get(self) -> None: def test_single_user_get(self) -> None:
reset_emails_in_zulip_realm() reset_emails_in_zulip_realm()
# First, we setup the test with some data # First, we set up the test with some data
user = self.example_user("othello") user = self.example_user("othello")
self.login_user(user) self.login_user(user)
result = self.client_post("/json/users/me/presence", {"status": "active"}) result = self.client_post("/json/users/me/presence", {"status": "active"})
@ -637,7 +637,7 @@ class UserPresenceAggregationTests(ZulipTestCase):
class GetRealmStatusesTest(ZulipTestCase): class GetRealmStatusesTest(ZulipTestCase):
def test_get_statuses(self) -> None: def test_get_statuses(self) -> None:
# Setup the test by simulating users reporting their presence data. # Set up the test by simulating users reporting their presence data.
othello = self.example_user("othello") othello = self.example_user("othello")
hamlet = self.example_user("hamlet") hamlet = self.example_user("hamlet")

View File

@ -1665,7 +1665,7 @@ so we didn't send them an invitation. We did send invitations to everyone else!"
`emails_restricted_to_domains = False`, but later change `emails_restricted_to_domains = False`, but later change
`emails_restricted_to_domains = True`, the invitation should `emails_restricted_to_domains = True`, the invitation should
succeed but the invitee's signup attempt should fail as succeed but the invitee's signup attempt should fail as
users are not allowed to signup using email containing + users are not allowed to sign up using email containing +
when the realm is restricted to domain. when the realm is restricted to domain.
""" """
zulip_realm = get_realm("zulip") zulip_realm = get_realm("zulip")

View File

@ -4974,7 +4974,7 @@ class GetSubscribersTest(ZulipTestCase):
self.assertTrue(stream_dict["stream_id"] not in unsub_ids) self.assertTrue(stream_dict["stream_id"] not in unsub_ids)
# The Rome stream has is_web_public=True, with default # The Rome stream has is_web_public=True, with default
# subscribers not setup by this test, so we do the # subscribers not set up by this test, so we do the
# following check only for the streams we created. # following check only for the streams we created.
if stream_dict["name"] in web_public_streams: if stream_dict["name"] in web_public_streams:
self.assertEqual(len(stream_dict["subscribers"]), len(users_to_subscribe)) self.assertEqual(len(stream_dict["subscribers"]), len(users_to_subscribe))

View File

@ -344,7 +344,7 @@ class UserGroupAPITestCase(ZulipTestCase):
members = get_memberships_of_users(user_group, [hamlet, othello, aaron]) members = get_memberships_of_users(user_group, [hamlet, othello, aaron])
self.assertEqual(len(members), 3) self.assertEqual(len(members), 3)
# For normal testing we again login with hamlet # For normal testing we again log in with hamlet
self.logout() self.logout()
self.login_user(hamlet) self.login_user(hamlet)
# Test remove members # Test remove members

View File

@ -53,7 +53,7 @@ class ZephyrTest(ZulipTestCase):
), self.assertLogs(level="ERROR") as log: ), self.assertLogs(level="ERROR") as log:
result = post("zephyr", cred=cred) result = post("zephyr", cred=cred)
self.assert_json_error(result, "We were unable to setup mirroring for you") self.assert_json_error(result, "We were unable to set up mirroring for you")
self.assertIn("Error updating the user's ccache", log.output[0]) self.assertIn("Error updating the user's ccache", log.output[0])
with ccache_mock(return_value=b"1234"), mirror_mock(), ssh_mock() as ssh: with ccache_mock(return_value=b"1234"), mirror_mock(), ssh_mock() as ssh:

View File

@ -249,7 +249,7 @@ class ClientDescriptor:
def cleanup(self) -> None: def cleanup(self) -> None:
# Before we can GC the event queue, we need to disconnect the # Before we can GC the event queue, we need to disconnect the
# handler and notify the client (or connection server) so that # handler and notify the client (or connection server) so that
# they can cleanup their own state related to the GC'd event # they can clean up their own state related to the GC'd event
# queue. Finishing the handler before we GC ensures the # queue. Finishing the handler before we GC ensures the
# invariant that event queues are idle when passed to # invariant that event queues are idle when passed to
# `do_gc_event_queues` is preserved. # `do_gc_event_queues` is preserved.

View File

@ -679,7 +679,7 @@ class TwoFactorLoginView(BaseTwoFactorLoginView):
def done(self, form_list: List[Form], **kwargs: Any) -> HttpResponse: def done(self, form_list: List[Form], **kwargs: Any) -> HttpResponse:
""" """
Login the user and redirect to the desired page. Log in the user and redirect to the desired page.
We need to override this function so that we can redirect to We need to override this function so that we can redirect to
realm.uri instead of '/'. realm.uri instead of '/'.

View File

@ -71,6 +71,6 @@ def webathena_kerberos_login(
) )
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
logging.exception("Error updating the user's ccache", stack_info=True) logging.exception("Error updating the user's ccache", stack_info=True)
return json_error(_("We were unable to setup mirroring for you")) return json_error(_("We were unable to set up mirroring for you"))
return json_success() return json_success()

View File

@ -102,7 +102,7 @@ ALWAYS_SEND_ALL_HOTSPOTS = False
# FAKE_LDAP_MODE supports using a fake LDAP database in the # FAKE_LDAP_MODE supports using a fake LDAP database in the
# development environment, without needing an LDAP server! # development environment, without needing an LDAP server!
# #
# Three modes are allowed, and each will setup Zulip and the fake LDAP # Three modes are allowed, and each will set up Zulip and the fake LDAP
# database in a way appropriate for the corresponding mode described # database in a way appropriate for the corresponding mode described
# in https://zulip.readthedocs.io/en/latest/production/authentication-methods.html#ldap-including-active-directory # in https://zulip.readthedocs.io/en/latest/production/authentication-methods.html#ldap-including-active-directory
# (A) If users' email addresses are in LDAP and used as username. # (A) If users' email addresses are in LDAP and used as username.