zulip/tools
Alex Vandiver 50c3dd88e6 models: Migrate ids of all non-Message-related tables to bigint.
Migrate all `ids` of anything which does not have a foreign key from
the Message or UserMessage table (and would thus require walking
those) to be `bigint`.  This is done by removing explicit
`BigAutoField`s, trading them for explicit `AutoField`s on the tables
to not be migrated, while updating `DEFAULT_AUTO_FIELD` to the new
default.

In general, the tables adjusted in this commit are small tables -- at
least compared to Messages and UserMessages.

Many-to-many tables without their own model class are adjusted by a
custom Operation, since they do not automatically pick up migrations
when `DEFAULT_AUTO_FIELD` changes[^1].

Note that this does multiple scans over tables to update foreign
keys[^2].  Large installs may wish to hand-optimize this using the
output of `./manage.py sqlmigrate` to join multiple `ALTER TABLE`
statements into one, to speed up the migration.  This is unfortunately
not possible to do generically, as constraint names may differ between
installations.

This leaves the following primary keys as non-`bigint`:
- `auth_group.id`
- `auth_group_permissions.id`
- `auth_permission.id`
- `django_content_type.id`
- `django_migrations.id`
- `otp_static_staticdevice.id`
- `otp_static_statictoken.id`
- `otp_totp_totpdevice.id`
- `two_factor_phonedevice.id`
- `zerver_archivedmessage.id`
- `zerver_client.id`
- `zerver_message.id`
- `zerver_realm.id`
- `zerver_recipient.id`
- `zerver_userprofile.id`

