zulip/zerver/lib
Steve Howell 0f7628280f narrow: Handle spurious emails in pm-with searches.
If cordelia searches on pm-with:iago@zulip.com,cordelia@zulip.com,
we now properly treat that the same way as pm-with:iago@zulip.com.

Before this fix, the query would initially go through the
huddle code path.  The symptom wasn't completely obvious, as
eventually a deeper function would return a recipient id
corresponding to a single PM with @iago@zulip.com, but we would
only get messages where iago was the recipient, and not any
messages where he was the sender to cordelia.

I put the helper function for this in zerver/lib/addressee, which
is somewhat speculative.  Eventually, we'll want pm-with queries
to allow for user ids, and I imagine there will be some shared
logic with other Addressee code in terms of how we handle these
strings.  The way we deal with lists of emails/users for various
endpoints is kind of haphazard in the current code, although
granted it's mostly just repeating the same simple patterns.  It
would be nice for some of this code to converge a bit.  This
affects new messages, typing indicators, search filters, etc.,
and some endpoints have strange legacy stuff like supporting
JSON-encoded lists, so it's not trivial to clean this up.

Tweaked by tabbott to add some additional tests.
2018-10-12 10:18:30 -07:00
..
bugdown user docs: Add import-from-hipchat. 2018-10-09 15:23:07 -07:00
url_preview url_preview: Don't import beautifulsoup at import time. 2018-08-08 14:19:42 -07:00
webhooks webhooks/gitlab: Include title in Issue Hook event messages. 2018-07-14 09:38:11 +05:30
__init__.py
actions.py retention: move_messages_to_archive should accept multiple message ids. 2018-10-11 15:31:12 -07:00
addressee.py narrow: Handle spurious emails in pm-with searches. 2018-10-12 10:18:30 -07:00
alert_words.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
api_test_helpers.py api docs: Document GET /users/<email>/presence. 2018-08-31 15:15:54 -07:00
attachments.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
avatar.py mypy: Enable strict optional in lib/avatar.py. 2018-05-17 11:11:55 -07:00
avatar_hash.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
bot_config.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
bot_lib.py embedded bots: Use get_active_user helper to look up users. 2018-05-20 20:04:16 -07:00
bot_storage.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
bulk_create.py models: Add USER_CREATED event type constant to RealmAuditLog. 2018-07-10 15:42:26 +05:30
cache.py users: Get all API keys via wrapper method. 2018-08-08 16:35:17 -07:00
cache_helpers.py users: Get all API keys via wrapper method. 2018-08-08 16:35:17 -07:00
camo.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
ccache.py str_utils: Move force_bytes into ccache.py. 2018-05-15 19:07:32 -07:00
context_managers.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:45:52 -08:00
create_user.py utils: Move random API key generator as generate_api_key. 2018-08-08 16:45:25 -07:00
db.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
debug.py mypy: Set local_partial_types = True. 2018-05-21 22:41:00 -07:00
digest.py models: Rename Realm.show_digest_email field. 2018-08-01 11:05:58 -07:00
domains.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
email_mirror.py email_mirror: Limit message length using defined constants. 2018-09-21 10:39:57 -07:00
emoji.py emoji: Move `EMOTICON_CONVERSIONS` mapping to build_emoji infra. 2018-07-23 12:35:08 -07:00
error_notify.py bugdown: Improve exception handler for BugdownRenderingException. 2018-07-26 09:27:55 -07:00
events.py events: Query starred message ids in fetch_initial_state_data. 2018-08-21 13:01:41 -07:00
exceptions.py Remove `code` from JsonableError.__init__. 2018-08-22 16:51:40 -07:00
export.py export: Fix exporting files with S3 upload backend. 2018-09-20 20:14:19 -07:00
feedback.py zerver/lib: Change use of typing.Text to str. 2018-05-12 15:22:39 -07:00
fix_unreads.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
generate_test_data.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
hotspots.py signup: Copy hotspots when importing settings. 2018-06-16 08:50:49 -07:00
html_diff.py mypy: Remove type: ignores that are unnecessary with new mypy. 2017-11-25 10:06:28 -08:00
i18n.py i18n: Pass translation data in page_params. 2018-05-30 08:57:26 -07:00
import_realm.py import: Speed up create_subscription_events(). 2018-10-02 16:55:16 -07:00
initial_password.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
integrations.py webhooks: Add Netlify integration. 2018-10-05 17:04:40 -07:00
json_encoder_for_html.py mypy: Fix annotations for json_encoder_for_html. 2017-11-22 01:32:46 -08:00
logging_util.py settings: Fix double negative in LOGGING_NOT_DISABLED. 2018-03-21 18:03:05 -07:00
management.py management commands: Add sleep_forever to lib/management. 2018-08-17 09:20:51 -07:00
mdiff.py mypy: Amend diff_strings to return str or raise DiffException. 2018-02-13 11:40:51 -08:00
mention.py zerver/lib: Change use of typing.Text to str. 2018-05-12 15:22:39 -07:00
message.py message flags: Add where_starred helper and use it. 2018-08-21 15:28:04 -07:00
migrate.py migrate: Add do_batch_update method for running batch updates. 2018-05-31 13:00:34 -07:00
mobile_auth_otp.py mobile: Make otp_encrypt_api_key accept API keys. 2018-08-08 16:45:40 -07:00
name_restrictions.py signup: Add opayq.com to disposable domain whitelist. 2018-08-13 10:56:47 -07:00
narrow.py narrow: Add is_web_public_compatible check for narrows. 2018-05-21 08:45:48 -07:00
notifications.py logging: Show timestamp in UTC in non-django production scripts. 2018-08-20 12:52:40 -07:00
onboarding.py create_realm_internal_bots: Refactor to extract main op as a function. 2018-05-23 11:53:22 +05:30
openapi.py Minimize race conditions for reading zulip.yaml. 2018-09-12 11:07:20 -07:00
outgoing_webhook.py outgoing bots: Fix header for generic servers. 2018-10-11 16:12:07 -07:00
parallel.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
profile.py mypy: Improve typing to profile.py & remove FuncT from decorator.py. 2017-10-29 17:10:13 -07:00
push_notifications.py notifications: Fix push notifications with multiple realms. 2018-10-10 16:15:52 -07:00
queue.py mypy: Remove some now-unnecessary type: ignores. 2018-03-28 10:39:05 -07:00
rate_limiter.py zerver/lib: Change use of typing.Text to str. 2018-05-12 15:22:39 -07:00
realm_icon.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
redis_utils.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
request.py request: Add new str_validator validator type. 2018-05-03 21:11:02 -07:00
request.pyi request.pyi: Remove unused import of typing.Text. 2018-05-14 05:16:22 +05:30
response.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
rest.py uploads: Add new way of querying for mobile uploads endpoint. 2018-04-13 17:51:45 -07:00
retention.py retention: move_messages_to_archive should accept multiple message ids. 2018-10-11 15:31:12 -07:00
send_email.py models: Create delivery_email field in userprofile. 2018-07-12 12:30:20 +05:30
sessions.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
soft_deactivation.py models: Add USER_SOFT_DEACTIVATED event type constant to RealmAuditLog. 2018-07-10 15:42:26 +05:30
sqlalchemy_utils.py mypy: Set local_partial_types = True. 2018-05-21 22:41:00 -07:00
statistics.py zerver/lib: Use Python 3 syntax for typing for several files. 2017-11-28 17:02:24 -08:00
storage.py storage: Fix hash-renaming of various non-CSS/JS file types. 2018-07-24 09:42:25 -07:00
str_utils.py models: Remove unused ModelReprMixin class. 2018-05-15 19:11:22 -07:00
stream_recipient.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
stream_subscription.py Mypy: Use models.py QuerySet annotation approach in stream_subscription.py. 2018-03-15 12:54:43 -07:00
stream_topic.py zerver/lib: Change use of typing.Text to str. 2018-05-12 15:22:39 -07:00
streams.py default stream: Allows admins to remove any default stream. 2018-08-07 13:28:30 -07:00
subdomains.py Enable pycodestyle W605 (invalid escape sequence). 2018-07-03 16:54:46 +02:00
test_classes.py test_classes: Create lear_user helper function. 2018-10-11 15:30:26 -07:00
test_data.source.txt test_data.source.txt: Replace postmodernism generator text with a play. 2017-08-23 13:00:39 -07:00
test_fixtures.py test_fixtures: Fix bug with run_db_migrations for test platform. 2018-07-09 14:17:53 +05:30
test_helpers.py bulk_remove_subscriptions: Pass client object in. 2018-08-01 16:48:31 -07:00
test_runner.py zerver/lib: Change use of typing.Text to str. 2018-05-12 15:22:39 -07:00
tex.py Enable pycodestyle W605 (invalid escape sequence). 2018-07-03 16:54:46 +02:00
thumbnail.py thumbnails: Instruct thumbor to sharpen thumbnailed images. 2018-10-11 15:44:47 -07:00
timeout.py mypy: Add assertion in timeout.py. 2018-04-25 08:58:55 -07:00
timestamp.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
timezone.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
topic_mutes.py zerver/lib: Change use of typing.Text to str. 2018-05-12 15:22:39 -07:00
type_debug.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
types.py zerver/models.py: Modify FIELD_TYPE_DATA, add keyword for field type. 2018-08-21 11:37:51 -07:00
unminify.py unminify: Clean up unnecessary repetition of webpack:/// URLs. 2018-08-03 15:56:40 -07:00
upload.py upload: Fix missing mypy return type annotation. 2018-10-11 16:11:20 -07:00
url_encoding.py notifications: Extract zerver/lib/url_encoding.py. 2018-07-28 15:12:55 -07:00
user_agent.py tests: Move zerver/fixtures to zerver/tests/fixtures for clarity. 2018-04-19 21:50:17 -07:00
user_groups.py zerver/lib: Change use of typing.Text to str. 2018-05-10 14:19:49 -07:00
users.py users: Get all API keys via wrapper method. 2018-08-08 16:35:17 -07:00
utils.py utils: Move random API key generator as generate_api_key. 2018-08-08 16:45:25 -07:00
validator.py requirements: Upgrade pyflakes to 2.0.0. 2018-05-24 11:31:36 -07:00
widget.py tests: Test get_widget_data() helper. 2018-08-24 10:00:25 -07:00
zcommand.py zcommand: Fix broken switch mode message. 2018-08-08 11:29:49 -07:00
zephyr.py Extract a zephyr.py library. 2018-08-11 14:51:26 -07:00