zulip/zerver/lib
Steve Howell 46a49777c4 Add stream ids to urls for stream-related narrows.
This commit prefixes stream names in urls with stream ids,
so that the urls don't break when we rename streams.

strean name: foo bar.com%
before: #narrow/stream/foo.20bar.2Ecom.25
after: #narrow/stream/20-foo-bar.2Ecom.25

For new realms, everything is simple under the new scheme, since
we just parse out the stream id every time to figure out where
to narrow.

For old realms, any old URLs will still work under the new scheme,
assuming the stream hasn't been renamed (and of course old urls
wouldn't have survived stream renaming in the first place).  The one
exception is the hopefully rare case of a stream name starting with
something like "99-" and colliding with another stream whose id is 99.

The way that we enocde the stream name portion of the URL is kind
of unimportant now, since we really only look at the stream id, but
we still want a safe encoding of the name that is mostly human
readable, so we now convert spaces to dashes in the stream name.  Also,
we try to ensure more code on both sides (frontend and backend) calls
common functions to do the encoding.

Fixes #4713
2018-02-19 09:03:11 -08:00
..
bugdown Add stream ids to urls for stream-related narrows. 2018-02-19 09:03:11 -08:00
url_preview zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
webhooks zerver/lib: Remove u prefix from strings. 2018-02-05 12:12:58 -08:00
__init__.py
actions.py org settings: Add button to deactivate organization. 2018-02-18 10:20:38 -08:00
addressee.py refactor: Move topic name checks to Addressee class. 2018-01-25 06:21:01 -05:00
alert_words.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:45:52 -08:00
api_test_helpers.py api docs: Add comment about why the event queue example isn't tested. 2018-02-16 10:07:13 -08:00
attachments.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
avatar.py mypy: Use Python 3 type syntax in zerver/lib/avatar.py. 2017-12-18 11:32:52 -05:00
avatar_hash.py zerver/lib: Use Python 3 syntax for typing for several files. 2017-11-28 17:02:24 -08:00
bot_config.py bot_config.py: Add function for loading config file templates. 2018-01-07 20:05:52 +01:00
bot_lib.py embedded bots: Log warning when bot quit()s. 2018-02-13 14:56:37 -08:00
bot_storage.py zerver/lib: Use python 3 syntax for typing. 2017-11-28 17:15:14 -08:00
bulk_create.py bulk_create: Fix buggy logic for generating recipients_by_email. 2017-11-21 21:07:32 -08:00
cache.py cache: Add ignore_unhashable_lru_cache function. 2018-02-09 18:14:08 -08:00
cache_helpers.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
camo.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:45:52 -08:00
ccache.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:45:52 -08:00
context_managers.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:45:52 -08:00
create_user.py mypy: Amend tos_version parameter of create_user_profile to be Optional. 2017-12-23 01:22:22 +09:00
db.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:45:52 -08:00
debug.py debug: Add facility to dump tracemalloc snapshots. 2017-11-28 15:52:07 -08:00
digest.py Add stream ids to urls for stream-related narrows. 2018-02-19 09:03:11 -08:00
domains.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
email_mirror.py zerver/lib: Remove u prefix from strings. 2018-02-05 12:12:58 -08:00
emoji.py mypy: Adjust 2 emoji.py functions to allow for strict-optional. 2017-12-23 01:22:22 +09:00
error_notify.py errors: Compute deployment metadata on the right deployment. 2017-12-22 11:52:13 -05:00
events.py avatars: Always include a working URL for the user's own avatar. 2018-02-05 12:45:41 -08:00
exceptions.py upload: Enforce per-realm quota. 2018-01-29 16:06:11 -08:00
export.py mypy: Annotate email_gateway_bot in export_files_from_s3(). 2018-02-13 11:40:52 -08:00
feedback.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:45:52 -08:00
fix_unreads.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:45:52 -08:00
generate_test_data.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
hotspots.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
html_diff.py mypy: Remove type: ignores that are unnecessary with new mypy. 2017-11-25 10:06:28 -08:00
i18n.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
initial_password.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
integrations.py integration: Add statuspage.io webhook integration. 2018-02-07 09:59:12 -08: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 logging: Fix corrupted default format for our logfiles. 2018-01-17 18:10:17 -08:00
management.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08: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: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
message.py messages: Calculate value of first visible message ID using cron job. 2018-01-24 17:15:08 -08:00
migrate.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
mobile_auth_otp.py zerver/lib/mobile_auth_otp: Sweep force_str. 2017-12-26 09:09:31 -05:00
name_restrictions.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
narrow.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
notifications.py Add stream ids to urls for stream-related narrows. 2018-02-19 09:03:11 -08:00
onboarding.py bots: Clean up create_realm_internal_bots. 2018-02-06 18:59:57 -08:00
outgoing_webhook.py Add stream ids to urls for stream-related narrows. 2018-02-19 09:03:11 -08: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 push notifs: For group PMs, identify the users in the group. 2018-02-16 16:06:03 -08:00
queue.py rabbitmq: Do a better job of retrying failed connections. 2017-11-29 16:56:29 -08:00
rate_limiter.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
realm_icon.py zerver/lib: Remove u prefix from strings. 2018-02-05 12:12:58 -08:00
redis_utils.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
request.py REQ: Add type parameter to act as hint for typing. 2018-02-13 11:40:52 -08:00
request.pyi REQ: Add type parameter to act as hint for typing. 2018-02-13 11:40:52 -08:00
response.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
rest.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
retention.py zerver/lib: Use python 3 syntax for typing. 2017-11-28 17:15:14 -08:00
send_email.py settings: Added setting to turn on and off realm name in email subject. 2018-02-05 18:01:54 -08:00
sessions.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
slack_data_to_zulip_data.py slack importer: Allocate ids in a single db query. 2018-02-19 08:55:50 -08:00
slack_message_conversion.py slack importer: Add test for checking link in message conversion. 2018-02-05 14:46:39 -08:00
soft_deactivation.py logging: Reduce `create_logger` to new `log_to_file`. 2017-12-12 17:17:08 -08:00
sqlalchemy_utils.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:45:52 -08:00
statistics.py zerver/lib: Use Python 3 syntax for typing for several files. 2017-11-28 17:02:24 -08:00
str_utils.py zerver/lib: Remove u prefix from strings. 2018-02-05 12:12:58 -08:00
stream_recipient.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
stream_subscription.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
stream_topic.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
streams.py stream settings: Add period at the end of error messages. 2018-01-19 13:05:43 -05:00
subdomains.py Convert EmailAuthBackend and LDAPAuthBackend to accept a realm. 2017-11-21 18:23:50 -08:00
test_classes.py api: Return anchor in get_messages when use_first_unread_anchor=True. 2018-02-16 10:06:20 -08: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 django-2.0: Change parameter name to app_label. 2018-01-31 12:07:36 -08:00
test_helpers.py django-2.0: Shift to resolvers from urlresolvers. 2018-01-30 10:53:54 -08:00
test_runner.py mypy: Use Python 3 syntax for typing in test_runner.py 2018-01-23 08:49:42 -08:00
tex.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
timeout.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
timestamp.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
timezone.py schedulemessages: Add handle_deferred_message() to handle requests. 2018-01-19 11:33:11 -05:00
topic_mutes.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
type_debug.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
unminify.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
upload.py zerver/lib: Remove u prefix from strings. 2018-02-05 12:12:58 -08:00
user_agent.py zerver/lib: Use python 3 syntax for typing. 2017-11-18 16:09:04 -08:00
user_groups.py user_groups: Fix reporting of empty user groups. 2017-11-29 16:13:55 -08:00
users.py settings: Limit the creation of generic bots. 2018-01-02 18:12:22 -05:00
utils.py zerver/lib: Use python 3 syntax for typing. 2017-11-21 20:56:40 -08:00
validator.py validator.py: Extend functionality of check_dict(). 2018-01-07 20:04:52 +01:00