[^1]: https://code.djangoproject.com/ticket/32674
[^2]: https://code.djangoproject.com/ticket/24203
2024-06-05 11:48:27 -07:00
..
ci Remove support for Ubuntu 20.04 and Debian 11. 2024-04-01 13:27:39 -07:00
documentation_crawler tools: Update some exclusion rules. 2024-05-09 12:40:21 -07:00
droplets droplet: Rebuild droplet image with 22.04. 2024-05-30 11:51:44 -07:00
i18n i18n-tools: Write a newline when unescaping json data contents. 2024-06-04 08:20:24 -07:00
lib left_sidebar: Rename "more topics" to "all topics". 2024-06-04 10:18:54 -07:00
linter_lib message_helper: Be more explicit about converting subject to topic. 2024-05-29 16:45:36 -07:00
node_lib node_tests: Move to web/tests. 2023-02-23 16:04:17 -08:00
oneclickapps oneclickapps: Upgrade DigitalOcean 1-Click App to Ubuntu 22.04. 2024-03-25 13:19:09 -07:00
screenshots tools: Replace realm_uri with realm_url. 2024-06-03 10:07:10 -07:00
setup hello: Redesign landing page. 2024-06-02 21:45:37 -07:00
test-install Remove support for Ubuntu 20.04 and Debian 11. 2024-04-01 13:27:39 -07:00
tests mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
zulip-export python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
__init__.py
backport-pull-request backport: Fix the commit-ids that are used. 2024-05-06 14:47:22 -07:00
build-docs tools: Use root-based absolute import for tools.lib, etc. 2021-07-05 12:21:52 -07:00
build-release-tarball emails: Inline CSS in emails in build_email. 2023-04-05 12:22:29 -07:00
cache-zulip-git-version build-release-tarball: Override merge-base for full official releases. 2022-11-15 12:50:41 -08:00
check-capitalization python: Mark regexes as raw strings. 2024-04-26 12:30:31 -07:00
check-frontend-i18n tools: Fix broken link in check-frontend-i18n. 2024-04-03 13:13:16 -07:00
check-issue-labels ruff: Fix PERF401 Use a list comprehension to create a transformed list. 2023-08-07 17:23:55 -07:00
check-openapi check-openapi: Modernize yargs usage. 2024-04-08 16:50:56 -07:00
check-provision tools: Rename force argument to skip-provision-check 2021-03-03 09:17:49 -08:00
check-schemas openapi: Add missing user property to deprecated user settings events. 2023-10-23 09:07:07 -07:00
check-templates check-templates: Check Django/Handlebars templates differently. 2023-10-11 17:53:07 -07:00
check-thirdparty check-thirdparty: License under GPLv2+. 2022-06-26 17:33:11 -07:00
clean-branches Rename default branch to ‘main’. 2021-09-06 12:56:35 -07:00
commit-message-lint commit-message-lint: Take release branches into account. 2022-07-22 10:39:05 -07:00
commit-msg commit-msg: Don’t change the current directory for non-Vagrant. 2023-05-23 12:24:44 -07:00
conf.ini-template
coveragerc coverage: Clean up coverage configuration. 2023-05-31 13:53:04 -07:00
deploy-branch Rename default branch to ‘main’. 2021-09-06 12:56:35 -07:00
diagnose provision: Avoid distutils; keep PROVISION_VERSION as a tuple. 2022-07-20 22:03:30 -07:00
documentation.vnufilter docs: Update VNU filter to ignore warnings about sphinx-design. 2024-03-22 16:54:57 -07:00
duplicate_commits.json tools: Move duplicate_commits.json file to tools directory. 2020-04-07 16:06:29 -07:00
fetch-contributor-data team: Add more repositories and rename tabs. 2024-03-01 14:57:46 -08:00
fetch-pull-request tools: Avoid readlink -f in *-pull-request scripts. 2021-04-30 14:57:13 -07:00
fetch-rebase-pull-request Rename default branch to ‘main’. 2021-09-06 12:56:35 -07:00
find-unused-css web: Move web app to ‘web’ directory. 2023-02-23 16:04:17 -08:00
lint lint: Quiet the Ruff formatter. 2024-04-03 15:34:02 -07:00
pre-commit tools: Rename force argument to skip-provision-check 2021-03-03 09:17:49 -08:00
provision Remove support for Ubuntu 20.04 and Debian 11. 2024-04-01 13:27:39 -07:00
push-to-pull-request push-to-pull-request: Accept intermixed options and arguments again. 2024-02-01 17:08:44 -08:00
README.md
rebuild-dev-database terminate-psql-sessions: Rely on the caller to set PGHOST, PGUSER. 2020-06-15 21:37:14 -07:00
rebuild-test-database shfmt: Reformat shell scripts with shfmt. 2020-10-15 15:16:00 -07:00
release release: Fix changelog output. 2024-03-19 16:05:53 -07:00
release-tarball-exclude.txt puppet: Rename puppet/zulip_ops to puppet/kandra. 2024-02-06 17:56:27 -08:00
renumber-migrations renumber-migrations: Skip migration 0501. 2024-04-10 11:15:00 -07:00
reset-to-pull-request tools: Avoid readlink -f in *-pull-request scripts. 2021-04-30 14:57:13 -07:00
review python: Use Python 3.8 shlex.join function. 2022-04-27 12:57:49 -07:00
run-codespell dependencies: Switch to pnpm. 2023-03-20 15:48:29 -07:00
run-dev partial: Replace returns plugin with an annotation. 2024-04-29 17:14:41 -07:00
run-mypy tools: Support running mypy daemon for better performance. 2022-07-06 17:33:13 -07:00
run-tsc
semgrep-py.yml models: Migrate ids of all non-Message-related tables to bigint. 2024-06-05 11:48:27 -07:00
setup-git-repo shfmt: Reformat shell scripts with shfmt. 2020-10-15 15:16:00 -07:00
show-profile-results python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
stop-run-dev python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
tail-ses ruff: Fix RSE102 Unnecessary parentheses on raised exception. 2023-02-04 16:34:55 -08:00
test-all install-shellcheck: Upgrade ShellCheck to 0.9.0. 2023-01-04 14:01:34 -08:00
test-api do_deactivate_realm: Add deactivation_reason kwarg. 2024-05-19 23:07:28 -07:00
test-backend data_import: Remove gitter data import tool. 2024-05-02 13:25:25 -07:00
test-documentation tools: Fix test-documentation merge check errors. 2024-03-19 15:01:33 -07:00
test-help-documentation tools: Use root-based absolute import for tools.lib, etc. 2021-07-05 12:21:52 -07:00
test-js-with-node settings_preferences: Convert module to TypeScript. 2024-06-04 08:50:07 -07:00
test-js-with-puppeteer puppeteer: Allow reruns in interactive mode when tests succeed. 2023-09-13 12:46:22 -07:00
test-locked-requirements test-locked-requirements: Rename may_be_setup_cache to maybe_set_up_cache. 2022-01-12 13:21:35 -08:00
test-migrations requirements: Upgrade Python requirements. 2021-04-15 21:47:33 -07:00
test-queue-worker-reload models: Rename zerver/models.py to zerver/models/__init__.py. 2023-12-16 22:08:44 -08:00
test-run-dev run-dev: Drop .py from script name. 2023-03-03 18:02:37 -08:00
test-tools tools: Use root-based absolute import for tools.lib, etc. 2021-07-05 12:21:52 -07:00
total-contributions docs: Fix grammar errors found by mwic. 2023-10-09 13:24:09 -07:00
update-locked-requirements requirements: Remove unused mypy.txt lock file. 2022-09-08 11:08:06 -07:00
update-prod-static update-prod-static: Only run generate_landing_page_images if necessary. 2023-10-05 09:04:33 -07:00
update-zuliprc-api-field python: Replace universal_newlines with text. 2022-01-23 22:16:01 -08:00
upload-release upload-release: Update SHA256SUM for existing files if changed. 2023-01-23 17:41:29 -08:00
webpack katex: Replace subprocess call with minimal external service. 2024-03-15 15:34:12 -07:00
zanitizer zanitizer: Reformat with perltidy. 2021-03-24 12:12:04 -07:00
zanitizer_config.pm.sample zanitizer: Reformat with perltidy. 2021-03-24 12:12:04 -07:00

This directory contains scripts that are used in building, managing, testing, and other forms of work in a Zulip development environment. Note that tools that are also useful in production belong in scripts/ or should be Django management commands.

For more details, see https://zulip.readthedocs.io/en/latest/overview/directory-structure.html.