zulip/zerver/lib
Sahil Batra b44d30add7 events: Optimize computing can_create_streams and related fields.
Currently, for computing fields like can_create_public_streams
and can_create_private_steams fields, is_user_in_group is called
to check whether the user is part of the group which has the
permission. This means that there will be one DB query for each
field.

To optimize this, we now first fetch all the groups that the
user is member of, including the anonymous groups which are
used for settings, such that we can then just check whether
the user is part of the group which has the permission meaning
we would need only one query to compute all the fields.

This would be helpful when settings for other similar fields
will also be migrated to groups framework.
2024-06-24 10:00:08 -07:00
..
markdown settings: Unite user settings into a single panel. 2024-06-17 17:16:21 -07:00
upload thumbnailing: Move resizing functions into zerver.lib.thumbnail. 2024-06-20 23:06:08 -04:00
url_preview ruff: Fix RUF022 `__all__` is not sorted. 2024-03-01 09:30:04 -08:00
webhooks docs: Update Django links to our current version. 2024-05-24 10:18:37 -07:00
__init__.py
addressee.py i18n: Update translated errors for stream to channel rename. 2024-04-24 14:35:05 -07:00
alert_words.py models: Extract zerver.models.alert_words. 2023-12-16 22:08:44 -08:00
async_utils.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
attachments.py models: Move some functions to zerver.lib.attachments. 2023-12-16 22:08:44 -08:00
avatar.py avatar: Clean up one callsite of deprecated avatar_url_from_dict. 2024-06-20 23:06:08 -04:00
avatar_hash.py utils: Remove make_safe_digest wrapper. 2023-07-19 10:54:05 -07:00
bot_config.py ruff: Fix UP032 Use f-string instead of `format` call. 2023-08-02 15:58:55 -07:00
bot_lib.py message: Add recipient_users parameter to internal_send_huddle_message. 2024-04-03 12:28:05 -07:00
bot_storage.py ruff: Fix UP032 Use f-string instead of `format` call. 2024-03-21 08:59:17 -07:00
bulk_create.py streams: Set creator for some initial streams in populate_db. 2024-05-15 11:21:46 -07:00
cache.py documentation: Move OpenGraph description updating out of middleware. 2024-04-16 10:41:45 -07:00
cache_helpers.py caches: Only take the realm_id, not the Realm, as a cache key function. 2024-03-04 16:35:57 -08:00
camo.py
ccache.py requirements: Upgrade Python requirements. 2024-01-29 10:41:54 -08:00
compatibility.py python: Consistently use from…import for datetime. 2023-12-05 12:01:18 -08:00
context_managers.py context_managers: Open file in write mode in lockfile_nonblocking. 2024-03-06 10:35:02 -08:00
create_user.py create_user: Copy the avatar before announcing it. 2024-06-20 23:06:08 -04:00
data_types.py python: Elide unnecessary list wrappers. 2023-09-13 12:41:23 -07:00
db.py db: Split reset_queries into a new module zerver.lib.db_connections. 2024-04-17 16:49:03 -07:00
db_connections.py db: Split reset_queries into a new module zerver.lib.db_connections. 2024-04-17 16:49:03 -07:00
debug.py
default_streams.py streams: Pass stream_weekly_traffic field in stream objects. 2023-08-06 18:06:42 -07:00
dev_ldap_directory.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
digest.py email-digest: Update translated strings for stream to channel rename. 2024-04-24 14:35:05 -07:00
display_recipient.py refactor: Replace HUDDLE with DIRECT_MESSAGE_GROUP. 2024-03-21 16:39:33 -07:00
domains.py python: Mark regexes as raw strings. 2024-04-26 12:30:31 -07:00
drafts.py i18n: Update translated errors for stream to channel rename. 2024-04-24 14:35:05 -07:00
email_mirror.py settings: Use named_user_group field to access name. 2024-04-26 17:03:09 -07:00
email_mirror_helpers.py python: Mark regexes as raw strings. 2024-04-26 12:30:31 -07:00
email_notifications.py models: Replace realm.uri with realm.url. 2024-05-08 11:12:43 -07:00
email_validation.py email_validation: Merge two implementations of a disposable-email check. 2024-02-27 10:19:23 -08:00
emoji.py composebox_typeahead: Convert module to typescript. 2024-05-16 14:53:26 -07:00
emoji_utils.py emoji: Match emoji sequences in markdown. 2023-08-23 16:18:15 -07:00
event_schema.py realm: Add new group setting for who can create private channels. 2024-06-20 15:48:14 -07:00
events.py events: Optimize computing can_create_streams and related fields. 2024-06-24 10:00:08 -07:00
exceptions.py groups: Pass old setting value for can_mention_group. 2024-05-14 12:17:15 -07:00
export.py presence: Handle PresenceSequence in the export/import system. 2024-06-02 22:08:28 -07:00
external_accounts.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
fix_unreads.py ruff: Fix PERF401 Use a list comprehension to create a transformed list. 2023-08-07 17:23:55 -07:00
generate_test_data.py requirements: Upgrade Python requirements. 2024-01-29 10:41:54 -08:00
github.py
home.py sentry: Untangle from page_params. 2024-06-22 18:53:56 -07:00
html_diff.py
html_to_text.py documentation: Move OpenGraph description updating out of middleware. 2024-04-16 10:41:45 -07:00
i18n.py i18n: Fix default language for users created via API/LDAP. 2023-10-01 21:10:13 +02:00
import_realm.py thumbnailing: Move resizing functions into zerver.lib.thumbnail. 2024-06-20 23:06:08 -04:00
initial_password.py
integrations.py integration: Update topic & content of grafana webhook. 2024-06-12 06:44:14 -07:00
invites.py invites: Make notify_invites_changed transaction-safe. 2024-05-02 14:23:04 -07:00
logging_util.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
management.py management: Disable Sentry for management commands run interactively. 2024-05-24 10:30:16 -07:00
mdiff.py
mention.py mention: Use NamedUserGroup objects in mention code. 2024-04-26 17:03:09 -07:00
message.py remove_single_newlines: Fix regex to parse list syntax correctly. 2024-05-30 11:32:52 -07:00
message_cache.py python: Avoid relying on Collection supertype of QuerySet. 2024-04-16 23:02:16 -07:00
migrate.py migration: Make 'rename_indexes_constraints' a lib function. 2023-12-06 18:19:20 -08:00
mime_types.py mime_types: Add audio and image types missing from Python library. 2024-06-20 15:29:20 -07:00
mobile_auth_otp.py
muted_users.py python: Consistently use from…import for datetime. 2023-12-05 12:01:18 -08:00
name_restrictions.py name_restrictions: Reserve "avatar". 2024-06-20 23:06:08 -04:00
narrow.py narrow: Use NarrowParameter instead of dictionary. 2024-06-20 12:22:37 -07:00
narrow_helpers.py narrow: Move python-only implemenation into its own file. 2024-04-16 09:48:11 -07:00
narrow_predicate.py search: Add is:followed filter. 2024-06-17 18:22:50 -07:00
notes.py requirements: Upgrade Python requirements. 2024-01-29 10:41:54 -08:00
notification_data.py mention: Use NamedUserGroup objects in mention code. 2024-04-26 17:03:09 -07:00
onboarding.py zulip_updates: Send an introductory message before the first update. 2024-05-15 11:19:03 -07:00
onboarding_steps.py docs: Add subsystem doc for 'Onboarding Steps'. 2024-06-18 09:39:50 -07:00
outgoing_http.py outgoing_http: Support fractional-second timeouts. 2024-03-15 15:34:12 -07:00
outgoing_webhook.py message: Split MessageDict and friends into its own file. 2024-02-14 12:27:03 -08:00
partial.py partial: Replace returns plugin with an annotation. 2024-04-29 17:14:41 -07:00
per_request_cache.py per-request caches: Add per_request_cache library. 2023-08-11 11:09:34 -07:00
presence.py presence: Return last_update_id=-1 on zephyr mirror realm. 2024-06-07 13:57:40 -07:00
profile.py
push_notifications.py push_notifications: Migrate to FCM HTTP v1 API. 2024-06-17 18:26:26 -07:00
pysa.py
query_helpers.py models: Move query_for_ids to zerver.lib.query_helpers. 2023-12-16 22:08:44 -08:00
queue.py rabbitmq: Support non-/ vhosts. 2024-05-31 15:41:19 -07:00
rate_limiter.py codespell: Fix spelling mistakes caught by codespell. 2024-05-31 14:32:33 -07:00
realm_description.py
realm_icon.py
realm_logo.py
recipient_parsing.py i18n: Update translated errors for stream to channel rename. 2024-04-24 14:35:05 -07:00
recipient_users.py narrow: Do not create huddles when fetching messages. 2024-04-16 09:57:55 -07:00
redis_utils.py rate_limiter: Extract KEY_PREFIX to redis_utils. 2024-04-19 10:25:34 -07:00
remote_server.py analytics: Send ZULIP_MERGE_BASE to the bouncer. 2024-06-23 07:44:11 -07:00
request.py documentation: Move OpenGraph description updating out of middleware. 2024-04-16 10:41:45 -07:00
response.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
rest.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
retention.py retention: Add .restored_timestamp to ArchiveTransaction. 2024-05-09 10:54:44 -07:00
safe_session_cached_db.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
scheduled_messages.py models: Extract zerver.models.scheduled_jobs. 2023-12-16 22:08:44 -08:00
scim.py typos: Fix typos caught by mwic. 2024-05-20 13:55:00 -07:00
scim_filter.py docs: Update Django links to our current version. 2024-05-24 10:18:37 -07:00
send_email.py emails: Replace occurrences of uri with url in email templates. 2024-05-24 11:18:35 -07:00
server_initialization.py models: New PresenceSequence model and UserPresence.last_update_id col. 2024-06-02 22:08:28 -07:00
sessions.py models: Extract zerver.models.users. 2023-12-16 22:08:44 -08:00
singleton_bmemcached.py
soft_deactivation.py soft_reactivate: Soft reactivate if group mention has < 12 members. 2024-04-24 17:40:37 -07:00
sounds.py
sqlalchemy_utils.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
storage.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
stream_color.py
stream_subscription.py python: Avoid relying on Collection supertype of QuerySet. 2024-04-16 23:02:16 -07:00
stream_topic.py
stream_traffic.py python: Consistently use from…import for datetime. 2023-12-05 12:01:18 -08:00
streams.py streams: Move enforcement of stripped-stream-names lower. 2024-06-05 10:44:53 -07:00
string_validation.py i18n: Update translated errors for stream to channel rename. 2024-04-24 14:35:05 -07:00
subdomains.py python: Consistently use from…import for urllib.parse. 2023-12-05 13:03:07 -08:00
subscription_info.py i18n: Update translated errors for stream to channel rename. 2024-04-24 14:35:05 -07:00
templates.py
test_classes.py sentry: Untangle from page_params. 2024-06-22 18:53:56 -07:00
test_console_output.py test_console_output: Mark regexes as raw strings. 2024-04-16 14:51:39 -07:00
test_data.source.txt
test_fixtures.py
test_helpers.py typos: Fix typos caught by mwic. 2024-05-20 13:55:00 -07:00
test_runner.py partial: Replace returns plugin with an annotation. 2024-04-29 17:14:41 -07:00
tex.py katex: Replace subprocess call with minimal external service. 2024-03-15 15:34:12 -07:00
thumbnail.py thumbnailing: Move resizing functions into zerver.lib.thumbnail. 2024-06-20 23:06:08 -04:00
timeout.py timeout: Rename to unsafe_timeout. 2024-04-18 11:50:38 -07:00
timestamp.py python: Consistently use from…import for datetime. 2023-12-05 12:01:18 -08:00
timezone.py ruff: Fix UP033 Use `@functools.cache`. 2024-04-01 18:32:52 -07:00
topic.py topic: Move sqlalchemy methods into their own file. 2024-04-16 09:48:11 -07:00
topic_sqlalchemy.py search: Add is:followed filter. 2024-06-17 18:22:50 -07:00
transfer.py mime_types: Add audio and image types missing from Python library. 2024-06-20 15:29:20 -07:00
typed_endpoint.py realm: Migrate "PATCH /realm" endpoint to typed_endpoint. 2024-05-22 17:20:37 -07:00
typed_endpoint_validators.py users: Migrate to typed_endpoint. 2024-06-06 16:50:56 -07:00
types.py custom_profile: Convert to typed_endpoint. 2024-06-19 18:29:28 -07:00
url_decoding.py url_decoding: Add 'is_same_server_message_link' function. 2024-06-17 10:42:32 -07:00
url_encoding.py models: Replace realm.uri with realm.url. 2024-05-08 11:12:43 -07:00
url_redirects.py help: Move 'channels-and-topics' to 'introduction-to-topics'. 2024-05-07 16:51:48 -07:00
user_agent.py python: Mark regexes as raw strings. 2024-04-26 12:30:31 -07:00
user_counts.py python: Elide unnecessary list wrappers. 2023-09-13 12:41:23 -07:00
user_groups.py user_groups: Move get_group_setting_value_for_audit_log_data. 2024-06-04 09:55:27 -07:00
user_message.py user_message: Use INSERT ... ON CONFLICT for historical UM creation. 2024-03-26 10:52:37 -07:00
user_status.py api: Add "users/<int:user_id>/status" endpoint. 2024-05-22 18:07:22 -07:00
user_topics.py user_topics: Handle IntegrityError during bulk insertion. 2024-06-17 11:21:30 -07:00
users.py realm: Use enums for accessing setting values. 2024-05-22 17:20:37 -07:00
utils.py events: Fix realm_upload_quota_mib value to be in MiB. 2024-04-15 15:08:56 -07:00
validator.py support: Set discounted price instead percentage for customers. 2024-05-16 02:18:43 -07:00
widget.py todo: Require space after colon to separate task title from description. 2024-04-30 12:36:42 -07:00
zcommand.py ruff: Fix UP032 Use f-string instead of `format` call. 2023-08-02 15:58:55 -07:00
zephyr.py
zulip_update_announcements.py updates: Add update about Reactions view, hiding sidebars, is:followed. 2024-06-20 15:30:47 -07:00