zulip/zerver/lib
Steve Howell 7ff3859136 subscriber events: Change schema for peer_add/peer_remove.
We now can send an implied matrix of user/stream tuples
for peer_add and peer_remove events.

The client code basically does this:

    for stream_id in event['stream_ids']:
        for user_id in event['user_ids']:
            update_sub(stream_id, user_id)

We used to send individual events, which gets real
expensive when you are creating new streams. For
the case of copy-to-stream case, we should see
events go from U to 1, where U is the number of users
added.

Note that we don't yet fully optimize the potential
of this schema.  For adding a new user with lots
of default streams, we still send S peer_add events.

And if you subscribe a bunch of users to a bunch of
private streams, we only go from U * S to S; we can't
optimize it down to one event easily.
2020-10-22 11:19:53 -07:00
..
markdown markdown: Migrate off deprecated extension registration interface. 2020-10-19 18:31:12 -07:00
url_preview url_preview: Only extract img tags with an `src`. 2020-08-18 14:26:21 -04:00
webhooks docs: Add spaces to “check out”, “log in”, “set up”, “sign up” as verbs. 2020-10-13 15:47:13 -07:00
__init__.py
actions.py subscriber events: Change schema for peer_add/peer_remove. 2020-10-22 11:19:53 -07:00
addressee.py addressee: Remove redundant casts. 2020-06-22 17:11:42 -07:00
alert_words.py python: Rewrite dict() as {}. 2020-09-02 11:15:41 -07:00
attachments.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
avatar.py python: Convert more percent formatting to Python 3.6 f-strings. 2020-06-14 23:27:22 -07:00
avatar_hash.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
bot_config.py python: Rewrite dict() as {}. 2020-09-02 11:15:41 -07:00
bot_lib.py python: Rewrite dict() as {}. 2020-09-02 11:15:41 -07:00
bot_storage.py test_service_bot_system: Fix type: ignore issues. 2020-06-30 18:58:23 -07:00
bulk_create.py populate_db: Add emoji reactions to development environment database. 2020-09-23 16:10:37 -07:00
cache.py python: Use standard secrets module to generate random tokens. 2020-09-09 15:52:57 -07:00
cache_helpers.py sessions: Fix type: ignore issues. 2020-06-30 18:58:23 -07:00
camo.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
ccache.py python: Fix misuse of Optional types for optional parameters. 2020-06-13 15:31:27 -07:00
context_managers.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
create_user.py python: Replace ujson with orjson. 2020-08-11 10:55:12 -07:00
data_types.py event_schema: Add documentation and rename a few functions. 2020-09-25 12:53:00 -07:00
db.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
debug.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
dev_ldap_directory.py python: Convert more percent formatting to Python 3.6 f-strings. 2020-06-14 23:27:22 -07:00
digest.py digest: Support digest of web public streams for guest users. 2020-09-25 16:11:04 -07:00
display_recipient.py api: Remove (sender_)short_name from message APIs. 2020-07-17 11:15:14 -07:00
domains.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
email_mirror.py email_mirror: Change root logger to zerver.lib.email_mirror. 2020-09-12 10:53:56 -07:00
email_mirror_helpers.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
email_notifications.py email: Remove unused `log_digest_event` function. 2020-10-08 20:35:53 -07:00
email_validation.py isort: Enable black profile. 2020-09-02 11:00:07 -07:00
emoji.py python: Replace ujson with orjson. 2020-08-11 10:55:12 -07:00
error_notify.py Error reporting emails: Indicate user role. 2020-08-03 13:35:51 -07:00
event_schema.py subscriber events: Change schema for peer_add/peer_remove. 2020-10-22 11:19:53 -07:00
events.py subscriber events: Change schema for peer_add/peer_remove. 2020-10-22 11:19:53 -07:00
exceptions.py i18n: Fix some ineffective calls to ugettext at top level. 2020-10-18 14:31:15 -07:00
export.py docs: Add spaces to “check out”, “log in”, “set up”, “sign up” as verbs. 2020-10-13 15:47:13 -07:00
external_accounts.py request: Improve validator type so mypy can check it against REQ. 2020-06-20 22:29:15 -07:00
fix_unreads.py pointer: Remove fix_pre_pointer fixing logic. 2020-06-18 12:55:59 -07:00
generate_test_data.py python: Replace ujson with orjson. 2020-08-11 10:55:12 -07:00
home.py performance: Avoid computing page_params.streams in webapp. 2020-10-14 10:53:10 -07:00
hotspots.py i18n: Be deliberate about distinguishing ugettext and ugettext_lazy. 2020-10-18 14:31:15 -07:00
html_diff.py html_diff: Really return str, not bytes. 2020-08-07 11:12:32 -07:00
html_to_text.py python: Replace None defaults with empty collections where appropriate. 2020-06-13 15:31:27 -07:00
i18n.py i18n: Move locale select logic in home to i18n.py. 2020-10-02 14:56:20 -07:00
import_realm.py import: Reuse get_last_message_id() helper. 2020-10-13 11:28:17 -07:00
initial_password.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
integrations.py i18n: Fix some ineffective calls to ugettext at top level. 2020-10-18 14:31:15 -07:00
logging_util.py webhooks: Add a missing format for the realm. 2020-09-22 15:11:48 -07:00
management.py management: Use signal.pause to sleep forever. 2020-10-07 16:15:19 -07:00
mdiff.py docs: Capitalize Markdown consistently. 2020-08-11 10:23:06 -07:00
mention.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
message.py import: Reuse get_last_message_id() helper. 2020-10-13 11:28:17 -07:00
migrate.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
mobile_auth_otp.py python: Replace unnecessary intermediate lists with generators. 2020-09-02 11:15:41 -07:00
name_restrictions.py python: Pre-fix a few spots for better Black formatting. 2020-09-03 17:51:09 -07:00
narrow.py message_fetch: Allow access to web-public msgs for unauth users. 2020-08-12 16:39:02 -07:00
onboarding.py onboarding: Move send_welcome_bot_response to onboarding. 2020-09-03 17:41:08 -07:00
outgoing_webhook.py python: Catch JSONDecodeError instead of ValueError when decoding JSON. 2020-08-12 11:59:59 -07:00
presence.py python: Tweak some magic trailing commas to avoid Black bugs. 2020-09-03 17:51:09 -07:00
profile.py decorator: Strengthen types of signature-preserving decorators. 2020-06-30 18:58:23 -07:00
push_notifications.py python: Prefer kwargs form of dict.update. 2020-09-03 17:51:09 -07:00
pysa.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
queue.py python: Catch BaseException when we need to clean something up. 2020-10-11 16:16:16 -07:00
rate_limiter.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
realm_description.py refactor: Rename convert to markdown_convert. 2020-07-06 12:39:59 -07:00
realm_icon.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
realm_logo.py realm_logo: Return default logo for realms on LIMITED plan. 2020-06-18 17:46:26 -07:00
redis_utils.py python: Use standard secrets module to generate random tokens. 2020-09-09 15:52:57 -07:00
remote_server.py python: Replace ujson with orjson. 2020-08-11 10:55:12 -07:00
request.py python: Catch specific exceptions from orjson. 2020-10-11 16:11:41 -07:00
response.py python: Replace ujson with orjson. 2020-08-11 10:55:12 -07:00
rest.py webhooks: Rename is_webhook to allow_webhook_access. 2020-09-22 15:11:48 -07:00
retention.py realm: Fix strict_optional errors. 2020-07-06 11:25:48 -07:00
send_email.py docs: Fix some spelling errors. 2020-10-13 15:47:13 -07:00
server_initialization.py database: Remove short_name from UserProfile. 2020-07-17 11:15:15 -07:00
sessions.py sessions: Fix type: ignore issues. 2020-06-30 18:58:23 -07:00
soft_deactivation.py soft_deactivation: Fix typo in logging output. 2020-09-28 12:12:04 -07:00
sqlalchemy_utils.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
statistics.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
storage.py docs: Merge front-end-build-process with html-css. 2019-10-23 13:08:36 -07:00
stream_subscription.py refactor: Compute peers for public streams later. 2020-10-20 11:31:22 -07:00
stream_topic.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
streams.py performance: Streamline list_to_streams. 2020-10-16 12:58:11 -07:00
subdomains.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
test_classes.py events: Stop sending occupy/vacate events. 2020-10-14 10:53:10 -07:00
test_console_output.py tests: Add extra console output detection in test-backend output. 2020-08-27 11:39:53 -07:00
test_data.source.txt docs: Capitalize Markdown consistently. 2020-08-11 10:23:06 -07:00
test_fixtures.py tests: Remove three references to Casper in the comments. 2020-09-18 15:13:40 -07:00
test_helpers.py tests: Add cache_tries_captured helper. 2020-10-15 15:12:01 -07:00
test_runner.py test_runner: Monkey-patch to allow using multiprocessing in tests. 2020-09-14 16:22:23 -07:00
tex.py python: Convert subprocess.Popen.communicate to run or check_output. 2020-09-03 17:42:35 -07:00
thumbnail.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
timeout.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
timestamp.py timestamp: Remove datetime_to_precise_timestamp for datetime.timestamp. 2020-07-31 22:10:14 -07:00
timezone.py docs: Capitalize Markdown consistently. 2020-08-11 10:23:06 -07:00
topic.py refactor: Use recipient_id to get topic history. 2020-10-16 12:58:11 -07:00
topic_mutes.py python: Tweak some magic trailing commas to avoid Black bugs. 2020-09-03 17:51:09 -07:00
transfer.py import_realm: Close the memcached connection before forking. 2020-10-01 11:20:39 -07:00
type_debug.py decorator: Replace type: ignore with cast, avoid Any. 2020-06-30 18:58:23 -07:00
types.py i18n: Be deliberate about distinguishing ugettext and ugettext_lazy. 2020-10-18 14:31:15 -07:00
unminify.py python: Manually convert more percent-formatting to f-strings. 2020-06-14 23:27:22 -07:00
upload.py emoji-upload: Fix transparency issues on GIF emoji upload. 2020-10-11 16:23:07 -07:00
url_encoding.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
user_agent.py user_agent: Compile the regular expression. 2020-02-14 10:26:37 -08:00
user_groups.py python: Replace unnecessary intermediate lists with generators. 2020-09-02 11:15:41 -07:00
user_status.py python: Rewrite dict() as {}. 2020-09-02 11:15:41 -07:00
users.py get_raw_user_data: Support acting_user=None. 2020-09-23 12:07:06 -07:00
utils.py mypy: Use str in statsd_key. 2020-09-29 16:49:10 -07:00
validator.py python: Replace ujson with orjson. 2020-08-11 10:55:12 -07:00
widget.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
zcommand.py python: Rewrite dict() as {}. 2020-09-02 11:15:41 -07:00
zephyr.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00