Commit Graph

1728 Commits

Author SHA1 Message Date
Zev Benjamin 25d461c8f5 Exclude messages on muted topics when finding the first unread message in a narrow
(imported from commit 3151c401f689cc77e53cf34ffc49c7fd7d0a771a)
2014-02-12 16:23:34 -05:00
Jason Michalski bd9cccffce Use pushState where supported to change the URL hash
This this removed one forced relayout of the page on unnarrow. This
saves about 100ms for me.

(imported from commit 0755f425abbe3d99b8a99765549a5bbf3c620b9a)
2014-02-12 15:19:10 -05:00
Steve Howell afe893b324 Remove filter_term() shim function.
The filter_term() function was supporting the transition
from using tuples for search terms to using dictionaries,
but now all of the JS code should be dictionary-compatible.
(We had already abandoned the tuples safety net on staging,
and a couple days of use have given me confidence we can
pull the shim code.)

The one side effect this change has is that search terms will be
initialized to {} instead of [].  This distinction matters
when it comes to calling JSON.stringify on the search terms.

(imported from commit 1fbe11011d8953dbea28c0657cbf88384d343e00)
2014-02-11 13:52:17 -05:00
Steve Howell ea8d9efa00 Support dictionary-style narrows in back end API.
(We continue to support tuple-style narrows as well.)

(imported from commit 0154c1cba7503471b112ce22f280b619133e0211)
2014-02-11 13:15:42 -05:00
Steve Howell 5b920a5226 Do not mask JsonableErrors from REQ converters.
(imported from commit 8a104c38be4401851953eea95ac0d71a93e5484c)
2014-02-11 11:58:35 -05:00
Steve Howell a2acce2905 Phase out search tuple data structure in messages.py.
The narrow_parameter convert now converts tuples of
(operator, operand) into dictionaries so that downstream
functions/classes deal in dictionaries.  This
affects get_old_messages_backend, messages_in_narrow_backend,
and NarrowBuilder.

(imported from commit 7e8cb887f7872ec687acd8c4857d1d5222ab0d5f)
2014-02-11 11:52:31 -05:00
Steve Howell 2ad006aac9 Make page_params.narrow be a list of dictionaries, not tuples.
This is part of deprecating the old tuple syntax.

(imported from commit f57fe08e0042792b1381c69d1a7f10f92369e838)
2014-02-11 11:45:44 -05:00
Zev Benjamin 92b249a0a1 Replace curly quotes with regular quotes on the front-end before performing a search
(imported from commit 1be7384cea8808f9fceec889ecee6434e9bad6c2)
2014-02-11 11:45:44 -05:00
Jason Michalski 3de8bb7f80 Add a detailed description to event loop errors
(imported from commit b842b59912929d08f3d46dafaf49276d311f4ed2)
2014-02-10 17:08:11 -05:00
acrefoot 233cfc2593 revert changes to deliver_email.py introduced in dc5e78cccb
I'm pretty sure this was changed for purposes of testing

(imported from commit b4b1224a5812ceb248ded3755c0b1801797c1beb)
2014-02-10 15:22:20 -05:00
Steve Howell 6b93315cc3 Prevent browser errors for stream: searches.
When we typed "stream:" into the search bar, the empty operand
triggered an error in the Dict class for an undefined key, because
we were using opts[0] as a "defensive" workaround to opts.operand,
but opts.operand of '' is more correct than opts[0] being undefined.

Now we only fall back to opts[0] whe opts.operand is undefined, and
we emit a blueslip error when that happens.

(imported from commit 88a196d3bc3d67689c36bc036f378da744c652f9)
2014-02-10 15:11:43 -05:00
Steve Howell 9a01c0f3e4 Use new style search operators in node tests.
(imported from commit f54398751c258cd16957885a3bb71256c221715c)
2014-02-10 15:11:43 -05:00
Jessica McKellar bb60e96910 Enable digest emails for CUSTOMER4.
(imported from commit 08b4adb4fd95fdfd661ccbd9cdb5782bf0d743f0)
2014-02-10 13:53:39 -05:00
Leo Franchi 298af207f7 Don't send stream-does-not-exist emails for deactivated realms
(imported from commit d5a5fa18cdd24af46fc72d4dc57b784dcef0beb2)
2014-02-10 13:23:28 -05:00
Zev Benjamin 631783f3cd [manual] Use dedicated Redis server for staging
Before we deploy this commit, we must migrate the data from the staging redis
server to the new, dedicated redis server.  The steps for doing so are the
following:

* Remove the zulip::redis puppet class from staging's zulip.conf
* ssh once from staging to redis-staging.zulip.net so that the host key is known
* Create a tunnel from redis0.zulip.net to staging.zulip.net
  * zulip@redis0:~$ ssh -N -L 127.0.0.1:6380:127.0.0.1:6379 -o ServerAliveInterval=30 -o ServerAliveCountMax=3 staging.zulip.net
* Set the redis instance on redis0.zulip.net to replicate the one on staging.zulip.net
  * redis 127.0.0.1:6379> slaveof 127.0.0.1 6380
* Stop the app on staging
* Stop redis-server on staging
* Promote the redis server on redis0.zulip.net to a master
  * redis 127.0.0.1:6379> slaveof no one
* Do a puppet apply at this commit on staging (this will bring up the tunnel to redis0)
* Deploy this commit to staging (start the app on staging)
* Kill the tunnel from redis0.zulip.net to staging.zulip.net
* Uninstall redis-server on staging

The steps for migrating prod will be the same modulo s/staging/prod0/.

(imported from commit 546d258883ac299d65e896710edd0974b6bd60f8)
2014-02-10 13:23:28 -05:00
Zev Benjamin 6691789cce Add helper function for returning a Redis client
(imported from commit 47f87d388d24343ac6b631181a55287eb8cd4a6d)
2014-02-10 13:23:28 -05:00
Steve Howell b35b3e584c Move some tests into test_unread.py
(imported from commit 64ed0aa6766462f0d56192ddbf68c09b283cee56)
2014-02-10 13:23:27 -05:00
Steve Howell 639a39aace Move some code into test_decorators.py
(imported from commit 7133c0fe1ae3028098b72ac4e14693e540aac4d7)
2014-02-10 13:23:27 -05:00
Tim Abbott 4891da83ad Fix autolinkification in Zephyr mirrored content.
Apparently the "inline" treeprocessor is what runs the inline
patterns.  Also re-enable the rewriting-to-https support.

(imported from commit 2fde2c1f15217a784f26b16db25ee745f424f2f0)
2014-02-10 13:23:27 -05:00
Steve Howell 72ee636571 Use stream_id as key for subscription removals.
Have the server send down the stream's id for removal
events, and have the client use that id to look up the
stream in its internal data structures.  This sets the
stage for eventually just sending the stream id (and not
the stream name) down to clients, once all our clients
are ready to use the stream id.

(imported from commit 922516c98fb79ffad8ae7da0396646663ca54fd0)
2014-02-10 13:23:27 -05:00
Steve Howell 2fb70eb38c Remove tuples safety net for narrow filters on staging.
We have shim code that makes our internal narrow operators
support both a tuple interface and an object interface.  We
are removing the shim on staging to help expose any dark
corners of the code that still rely on operators being
represented as tuples.

(imported from commit f9d101dbb7f49a4abec14806734b9c86bd93c4e1)
2014-02-10 13:23:27 -05:00
Luke Faraone fe55127eee Override realm of uploading user when invoked via the email mirror
Here, we don't want to check the uploading users' realm when determining
message privacy, because that'll prevent non-Zulip users from having
email-mirror-uploaded images. Instead, we just pass along the target
realm for the message explicitly to upload_message_image()

(imported from commit 6891261552135b1f41ff9da55ffe963ee5000556)
2014-02-07 09:45:57 -08:00
Luke Faraone 1e87e7c5c1 Switch authed_upload_enabled to check for a realm, instead of a UP
This is always a realm setting anyway, and it'll make reuse easier.

(imported from commit c64e1901b60051608cee3cf9a6b3aef8630ae237)
2014-02-07 09:45:57 -08:00
Leo Franchi 8ad2ca15cd bugdown: Match up to 8 groups of nested parens
(imported from commit e3d61ec644fdb293322cab0a4449d8e1a27a513a)
2014-02-06 17:26:01 -05:00
Leo Franchi 1c332f5d6a Standardize on 'subscription' as event type name for subscription changes
Our overall guideline is the type names for events are singular, and the list of
events of that type are plural. 'subscriptions' was not following this guideline
and (potentially as a result) had a bug where it was impossible for clients to explicitly
subscribe to subscription change events properly.

(imported from commit 7b3162141fd673746e0489199966c29ea32ee876)
2014-02-06 17:07:38 -05:00
Steve Howell fc78a2cc66 Stop using tuples in search_suggestions.js and Filter.unparse().
This is yet another change related to phasing out the
[operator, operand] tuple data structure for representing
terms in a narrow.

(imported from commit 508e58fc4eebae8a24a8ae59919ba5d94fc66850)
2014-02-06 16:42:38 -05:00
Steve Howell da858afacf Save on S3 bills by passing validate=False into conn.get_bucket().
(See the comments in the code for details.)

(imported from commit e518b9d89aca8a6358c826bf7e7f03381e0560f4)
2014-02-06 12:14:14 -05:00
Steve Howell 90f6eb0661 Keep track of subs by stream_id inside of stream_data.js.
The JS code can now call stream_data.get_sub_by_id() to get
a sub from a stream_id.  Subs have stream_id due to a prior commit,
and we keep track of the mapping in stream_data's subs_by_stream_id
variable.

(imported from commit 409e13d6d2e79d909441a66c85ee651529d15cd2)
2014-02-06 12:09:52 -05:00
Steve Howell 3a96686cbc Add stream_id to page_params.{subscriptions,unsubscribed}
This isn't used by the client yet, but it should be harmless.

(imported from commit e09ac65ca802f5cf16375b8a93d34e0dfbcb76b4)
2014-02-06 12:09:52 -05:00
Steve Howell 0366659bee Return stream_id in /json/get_public_streams.
(imported from commit 985d4e01bd3b589d10e57886d159cfdabe594dd4)
2014-02-06 12:09:52 -05:00
Steve Howell 583dae72a3 Change how the tutorial overrides the default stream color.
The tutorial introduces "engineering" messages that might not
be in the user's normal subscription, and they would get a gray
border if we did not override the stream color.  Before this change,
we accomplished this by overriding the core data structure in
stream_data.js.  Now we are a bit more future-proof; we only
override stream_color.default_color.

(imported from commit 0d0845b72f766912679f5aa7641ae9a60fdbb4ce)
2014-02-06 12:09:51 -05:00
Tim Abbott ca3430862c More correctly disable markdown processing for Zephyr mirrored messages.
(imported from commit 688eead11c329e93c649ea1633dbf56328b5587b)
2014-02-06 10:25:35 -05:00
Tim Abbott d595714a1c Send Zulip notifications when users fill out our interest form.
(imported from commit 2db4b29df8ac2c4cf1929a3df3015809f3faf895)
2014-02-06 10:25:35 -05:00
Luke Faraone e8834c2a9b Modify email mirror regular expression to match messages sent to any zulip.net server
(imported from commit 733a2ff2586c6c4bbe6536a3c42973726c8adb14)
2014-02-05 17:30:11 -05:00
Jessica McKellar 73fc65eb99 Make enter sends the default.
(imported from commit aa256772b381466f02210881214c9882b78b044d)
2014-02-05 13:35:41 -05:00
Jessica McKellar f3d33c1aa0 Add missing stream field to schema migration 0067.
(imported from commit 005743859f03a1a8a154099a72bfbf50d5db890e)
2014-02-05 13:35:41 -05:00
Leo Franchi c218fc98b1 Add one more bugdown test
(imported from commit 43b2ef02c05faf73e4607f76cd00c67e9ba38b8d)
2014-02-05 12:02:27 -05:00
Jason Michalski 556dfd2724 Convert function creation to lambdas for pylint
(imported from commit be22408c13736c17a38c50d08016d181f5dbc635)
2014-02-05 11:04:48 -05:00
Steve Howell 7449079191 Validate schema of events in EventsRegisterTest.
For EventsRegisterTest that test updates to streams and
subscriptions, we now validate the events generated by
the actions under test conform to predicted schemas.

We define the schemas with help from the validators code
that is also sometimes used to validate incoming request
parameters for our views.

(imported from commit b4222b920a588e15cccee4a2349c074ca9697448)
2014-02-04 16:25:32 -05:00
Jessica McKellar da757b7195 Update copyright to 2014.
(imported from commit 733baed61e26be0c07a7e7a605618087df6b0866)
2014-02-04 15:51:53 -05:00
Steve Howell 20c0afca1d Simplify custom matchers in EventsRegisterTest.
We now use the same custom matcher for all of our EventRegisterTest
tests.  The "state" that we're tracking has three lists that aren't
really order sensitive, so we turn them into dictionaries keyed
by the primary keys in their structs.  Here are the lists:

    realm_users
    subscriptions
    unsubscribed

(imported from commit 53787c56722b69640368c1b5d67d5d4757f84718)
2014-02-04 13:22:19 -05:00
Steve Howell 89ea079dce Allow Filter to accept non-tuple-based terms.
We make this happen inside of canonicalize_term.

(imported from commit 0571f6cac8ffdc806af56423cc98134c7493139e)
2014-02-04 13:16:25 -05:00
Steve Howell 112bc5ceda Rename canonicalize_tuple to canonicalize_term.
(imported from commit 07e0c4a6802b0d4b4fbb8ffd3965cab6457d4aeb)
2014-02-04 13:16:25 -05:00
Steve Howell eea8c0d1d5 Allow admins to change the realm's name in the UI.
(imported from commit 2873f872069a41c91beb87728f64fa526dd8a326)
2014-02-04 11:33:19 -05:00
Steve Howell bf85a3cebc Prevent noops in EventsRegisterTest.
We had a couple tests in EventsRegisterTest that weren't really
testing much, because they were going through codepaths with
authentication problems or actions that didn't affect our
user.  We now assert that the code under test generates
events.

(imported from commit c2f61180cb420d45fa95e137433e9456394bf0ff)
2014-02-03 17:38:23 -05:00
Steve Howell 662459b9e1 Fix do_rename_stream to update the stream's email address.
This change also makes it so that the test_rename_stream()
test exercises the code path.  We need to subscribe the user
to the stream in order to generate events.

(imported from commit 77f965efbf5a766eb8de23486e303fa135b2e638)
2014-02-03 17:38:22 -05:00
Steve Howell cfb2312cb6 Fix test_pointer_events by having it call do_update_pointer.
Before this change, the test_pointer_events test wasn't really
testing anything, because it wasn't getting to do_update_pointer
due to authentication issues and having an invalid message id.

Calling do_update_pointer() directly exercises the events code.

(imported from commit bfac27dcfe659689535f54e0c837427c4f9a8284)
2014-02-03 17:38:21 -05:00
Jason Michalski 0e1909f489 Prevent errors in get_updates_success from stopping the event loop
Add try/catch blocks to get_updates_success and send a blueslip error on
errors we catch. This will let get_updates_success return successfully
so that the next call to get_updates will start immediately.

(imported from commit 44d8b85d9d8e930a5552a5fbf4af1d0e5e8c07e8)
2014-02-03 15:28:27 -05:00
Jason Michalski 7b8acfea8e Add support for patching globals in the node tests
Add a helper to patch_global to change a global and then reset it to the
original value after a test file is complete.

(imported from commit 1b65ff6ea8693ad61b7f18f35dafa942429252a8)
2014-02-02 00:47:50 -05:00
Leo Franchi c504435bc3 Blacklist more paths, and fix paths with / to use . instead
(imported from commit 7e1840b7efb5d4f6e27307c3f7c95a9c822c8086)
2014-02-03 14:06:58 -05:00
Tim Abbott f26af47fb6 Center on-page-load narrows on first unread message.
This implementation is somewhat hackish in large part because I think
we're going to be wanting to redo the get_old_messages API somewhat
soon, and this may naturally become a lot cleaner as a result, but
this isn't a lot of code and fixes #2235 part (A) and substantially
mitigates #1510.

(imported from commit 47a2160a44befa9d83190c5cc95b90e92cc5b4cc)
2014-02-03 13:32:02 -05:00
Leo Franchi bb21400732 [localecho] Properly escape HTML in code blocks
(imported from commit 11f7e4f440cdd3a2ef6debb10c3d5a07f4fd1a1a)
2014-02-03 12:57:54 -05:00
Steve Howell 4b095cbad1 Make "assert" global in the node tests.
In the early days of the node tests we didn't have an index.js
driver, so each test set it up its own environment.  That ship
has long since sailed, so now we just require assert in index.js
as a global and make it so that the linter doesn't complain.

(imported from commit 1ded3d330ff40603cf4dd7c5578f6a47088d7cc8)
2014-02-03 10:54:38 -05:00
Steve Howell b52749d2ce Add admin_tab to template test output.
(imported from commit c364ea731f9833061b4fcc3551d5cc5a6a64e739)
2014-02-03 10:30:24 -05:00
Steve Howell 001d447e0f Add stream_member_list_entry to template test output.
(imported from commit cfd420f7337e315a5b3f1665fdc09faaadf0bfab)
2014-02-03 10:30:24 -05:00
Steve Howell ac57c3c16b Move stream_member_list_entry() code in templates.js
(imported from commit 8cca602597a3277d5e80bc1b314cd3fb16ea013c)
2014-02-03 10:30:24 -05:00
Steve Howell 2faf29408a Add scrolling to body of .test-js-with-node.html
(imported from commit 3836ecf6c73576bf9efc021dc091e685a7d0cdb2)
2014-02-03 10:30:23 -05:00
Steve Howell fa69047613 Add node test for people.js (just the basics for now).
(imported from commit 2f4714bedd54c731667160c65280f386061ce803)
2014-02-03 10:16:18 -05:00
Steve Howell d8eb8792ef Make node tests have _ and Dict automatically as global vars.
Having to explicitly call out the underscore/Dict dependencies
in nearly every test has proven to be more cumbersome than helpful.
We never monkeypatch those modules in the tests.

(imported from commit 49ef70c835edd4e22a5869eda9235ef3ffc3c59b)
2014-02-03 10:16:17 -05:00
Steve Howell 945df53280 Remove unneeded expectOne() stub in activity test.
(imported from commit c4d51a16c5dba65491729a648dd5c285f51061c3)
2014-02-03 10:16:17 -05:00
Steve Howell c8a573a0f2 Remove console.log call in echo.js test.
(imported from commit 67fc38b89b2c31974d2121555f6066b095d4279e)
2014-02-03 10:16:16 -05:00
Steve Howell b8b2551e60 Split out test_events.py from tests.py.
(imported from commit a6bfe7db506821fa4747d8bf2ae2af2f4280788d)
2014-02-01 08:14:50 -05:00
Steve Howell 3287169771 Split out test_bugdown.py from tests.py.
(imported from commit 56b67ac630aec42518b946032e594bc251259f38)
2014-01-31 17:47:21 -05:00
Steve Howell e2a6adc143 Verify Cordelia is no longer subscribed inside attempt_unsubscribe_of_principal().
Before this change, we were doing assertNotIn to verify that Cordelia
was not among our subscribers after calling /json/subscriptions/remove,
but we were then catching the AssertionError except for every case.  We
really only want to bypass the assertion when the server had reported
an error.

(imported from commit 0bdaf23047b795721372251724228daf18677df5)
2014-01-31 17:45:50 -05:00
Jessica McKellar ea934cf286 Add backend tests for group signups.
(imported from commit bbb415f40225e6fc16aa8d1edf0b95b37e09f751)
2014-01-31 17:12:10 -05:00
Jessica McKellar 1c5110dbad Send you a registration email if you try to sign up for an existing realm.
(imported from commit 9104096b424f31a22ee7c8b72378f05309bb978b)
2014-01-31 16:40:19 -05:00
Steve Howell f42b526749 Create test_signup.py.
(imported from commit 4dffbed84fbe60d5f5deaedfb614e4eb156b34c7)
2014-01-31 16:02:35 -05:00
acrefoot 171005a9de Make realm-specific lines in api_github_landing shorter
(imported from commit 0b205256de1b6ad30d42a0aa59bf1fe62ab88847)
2014-01-31 15:51:50 -05:00
acrefoot 425b2df4b4 Filter out synchronize messages on github pull requests for CUSTOMER23
(imported from commit 7032edd79738eba6119eedf15acdb77ef04a8a3c)
2014-01-31 15:35:06 -05:00
Luke Faraone 0f96d2229e email-mirror: Also accept original recipient via argv
(imported from commit 9a29fe6906713e75ee208c924b67211575c011f2)
2014-01-31 15:33:15 -05:00
Luke Faraone abc0be9c8c email-mirror: Catch ValueError returned by decode_email_address
This indicates that we didn't get the right sort of email address passed to us.

(imported from commit 26881d537296ea3d21ac29ff1b67ab260f838e13)
2014-01-31 15:33:15 -05:00
Luke Faraone 179be2051d email-mirror: Encode messages as utf-8 before parsing
(imported from commit 7b896b1e24d382f024ab0a487d448d20448f0cca)
2014-01-31 15:33:15 -05:00
Luke Faraone 9a1159fb09 Include email in response to API key retrieval
This helps our iOS app when authenticating via Google Apps, since we
don't get the users' email address when we get the ID token from Google.

(imported from commit 066639958c1e8f7845505ebdabc37282defca5c5)
2014-01-31 13:50:19 -05:00
Steve Howell c67ae498ff Extract test_external.py
(imported from commit 838dd34f101025ba161291992a56972cd374104b)
2014-01-31 13:14:19 -05:00
Jessica McKellar 9b1090506e Add tests for admins unsubscribing principals.
(imported from commit a2599ddc55ccddde3d39cb125bb1d5079772c652)
2014-01-31 11:23:14 -05:00
Jessica McKellar ec88b3abaf Give admins the ability to unsubscribe people from streams.
(imported from commit 7ec130a233a2976ad0be6f8a7b59c33ce0e0cf3f)
2014-01-31 11:23:14 -05:00
Jessica McKellar c4c5ac210e Convert stream member list to a handlebars template.
We had been concatenating strings.

(imported from commit 2d50d3f750a450029d39553ea9cd99ef824a149b)
2014-01-31 11:23:13 -05:00
Jessica McKellar db4cbcd438 Make /json/subscriptions/remove support principals.
Admins will use this to unsubscribe other people from streams.

(imported from commit 5b42d5852ddcfa2c8776482c45471828c4daf453)
2014-01-31 11:23:13 -05:00
Steve Howell 5acf8ac0b6 Split out zerver/test_messages.py.
(imported from commit 61c40418bad4628a8f98298587a0e0defa9302bd)
2014-01-31 11:22:49 -05:00
Jessica McKellar 00673534ba digest: log send failures and unsubscribe hard-bounce emails.
(imported from commit 3ffcc335d4d3ad3955da8981ff1129888fe681a4)
2014-01-31 10:57:31 -05:00
Tim Abbott e505583f52 Split out new module people.js for tracking people.
(imported from commit fb9b769819ade25d1d3d6e452e68c7ee8651cfdd)
2014-01-30 17:32:58 -05:00
Steve Howell de7708ed6e Handle id:<msg id> searches with multiple terms.
If you do a search like id:5 topic:foo and message #5
does not have the topic "foo", we now return zero results.

(imported from commit 8121fac1dbd79024c51af1f310d831dab9242e36)
2014-01-30 15:57:32 -05:00
Steve Howell b18307b667 Start using operator/operands internally in Filter class.
By having Filter.canonicalize_tuple() call filter_term(),
we make it so that Filter objects get operator/operand
fields in their terms when we initialize this.

This mostly caused test breakage for tests that were doing
assert.deepEqual; now we just check to make sure that the
field we need are there.

(imported from commit 63b2516dc72edeb11e76a1fa4442570b9c605baa)
2014-01-30 12:53:08 -05:00
Steve Howell 12626ead66 Populate terms with named fields in filter_term().
Consumers of Filter.parse() can now reference
search term parts like so: term.operand, term.operator

(Legacy code can still use term[0] and term[1].)

(imported from commit 06d0da65f13f1eb7e3ba8eac0e69448aab2735ab)
2014-01-30 12:53:08 -05:00
Steve Howell df19f4283d Split up test_parse_and_unparse() into two tests.
(imported from commit da0fd90de110b4789dbcc99d2ce7337169273bd3)
2014-01-30 12:53:07 -05:00
Tim Abbott 7ef68f19da Log operation and flag in update_message_flags.
(imported from commit c720224b0b3bf2f8ac1fd686acac143ea3f64994)
2014-01-30 12:48:36 -05:00
Jessica McKellar 82fc7a0a39 Show autoscroll forever option for all of CUSTOMER31.
(imported from commit 6c8826894daa2fc3777da0e9affe49d7a6d77296)
2014-01-30 11:15:56 -05:00
Steve Howell cbec4126c8 Order the sections of fetch_initial_state_data() alphabetically.
(imported from commit cef5471660df1bdacf7d5ea18c8c629aec3e4bf4)
2014-01-30 05:40:45 -05:00
Steve Howell 9a0aca6878 DRY event_types checks in fetch_initial_state_data().
(imported from commit 9eead1178fbcd95b61a5deb7b548485702a1056f)
2014-01-30 05:40:45 -05:00
Steve Howell 6a327a2a9c Reorganize imports to minimize vertical space.
After extracting test_subs.py, I went back and tried to put as may
imports on a single line as possible without going over 80 chars.
I did this for the zerver.lib.actions section in tests.py too, where
some imports had been removed.

(imported from commit 6ec5bad0a5314aed597f3c55aaf31611598b84ff)
2014-01-29 17:22:30 -05:00
Steve Howell 27aeebddb7 Extract test_subs.py
(imported from commit 9400eb56bce5b180c7c8ce3837906640ac80eef5)
2014-01-29 17:22:29 -05:00
Leo Franchi bea12cdadd Remove stray } from name of queue
(imported from commit 84a29db1c3cb3b3b1e2e180b9acfeff61c07d938)
2014-01-29 15:46:04 -05:00
Tim Abbott 7151af5119 Fix disabling of markdown for mit.edu.
(imported from commit 952456ddab8112bf62e6d17e29325c6d974be7a5)
2014-01-29 14:39:53 -05:00
Steve Howell 7dbebf4e05 Improve test-backend output (show module name).
We now show the module name (e.g. "tests or test_hooks") in the
test output.  This change also eliminates the intermediate use
of slashes in the test_name var, which was passed to
bounce_key_prefix_for_testing().

(imported from commit 58e73301037a0b07d7e437514c247f7cb559420e)
2014-01-29 14:28:55 -05:00
Steve Howell 233ce4360f Handle realm_name in fetch_initial_state_data/apply_events.
Instead of having home() set page_params.realm_name directly from
the user_profile object, have fetch_initial_state_data() set it.
This is more consistent with how we treat other data, and it protects
us against a race condition where realm name updates arrive during
the DB fetching.

(imported from commit 545e3bd73f150438126e3f941e9bebc7aa1d0614)
2014-01-29 13:37:58 -05:00
Jessica McKellar da3fc3fede Add tests for stream deletion.
(imported from commit bfe52c6c5be3fc36907071f9ff096cf74aa9fb22)
2014-01-29 13:09:50 -05:00
Jessica McKellar 7085dca1ce Fix the Admin page not working for newly-knighted users.
Previously, while you'd get the event saying you'd been knighted,
which would make the Administration tab visible, clicking on the tab
would error out because the admin page HTML was never sent over on
page load (since you weren't an admin at that point).

(imported from commit 90ad351533515bebece630d67baf4b142d320754)
2014-01-29 12:41:22 -05:00
Jessica McKellar ac3f93d760 Don't let deleting a non-existent stream 500.
(imported from commit f112cde743eb33608f30ae5448ce2db2a34b8e62)
2014-01-29 12:41:22 -05:00
Jessica McKellar c0bc7abbc5 Allow admins to delete private streams they are on.
(imported from commit fe27ba760abf7375242502bff694667bf34bccdf)
2014-01-29 12:41:21 -05:00
Jessica McKellar 20f2baa614 admin: Show a lock icon next to private streams.
(imported from commit 26829016cf219b55aef0ef45187667b0a9bd86fd)
2014-01-29 12:41:21 -05:00
Jessica McKellar eeb8464f4d Don't expose deactivated streams to users through clients or API.
(imported from commit c32715255b3286f52fb313d35659f9357082603a)
2014-01-29 12:41:21 -05:00
Jessica McKellar ac06d8870f Make a deleted stream actually appear deleted from the perspective of users.
In particular, make the stream history inaccessible and free up the
name to be re-used.

(imported from commit 6063b7a484ed0ba0279a17d2b3e9a92b5ef1f762)
2014-01-29 12:41:20 -05:00
Jessica McKellar 99d58fe8b5 [schema] at a `deactivated` field to Stream.
From a user's perpsective, the stream has been deleted. From the
database's perspective, the stream has been deactivated -- the stream
messages still exist.

(imported from commit b08b30b2a822663e17d64182af1fb160c2193344)
2014-01-29 12:41:20 -05:00
Jason Michalski de522029d5 Switch to DiscoverRunner from DjangoTestSuiteRunner
(imported from commit 77dd694b20509bfdc7327186e0524d686f0415f7)
2014-01-29 11:34:31 -05:00
Jason Michalski a028bda264 Allow up to three twitter previews per message
(imported from commit 566b786f9ac0582f15f8f77363f63932ee5ceec8)
2014-01-29 11:00:41 -05:00
Steve Howell 582f7eb24d Extract test_hooks.py.
These classes are in test_hooks.py now.  They still run as part of
the regular suite, so this is just to make it easier to navigate the
files.

  JiraHookTests
  BeanstalkHookTests
  GithubV1HookTests
  GithubV2HookTests
  PivotalV3HookTests
  PivotalV5HookTests
  NewRelicHookTests
  StashHookTests
  FreshdeskHookTests
  ZenDeskHookTests

(imported from commit 26a9572dd5170f9516e739d587a119bd1f87959a)
2014-01-29 10:56:00 -05:00
Steve Howell 58ca46530e Remove unused API_KEYS var.
(imported from commit cfffdd9ea4a2e4a54f9483f57cc87fa9857f098b)
2014-01-29 10:55:59 -05:00
Steve Howell 12c095fd4b Extract test_runner.py
The file test_runner.py has our subclass of DjangoTestSuiteRunner
and various methods that help it work.

(imported from commit 8eca39a7ed3f8312c986224a810d4951559e7a8b)
2014-01-29 10:55:59 -05:00
Steve Howell 5ba716cf42 Add test_admin_restrictions_for_changing_realm_name().
(imported from commit 3c6d9482fc6a0321d1584a653edd94475e92129e)
2014-01-29 10:16:58 -05:00
Steve Howell 1b987b0803 Add API for changing realm names.
(imported from commit 4bc117ae2ca4acb8896b45cd7058556317287ef8)
2014-01-29 10:16:57 -05:00
Steve Howell a8bf9dfaf2 Add event support to do_set_realm_name().
(imported from commit c0abac9867aa211bb03e20a5dc1378cf476619ce)
2014-01-29 10:16:56 -05:00
acrefoot 4562e43aee enable show_autoscroll_forever_option for Chris Aurelio
(imported from commit c0ae45fd5f6696d18383ea7451d25397a8102302)
2014-01-28 17:57:02 -05:00
Steve Howell 34f6c705e9 Rename update_realm_filter() to flush_realm_filter().
(imported from commit f52b45b627f73ece8c7348451cea48f32142e94e)
2014-01-28 17:40:01 -05:00
Steve Howell 75555ff16c Rename update_realm_emoji_cache() to flush_realm_emoji().
(imported from commit fc97377113a3c2701addcc6fb0c5d1bc6f52933d)
2014-01-28 17:40:01 -05:00
Steve Howell 912f96e7ec Rename update_stream_cache() to flush_stream().
(imported from commit c67844ef7feb1924ec495c4451e33b56b237c88a)
2014-01-28 17:40:01 -05:00
Steve Howell 1e948d2d51 Add do_set_realm_name/get_realm_name.
(imported from commit cf1cd9e1de1169f542e5f0690ef94a576dfd5663)
2014-01-28 17:40:01 -05:00
Steve Howell c5edb58cd4 Turn flush_realm() into a post-save hook for Realm.
(imported from commit 97e44b51e2b35b4b5b64b4008f6a8d3585a26e33)
2014-01-28 17:40:01 -05:00
Steve Howell 57030f53cc Use cache_set_many() in the flush_realm() code path.
The function update_user_profile_caches now operates on a list
of user_profiles, so callers like flush_realm() can benefit from
having a single cache_set_many() call.  This slightly complicates
the call from flush_user_profile().

(imported from commit e064871d849b873c6ca388f00d4f7afaba1bf222)
2014-01-28 17:40:01 -05:00
Steve Howell bbafd1dda8 Have flush_realm() make O(1) cache_delete() calls in a couple places.
For the realm-wide caches of active user dicts and alert words, just
make a single call to cache_delete() when you are deactivating a
realm.  Before this change, we were doing O(N) cache_deletes as
part of the code path through flush_user_profile().  Now we just
call update_user_profile_caches() directly to clear the user_profile
caches.

This change also sets us up to turn flush_realm() into a post-save hook.

(imported from commit 699b4ea226ae15fc8c402cb4bc64ff6bdc041fc2)
2014-01-28 17:40:01 -05:00
Steve Howell 0eed5d20d2 Create cache.flush_realm() and call it from do_deactivate_realm().
This is a slight behavior change, as we now flush user_profile
caches for bots as well as humans.

(imported from commit 24c72c44d851ee4c66a67a4728cd6c548faeedcd)
2014-01-28 17:40:00 -05:00
Steve Howell dbc1172a20 Extract update_user_profile_caches().
This function updates all the user_profile-related caches
that are keyed on a per-user basis.

(This had some test coverage already.)

(imported from commit 37979400514a7b46a6dcb7e36665b0fee2f3c525)
2014-01-28 17:40:00 -05:00
Steve Howell 3776d11c3a Rename update_user_profile_cache() to flush_user_profile().
(imported from commit 1fddb8b8dfe7943ace70c51d762eeae2ee1203a0)
2014-01-28 17:40:00 -05:00
Steve Howell aca5586cc0 Fix command line help for ./manage.py show_admins
(imported from commit d5de8832214db7b8a754f155b225e706b655260b)
2014-01-28 17:40:00 -05:00
Leo Franchi e716a75d22 Properly render at-all and at-everyone mentions locally
(imported from commit 9533b83dba6a61f6c09da755fca54e8a24ad61e6)
2014-01-28 17:37:10 -05:00
Jason Michalski 05e00575bb Only send stream update events to clients that need them
Stream name and descriptions updates were being sent to all of the
active users on a realm. They are now only send to users who would have
information about that stream.

(imported from commit 2621ee8029f7356bf44ec493d7b5361bd546a8f5)
2014-01-28 17:12:15 -05:00
Steve Howell 1dd674c7ae Make import statements take less vertical space.
(imported from commit 4d5901491d6c8c21fe045ac9751bc80613f94a59)
2014-01-28 17:04:51 -05:00
Steve Howell 80af0b8134 Move AuthedTestCase to test_helpers.py
(imported from commit bdaf63c5ed4e8d7c19e9c19f79151e8e7885c53e)
2014-01-28 17:04:51 -05:00
Steve Howell a8f2ecf48c Move context managers to zerver/lib/test_helpers.py
(imported from commit f57678fcb68aecdbb70ad86cd02cc5441695aaf5)
2014-01-28 17:04:50 -05:00
Leo Franchi ffb816391c Use our own fenced code preprocessor, fixing output mismatches
(imported from commit 3d4abb1043349e30adf265342ee7c946a99b3ce2)
2014-01-28 15:35:32 -05:00
Steve Howell 8aaf1cf8c2 Add API for removing default streams from a realm.
(imported from commit 06433126e31b372dff8a23eb8bbea14515138c85)
2014-01-28 14:30:37 -05:00
Steve Howell af9a1e967f Add API for adding default streams to a realm.
(imported from commit 0f48f722dd618c0d054aafdf3d931ef014a5c3ee)
2014-01-28 14:30:02 -05:00
Steve Howell 4cf677eb6d Add do_remove_default_stream().
(imported from commit 559dcd93ca43f4ffba58119fe429df3f6843fd63)
2014-01-28 14:28:51 -05:00
Steve Howell 38668adcec Extract DefaultStreamTest.get_default_stream_names().
(imported from commit e51ca97ca820778c161e24f4309517fc5f991dda)
2014-01-28 14:28:51 -05:00
Steve Howell 4ed661ca71 Add do_add_default_stream().
(imported from commit 34c96bdc3f5c2f7f119d2efe1606316878d34d03)
2014-01-28 14:28:51 -05:00
Steve Howell b5e0eb35be Add test_set_default_streams().
(imported from commit 359132c6c31c6de7524df3e9f34dff22273a61bc)
2014-01-28 14:28:50 -05:00
Steve Howell af00f4609a Extract get_default_streams_for_realm().
(imported from commit 6ef41615eb660fd161bfd53de09fea56266ddd2d)
2014-01-28 14:28:50 -05:00
acrefoot a126292431 Add github issues tracking to CMU's realm
(imported from commit 5f4f00888687d14ddf6977e6b2de188294e8e44f)
2014-01-28 13:56:14 -05:00
Tim Abbott 439959592f Rename build_offline_notification_event to build_offline_notification.
(imported from commit 88f4e35847faae999d72e804c9dc4d01ce51889f)
2014-01-28 13:42:50 -05:00
Tim Abbott 3fddc11cc2 Process message events more similarly to how other events are handled.
(imported from commit 5ebcd7a10fe54a8ecafb9550348a1e0418d4cbda)
2014-01-28 13:42:50 -05:00
Tim Abbott 934ac3fc88 Rename local variables inside process_new_message.
For greater clarity and in preparation for making message events be
processed more like how we process other events, we are changing:
  data => event_template (for the input event we're processing)
  event => user_event (for the event sent to a user's clients)
  event => notice (for the missedmessage notifications)

(imported from commit 30c76c3588ebe2ac44e27e17a39df4a1403979cb)
2014-01-28 13:42:44 -05:00
Tim Abbott 1a90d50a1f Clean up parsing in process_event and friends.
(imported from commit 408f9171fa481fa678dd6e27ea4cc610add232d5)
2014-01-28 11:01:30 -05:00
Tim Abbott 1cc3a6a903 Switch update_message to a generic event type.
(imported from commit db3c4d2326727ca05d25ab43ebc061d3e5cd0630)
2014-01-28 11:01:30 -05:00
Tim Abbott 167b883c38 Clean up the update_pointer tornado notification code path.
(imported from commit 94997dea54e6cc8e5b5a314a95d6114773462608)
2014-01-28 11:01:30 -05:00
Tim Abbott 0507b1bb06 Split out do_update_pointer from update_pointer_backend.
(imported from commit 25da1b324a9170677b0f6fc2e29841d6f2af9dec)
2014-01-28 11:01:29 -05:00
Tim Abbott 5ccb8b1bea Add tornado_callbacks.send_event with clean API for sending events.
(imported from commit 07209a1744ac9372273858a3e69e8a2fd9e06e06)
2014-01-28 11:01:29 -05:00
Tim Abbott 98e4d7aeb3 tests: Change tornado event capture code to a better hook.
(imported from commit b3ef0ba2108ea8d6d7df31cab72b43a10bdeab93)
2014-01-28 11:01:29 -05:00
Tim Abbott 01dedb67f4 tests: Add assert_length helper function for query count asserts.
This way, when one of these asserts fails, the relevant failure will
be printed so that we can look at it.

(imported from commit c0dfe602b987174d151981c083c66fdfdeb01253)
2014-01-28 11:01:29 -05:00
Tim Abbott bf0b0e24f2 Transition code for the Tornado message format changes.
(imported from commit 0f4a38db07517068d503f7a295c0c58ea4a02cdf)
2014-01-28 11:01:29 -05:00
Tim Abbott 3bcba79e77 Send message data to Tornado via rabbitmq instead of memcached.
This is a lot simpler and eliminates a possible failure mode in the
data transfer path.

(imported from commit 19308d2715bbd12dc9385234f1d9156f91bdfae0)
2014-01-28 11:01:29 -05:00
Jessica McKellar fd3fc095b5 freshdesk: allow subject field to be empty.
The field should still be present, but Freshdesk now lets it be empty.

(imported from commit a317043947ecb6e234efabaaf6967ebe35e154a8)
2014-01-27 21:50:00 -05:00
acrefoot 07344bb283 Fix github hook when receiving commit_comments
Apparently (according to our error logs) it's possible for there to be a "position" but no "line" [number]
on a commit comment. According to the docs, line numbers are deprecated, although they're probably
more useful than diff line number (aka 'position').

(imported from commit d48f9efbe42293c9585442bd521b1843042eca65)
2014-01-27 16:39:40 -05:00
Leo Franchi 0917a27b79 Document realm filter regexp oddities
(imported from commit 987d8ea679f40c31f2fe2280b6d585f82b20e606)
2014-01-27 13:43:55 -05:00
Leo Franchi b83be2cd32 Properly avoid realm filter work in non-local-echo case
(imported from commit 9c01109e6900509690841306fb4a23464321de61)
2014-01-27 12:30:42 -05:00
Leo Franchi a82bc689e8 Render /me message on the frontend
(imported from commit ce4a44624b7084464d5c6ce8e04eef03ee23c9e3)
2014-01-27 12:30:42 -05:00
Leo Franchi 883157893c Use a UserMessage flag to indicate /me messages
(imported from commit ea503b0d3eb6e90230c0859be96ede60faf5c2bd)
2014-01-27 12:07:48 -05:00
Leo Franchi 5441409044 Consolidate emoji tests and test on frontend as well
(imported from commit 3244a93209b56b655b80633713a3f58ae46d06ff)
2014-01-27 12:07:48 -05:00
Steve Howell 6fff91493c Fix bug in apply_events() for removing subscribers.
To mutate the state for removing subscribers, the previous
code was essentially adding in event['subscriptions'] to
state['unsubscribed'], but that was a naive approach, since
the event object only has the name of the subscriber, and not
the full subscription info.

We instead effectively copy records over from state['subscriptions']
to state['unsubscribed'], and we also do surgery on the subscribers
that made me need to add the user_profile parameter to apply_events().

With the code apparently working now, I was able to remove the
match_except() test helper and use a more thorough matcher in
the test on do_remove_subscription().

Part of fixing the "remove" case was cleaning up the "add" case,
since they aren't quite symmetric opposites of each other, although
under this refactoring they now share the new name() helper.

(imported from commit 0deab67d0c7b08b3ad962493efae3762a835fd29)
2014-01-27 10:41:29 -05:00
Tim Abbott 6d64427c46 Fix email mirror.
(imported from commit 73c109db6e821b139203f662023ed780fcee0f24)
2014-01-24 18:11:20 -05:00
Tim Abbott da90d63046 Split out zerver/lib/notifications.py from actions.py.
(imported from commit 784b82834ee4fcb4431e77f8fb1c526f8eec82ad)
2014-01-24 17:33:56 -05:00
Steve Howell cf16d95437 Move some imports in tests.py to the top of the file.
(imported from commit 588c38cb94161092b517848839977d45325633b4)
2014-01-24 16:47:20 -05:00
Steve Howell 1d95812770 Add is_admin to page_params.
Because full_name and is_admin changes go through many similar,
generic codepaths, it is almost more work at this point to keep
is_admin out of page_params as it is to just put it in.  So
I put it in.  This should pave the path for showing admins in
the GUI.

This commit actually starting by my adding a test
that calling apply_events() with the notification you get
when calling do_change_is_admin() updates
state['realm_users'] to be similar to what you would get
out of fetch_initial_state_data().  We didn't have test coverage
there before.  Making that test pass forced my hand to
either add is_admin to page_params or to special-case
apply_events() not to update page_params with is_admin.  I
chose the former approach.

(imported from commit 1e49d59c66540014284529c29d5007224be6a0c6)
2014-01-24 16:34:12 -05:00
Steve Howell 4ad8ad2b5a Extract get_realm_user_dicts() from fetch_initial_state_data().
(imported from commit 2f0f52d90eba22a4b72bd6173e60ab463482b7d6)
2014-01-24 16:34:12 -05:00
Leo Franchi 3b07c164fb Fix realm filters with multiple groups
(imported from commit 9652cf8acbe51e25bcf053980b6caa9565b57e45)
2014-01-24 16:09:44 -05:00
Leo Franchi 97fb3e74af Support subject links in local echo
(imported from commit 916fecccc834053ea0354936119c6591af273938)
2014-01-24 16:09:44 -05:00
Jason Michalski 1f98c4f4ce Add support for updating the stream description
The stream description can now be updated, but the UI is not yet updated
on success.

(imported from commit f45e0a9d5138d828ae98d6d49645ab3ddc966704)
2014-01-24 14:47:44 -05:00
Jason Michalski 4104f00229 [schema] Add description to streams and display it
A description was added to the streams and it is now displayed on the
subscriptions page. It can not be set in the UI yet.

(imported from commit 81d08b65eee42dba87cd99dd5bd30106c4eb6c6a)
2014-01-24 14:47:44 -05:00
Jason Michalski 0c9271212d Added a admin settings div to the subscription template
(imported from commit 8aaa55d90a78ab1c4b182efeb4cac5b7d0677822)
2014-01-24 14:47:44 -05:00
Jason Michalski 1184a4f824 Update GetOldMessagesTest to get recipient ids from the database
The natural order of a query in bulk_create_streams will change when the
Stream model changes. We now query the database for the expected values
so the tests will continue to pass after schema changes.

(imported from commit 410739adde1077bf066df29a11544a627607481a)
2014-01-24 14:47:44 -05:00
Steve Howell b82ed52e7b Rename page_params.stream_list to page_params.subbed_info.
This matches page_params.unsubbed_info, plus it sets up to
add something like page_params.stream_dict without being confusing.

(imported from commit 2d40deb779e5c7a488d6952560b4119094bbc0d8)
2014-01-24 12:23:41 -05:00
Luke Faraone 1c67d05e5f Handle duplicate GCM registrations by dropping the old ones.
While we're at it, lets comment up the function so I know what this is
doing next time :)

(imported from commit e745be75fcd6dbce9997e1d73464619fc8b73996)
2014-01-23 19:21:28 -05:00
Jessica McKellar c01c7285db Add a test for !modal_link.
(imported from commit fac5adf7d596eaca4ea8ed860ddaceb496e72c7a)
2014-01-23 17:06:29 -05:00
Jessica McKellar ee7a1f0953 tutorial: add helpful in-app links and be consistent with realm welcome message.
(imported from commit 2057dbe2606d32721192021ed2046ed9f412d8a7)
2014-01-23 17:06:29 -05:00
Jessica McKellar 086eab8bb5 bugdown: support modal in-app links in messages.
(imported from commit 0e3c0ff61cf9a84bae81e37b0a6d79831dea9224)
2014-01-23 17:06:29 -05:00
Jessica McKellar 117c98796e Send some messages to warm up the first user in a realm.
(imported from commit b4d92d474b27c9a0eabf99576a0f441a7d919106)
2014-01-23 17:06:28 -05:00
Jessica McKellar a62c720e0e [manual] Add back json_tutorial_send_message endpoint.
Before deploying to staging, create the tutorial bot:

email: welcome-bot@zulip.com
name: Zulip Welcome Bot

(imported from commit 2f337a00ffac888b121975bdb95a89cf2f8ab3a7)
2014-01-23 17:06:27 -05:00
Jessica McKellar ebd6408ec7 Make the tutorial shorter, and visually highlight important concepts.
(imported from commit 543d0ff838edbc2148df4b8d08331c793c7af4f6)
2014-01-23 17:06:27 -05:00
Jessica McKellar 7702461700 Unconditionally subscribe new users to the notification stream if it is public.
(imported from commit 7d7f14eb6fee43ca6f18adddda741665ce22d24a)
2014-01-23 17:06:26 -05:00
Leo Franchi 1c9a59fd3f Add newlines outside code blocks in marked.js to match bugdown
(imported from commit 7618260dbfa11209b3cc45d007407476897c2a20)
2014-01-23 16:50:29 -05:00
Leo Franchi aee127cdbe Share bugdown test data across frontend and backend tests
(imported from commit b278a60b5899cd336840e71d8e632e2b31338d82)
2014-01-23 16:50:29 -05:00
Leo Franchi 07dae5fcb9 Locally echo messages that are loaded from storage and resent
(imported from commit 474a0994d82bdbff9c98b453d3e1e4dc7732f5bd)
2014-01-23 16:28:59 -05:00
Leo Franchi 56d9446c41 [socket] Use socket req ids that contain queue ids
(imported from commit 781eafe60bf117d79ce3a30deea02ec1e875060a)
2014-01-23 16:28:58 -05:00
Leo Franchi e24dcb3952 Report proper displayed/receive time and local echo data
(imported from commit 63aba6ef05b1a55d61e975831ebbaa074f8ea74f)
2014-01-23 16:28:58 -05:00
Leo Franchi 7743aa191c Pass through local_id and sender_queue_id in non-rabbitmq case
(imported from commit 8989225a0943b39e45bd5debe405acb9768acc8c)
2014-01-23 16:28:58 -05:00
Leo Franchi 97a69cbc12 Convert realm filters in client-side markdown parser
(imported from commit ef12b9ed28cf0176881d33caa1973fe4d9b90d0b)
2014-01-23 16:28:57 -05:00
Leo Franchi b7b322d8cd Parse user mentions client side
(imported from commit b2919912792b8a02afad45f48e1c8df4783b93a9)
2014-01-23 16:28:56 -05:00
Leo Franchi 0f8cb25d89 Parse emoji client-side
(imported from commit 3bf150d866689b301ee31218cb3d570119b766cf)
2014-01-23 16:28:56 -05:00
Leo Franchi 87ce2bd0be More standardization of client-side markdown parsing
(imported from commit bc010d69ee92758481d3645f84f2a68dcafacf7a)
2014-01-23 16:28:56 -05:00
Leo Franchi 0b2ba855f9 Add helper for rough determination of markdown client-side
(imported from commit 3b6439f54e55fbca0f586392d1a0add4d7f694b8)
2014-01-23 16:28:54 -05:00
Jason Michalski 6d332151d2 Fix confusion of type_id and type in tests
test_successful_subscriptions_notifies_pm and
test_successful_subscriptions_notifies_stream were both asserting
type_id and not type with the Recipient.PERSONAL and Recipient.STREAM
values.

(imported from commit 26492f9c725c278ac81570a135dc9cc203213cbd)
2014-01-23 14:58:53 -05:00
Steve Howell 2283aa52cb Use "stream" as our type for updates to Stream.name.
(imported from commit 2eedbff5fac77b9e654ba88900167048573e4056)
2014-01-23 13:27:11 -05:00
Steve Howell bc6da3717f Fix obscure bug with page_params.is_bot.
If a name change event arrived during the call to
fetch_initial_state_data(), we would call apply_events() to
update the data structure that eventually becomes page_params.
Our update code, instead of surgically updating the fields, was
just overwriting the record, which led to is_bot being taken
out of the record when only full_name was in the event.

Apart from fixing the "update" case to do the right thing,
this commit also does a bit of cleanup on the code handling
"realm_user" events to make it more generic in how it does
add/remove/update.  If we could standardize our events a bit
more, this could eventually lead to DRYing up some of the
apply_events() code.

(imported from commit 772e2fcd6a5605ccb6e8d1bc499b5f336934cf3c)
2014-01-23 13:01:04 -05:00
Steve Howell 10533291e9 Clean up EventsRegisterTest.do_test().
Use var names hybrid_state, normal_state, and action, and DRY
up the calls to matcher/self.assertEqual.

(imported from commit 6e537e54a9ba85a4711311fdab0a3ba3db9de972)
2014-01-23 13:01:04 -05:00
acrefoot d8b15f4202 Improve Backend for Github integration
Refactor github webhook to handle multiple payload verions
split github fixtures into v1 and v2 versions

Group together all realm-specific logic. When v2 becomes available, we can
ask someone in each org to make the changes via the Github Hook configuration, and
slowly remove the special cases.

TODO: when our pull request for github-services gets merged, the integrations page
should say to look for Zulip instead of Humbug

(imported from commit 4790a730010b37186640f9996291afa6e8f96c2b)
2014-01-22 16:44:34 -05:00
Steve Howell 90ba39d02e Use do_change_is_admin() in the tests.
Call the action method instead of the lower level
assign_perm and remove_perm methods.

(imported from commit 8728fdb2ebfcfc0eacabfd242b229c32a27da2eb)
2014-01-22 14:43:29 -05:00
Steve Howell 551e7513b3 Use do_change_is_admin() when realm's first user registers.
(imported from commit 64b4db2c03a519ced9cd3bf5b17c0657c21d6cb2)
2014-01-22 14:43:29 -05:00
Steve Howell d431206a3f Have the "knight" command use actions.do_change_is_admin.
Using the higher level function has the benefit of sending
notifications to clients.

(imported from commit d680e3305b216fec3462479c696e572d008ee4c2)
2014-01-22 14:43:28 -05:00
Steve Howell 3b12e63d8d Send notifications for is_admin changes.
(The client doesn't do anything with them yet.)

(imported from commit df2f406644fe271af53e32a6b3521752b6a1ac41)
2014-01-22 14:43:28 -05:00
Leo Franchi c0fdbf81cf Use the feedback connection for getting APNS feedback
(imported from commit d371188e0437606b3ff435ee9c005cee2849f6ae)
2014-01-22 13:50:15 -05:00
Jason Michalski f05d817fb4 Fix building subscribe buttons for realms with a notification stream
Add a test sending new stream notifications to realms with a
notification stream and fix a bug in building the subscribe button
markdown.

(imported from commit 37985d8c0603ae206bef34b9522231c00bc8c572)
2014-01-22 13:08:41 -05:00
Leo Franchi 4dac0e7d37 Print out APNS tokens in b64 format for ease of use
(imported from commit d38eb1629a599681c42f1f8d817c90229b547516)
2014-01-22 11:59:02 -05:00
Leo Franchi 6903d87809 Retry on APNS failure / retry request
(imported from commit b9d1c414731de7a4ad5d3bc93c3dce1286cbdb38)
2014-01-22 11:59:02 -05:00
Leo Franchi c0d3b2fd89 Remove APNS tokens from our database if we get an invalid token notification
(imported from commit 5ec3c053684f9574a31103e7821309de883baa82)
2014-01-22 11:59:02 -05:00
Leo Franchi 226d894257 Prefix apple-specific APNS logs with APNS:
(imported from commit 2fa866b3a626c3e42f340bc68e8bc27aef6fd521)
2014-01-22 11:59:02 -05:00
Jason Michalski d4aece75a5 Add JS to for the inline subscribe button
Add javascript to handle the button clicks and update the status based
on the subscribe and unsubscribe events from the server.

(imported from commit 6b9c0b40d9084e3d8b64bed701ebc786bef6d432)
2014-01-22 11:28:31 -05:00
Jason Michalski c30a411c10 Add custom markdown tag to render a stream subscribe button
When new streams are created we now send a message with a custom
markdown tag that renders a subscribe button.

(imported from commit 9dfba280b3b4ff4f32f6431ef9227867c8bf4b40)
2014-01-22 11:28:31 -05:00
Steve Howell 033e0e5969 Add github_pull_request_synchronize.json
(imported from commit e71614bda2db3c85f8c22eac8b33f6b01113d19b)
2014-01-22 11:21:55 -05:00
Leo Franchi 30ae1c3463 Blacklist a few more statsd paths
(imported from commit 893b3d6c25e3a626b2948e69566fe5bd0db59813)
2014-01-22 10:49:49 -05:00
Steve Howell 6c6d1ee474 Use "synchronized" (past tense) in github webhook.
Normally github gives us a past tense version of the action, but
not for "synchronize," so we fix up the tense.

This also adds zerver.GithubHookTests.test_pull_request_synchronize

(imported from commit ef69467ed4a02dbfa94c8215fb9043b668d1dec9)
2014-01-21 18:18:24 -05:00
Steve Howell 8f9d29189c Fix undefined operator in search suggestions.
There was a bug where you would type "is:private je" into the search
suggestion and see undefined:jesstess@zulip.com.  Now we use
the "pm-with" operator.  The search suggestions for people are kind
of complicated now, because there is some overlap between
get_private_suggestions and get_person_suggestions.

(imported from commit 7d330f34f4a433995420de6eb90cb41229b70272)
2014-01-21 17:07:50 -05:00
Leo Franchi a0c5c7d088 Do not send duplicate email or push notifications in queue-expire corner case
(imported from commit 8bf2a31a5c22ae4e60bcfe2919a04596f87f2edf)
2014-01-21 14:48:57 -05:00
Leo Franchi 669951b631 Send push notifications regardless of idle status for robinhood.io, zulip.com
(imported from commit 49d2c954f6537d28ef3f8ccad669c56430afdbde)
2014-01-21 14:48:57 -05:00
Steve Howell 3dbc7d3524 Fix "closers" of github issues/PRs in our webhook.
When folks closed issues or pull requests on github, we were
using the wrong field from the github payload.  Now we
correctly use the "sender" as the person doing the action.

(imported from commit 82989ab19b32f8e3f0bbff9b305a7cb2673d99e9)
2014-01-17 17:48:13 -05:00
Steve Howell bca0311b53 Created stream_list.redraw_stream_privacy().
This function can redraws the lock icon (or lack of lock icon)
for a stream in the stream sidebar.  It can be called when
admins change the stream privacy.

(imported from commit 880133d02525137094c48ecad8cf2dfff59f3307)
2014-01-17 16:38:06 -05:00
Steve Howell a9e621fff4 Extract stream_privacy.handlebars partial template.
(imported from commit 77d614a549f5a337442936a002d422db1913e298)
2014-01-17 16:37:47 -05:00
Steve Howell 56dc4e0b8e Add test_add_stream_to_sidebar().
This is a node test that verifies that
stream_list.add_stream_to_sidebar() creates the right
DOM when it renders the stream_sidebar_row template.
The test also makes sure that the DOM gets put in the
correct place to be retrieved by stream_list.get_stream_li()
calls.

(imported from commit ed4c0148da2261870e3db5a9b553913788b4eccd)
2014-01-17 16:37:43 -05:00
Steve Howell 06cb0c8d22 Ensure handlebars templates have test coverage.
The node tests will now throw an exception if you haven't
at least compiled one of the handlebars templates as part
or running template.js.  This includes a one-line fix to
include tutorial_welcome.handlebars.

(imported from commit 51b4cae293d54c1f374a84623b4928519775e228)
2014-01-17 14:20:19 -05:00
Jason Michalski 4c90392261 [schema] Add an per-user option to disable notification on new streams
Added a default_desktop_notifications boolean to userprofile with a UI
in Zulip Labs. This flag is used to default the notification flag on new
subscriptions.

(imported from commit a25223cc5ecf09980cf877991e25034bb3fd4046)
2014-01-16 20:13:34 -05:00
Leo Franchi 607274c0ba Show who updated a ticket in pivotal integration
(imported from commit 005f71222d23f424b57fb84c9f20778836157a51)
2014-01-17 10:32:35 -05:00
Tim Abbott 907e9688fe Change embedded narrow keywords to more clearly specify stream.
(imported from commit 63293f6601503094724711dc335d2f7e67e710f7)
2014-01-16 18:06:30 -05:00
Tim Abbott bc22b1eb16 Add support for topic narrows in our embedded narrow widget.
(imported from commit d3ef2db8e0903e445d9ecc2c28d9f249a0042bd9)
2014-01-16 18:05:35 -05:00
Steve Howell ec91ece6ed Remove "Create new stream" UI for restricted users.
If a user is not allowed to create new streams, then do not
show the "Create new stream" UI at the top of the settings page.

(imported from commit b97626938d8b612317c2189f7eca0d4bd27fc274)
2014-01-16 14:43:57 -05:00
Steve Howell 8bf9068d0b Add back end support to restrict creation of streams.
Note that this doesn't actually restrict anybody yet, but it
makes it so that UserProfile.can_create_streams must return True
for a user to create a stream.  We can modify that in the future
to have special behavior for realms that want more restrictions.

(imported from commit 432e85b1ca86aaee4a6bd1d4a6d0b2c78ecb0863)
2014-01-16 14:43:56 -05:00
Steve Howell f60d5c64c3 Improve admin_user_list.handlebars node test.
Add in "Make admin" button and a couple hasClass checks.

(imported from commit 2f6ccc9bb7f7b589d126911803bdfd7bd8ea3f2d)
2014-01-16 14:41:17 -05:00
Steve Howell fd5fd7e61b Have /json/users return is_admin flag.
(imported from commit 49b5c621510c47656f92c38bc5b9b1b6381d5c21)
2014-01-16 13:41:53 -05:00
Steve Howell e837f8bf8b Add back end for admins to assign/remove admin.
Add back end for admins to assign/remove admin permissions for other users.
The /json/users/<email> endpoint allows you to PATCH is_admin.

(imported from commit bb5e6d44d759274cc2a7cb27e479ae96b2f271b5)
2014-01-16 13:41:53 -05:00
Jessica McKellar a1d128b6cb Flush memcached on a stream privacy change.
Otherwise uninvited users can join a stream recently turned
invite-only.

(imported from commit ab43bf3b856a0e3b71e6e06cee1519214b7763cd)
2014-01-15 17:13:56 -05:00
Zev Benjamin f015d27d31 Disable historical search whenever the 'is' operator is present
Previously we only disabled it for 'is:starred'.  This caused a backtrace when
someone searched for, say 'stream:test is:mentioned', because we weren't joining
on zerver_usermessage, which meant the flag wasn't available to filter on.

(imported from commit ba19f8a74b21d60b89dfc8dbe9c8458ed86b423b)
2014-01-15 16:07:20 -05:00
Zev Benjamin d8d1d6ea40 Fix narrowing to PMs with yourself
(imported from commit 1326fa7ae779ba6476165e8838e46ce1323e3ecb)
2014-01-15 16:07:19 -05:00
Waseem Daher 9eed2c50b9 email-mirror: Support '.' as an alternate for '+' (and bugfix).
Google Groups won't let you add an email address that has a '+' in it
as a member of a group, so we allow '.' as well.

This commit also fixes a current issue with email mirroring, where it
doesn't work if you had a + in the stream name.

This fixes Trac #2102.

(imported from commit 9a7a5f5d16087f6f74fb5308e170a6f04387599e)
2014-01-15 16:07:19 -05:00
Jason Michalski 60f878b45e Limit cross-realm private messages to zulip.com users
Cross-realm private messages are only used to respond to support
requests. So now cross-realm private messages are only allowed if
exactly two realms are in the private message and one of them is
zulip.com.

(imported from commit f01a2824e214682acb22a6995714a9d1b0d0c66f)
2014-01-15 16:07:19 -05:00
Luke Faraone b1cf9c3e25 Rewrite email-mirror documentation.
(imported from commit 4af076b3063d7b82657765c12cf4dba0248cbf9f)
2014-01-15 16:07:19 -05:00
Luke Faraone 895b7dc9b1 Accept emails on stdin in email-mirror and queue for later processing
(imported from commit 7efccc294f87d3661e50f10962a80071b91e3879)
2014-01-15 16:07:18 -05:00
Luke Faraone fbb2b6945b Queue worker for email mirror processing.
(imported from commit b60049c84622ea457db38c5a5b185bcd108bc59f)
2014-01-15 16:07:18 -05:00
Luke Faraone 0b5036e0fb Let message recipient in process_message be passed as an argument.
(imported from commit cfcfb9edf748a35d279235ee11a05b1a00c934b5)
2014-01-15 16:07:18 -05:00
Luke Faraone 1005e2ae7c Use module docstring for usage information
(imported from commit 7c1cbf68eca4e3f31c75bfe13b50654e76be0df3)
2014-01-15 16:07:18 -05:00
Jessica McKellar cf5b7dc0e4 Don't send digests to CUSTOMER29 teams.
(imported from commit c1dbb6607647e65082535d4e37d50d7842f8758f)
2014-01-15 16:07:17 -05:00
Jessica McKellar f85d45a781 Add a management command to bulk turn off digests.
(imported from commit 0ffb565ecc9be219807ae9a45abb7b0e3e940204)
2014-01-15 16:07:17 -05:00
Waseem Daher 4d5d0d636f casper-tests: Stop looking for full name.
We've removed it from the layout, so we should stop searching
for it in our tests.

(imported from commit 456c9794423d304f31a1d06215a51fae425df826)
2014-01-15 16:05:53 -05:00
Tim Abbott dfcb7529ed Disable desktop notifications in embedded narrow windows.
(imported from commit 327f64eb1c7119ccf6e595b9f9748293a06b5b0b)
2014-01-14 12:09:14 -05:00
Jason Michalski 4b86ef59f1 Added Zendesk webhook
Zendesk works a lot like desk.com, it has triggers which use targets.
The triggers have a user defined template. Targets can also have place
holders that are posted, we add the ticket id and title here so we can
always construct the message subject.

(imported from commit 04e8e5c7c0fc5568201f252546f6ed42f282fd00)
2014-01-14 12:01:54 -05:00
Zev Benjamin 3679889be2 Remove extraneous function argument
(imported from commit 4f90f98632077c771ac3123051a6d1a2804fb168)
2014-01-14 11:47:12 -05:00
Zev Benjamin 45ab625616 Add tests for get_old_messages DB queries
(imported from commit 1d6c871e6ac56324a129567e1ba447d44197a0aa)
2014-01-14 11:47:12 -05:00
Zev Benjamin db23674749 Do query time tracking at the psycopg2 level instead of the Django level
This allows us to track the query time of SQLAlchemy and raw queries.

(imported from commit 818a4ee41786ffc57b80d7ed1cfba075f29b6ee5)
2014-01-14 11:47:12 -05:00
Zev Benjamin df4d4beb6c Add TODO comment to messages_in_narrow_backend
(imported from commit 7e80a84fdd8f6ba347bb4ecb0f9238923b825871)
2014-01-14 11:47:12 -05:00
Zev Benjamin 81010c6c3d Clean up imports
(imported from commit f80891c6ae3c00daeafed3b504d24a6722f03a82)
2014-01-14 11:47:12 -05:00
Zev Benjamin 64c6bfecac Remove use_raw_query special case in get_old_messages_backend
The normal code will now generate SQL that is basically identically to the raw
SQL we were using before.

(imported from commit 84a3971d6137d05ef3f71252278afdd59041e86a)
2014-01-14 11:47:12 -05:00
Zev Benjamin fe6dc2ef81 Port get_old_messages to use SQLAlchemy
This commit also includes a few changes in the way we do some queries that
should speed searches up:

* Messages before and after the anchor are fetched in a single query by doing a
  UNION ALL on the server.  This incurs the cost of an extra sort because UNION
  ALL does not guarantee the order that the results are appended, but it saves a
  server round-trip.
* Searches involving flags now use a straight froward WHERE clause, which is
  much faster than the one that django-bitfield generates (due to limitations of
  the Django ORM)

(imported from commit a0db811a9073363cfabcf4b035d02d20dc8fc8a4)
2014-01-14 11:47:12 -05:00
Zev Benjamin 8142646938 Remove non-Postgres search codepath
(imported from commit ebc71defce2f075ee224f17a40088ccda9fab931)
2014-01-14 11:47:12 -05:00
Zev Benjamin 6c96561624 [manual] Do search highlighting in Python rather than in the database
This requires the tsearch_extras Postgres extension.  To install the extension,
first install postgresql-9.1-tsearch-extras on both postgres-primary and
postgres-secondary (this would normally be done in a puppet apply, but there are
currently some changes that can't be applied on Postgres machines).  Then run
the following as the postgres user on postgres-primary:

$ psql -d zulip -c 'CREATE EXTENSION tsearch_extras SCHEMA zulip;'

In dev environments, you must also run:

$ psql -d zulip_test_template -c 'CREATE EXTENSION tsearch_extras SCHEMA zulip;'

(imported from commit ad0a57c455b3b86002191ac5fb705d8f716f3296)
2014-01-14 11:47:12 -05:00
Tim Abbott bc29c3a789 Stop fetching user_profile objects for recipients in Tornado.
This returns us to the original situation where we're not in the
practice of doing database fetches for UserProfile objects in the
Tornado workflow, which should make our performance no longer
alarmingly degrade when memcached gets flushed.

(imported from commit 3580737604c13c9989f120a2242ad4c3eab6e1d1)
2014-01-13 16:54:06 -05:00
Tim Abbott cbc655bd4d Change receive_is_idle to take a user_profile_id.
(imported from commit 4cb4c8c61bc7e1308a9a3d9264990c28dc08fec5)
2014-01-13 16:54:06 -05:00
Tim Abbott e38ac2f9ac Index the presence data sent from Django to Tornado by ID.
(imported from commit 8ffb70562b49ba93c5b0927b34dc57a743d49564)
2014-01-13 16:54:06 -05:00
Tim Abbott e890f06c1c Move missedmessage hook checks on UserProfile settings to workers.
This does result in a few more rabbitmq events to be processed (though
a negligible number compared to what we already do), but it saves a
database query from inside Tornado whenever we occasionally have a
cache miss looking up the UserProfile, which is far more important.

(imported from commit a553a00a3004ba27bfb54ffbc3e9c9b170ebae4d)
2014-01-13 16:54:05 -05:00
Luke Faraone 0a574eeefa Return machine-readable error codes along with 403 responses.
(imported from commit f60e9fa587a41d643cb817cae3ef06938a59f68c)
2014-01-13 13:31:52 -05:00
Luke Faraone 3948e1673d [manual] Accept OAuth2 tokens for API login via Google Apps
This is used by the Android app to authenticate without prompting for a
password.

To do so, we implement a custom authentication backend that validates
the ID token provided by Google and then tries to see if we have a
corresponding UserProfile on file for them.

If the attestation is valid but the user is unregistered, we return that
fact by modifying a dictionary passed in as a parameter. We then return
the appropriate error message via the API.

This commit adds a dependency on the "googleapi" module. On Debian-based
systems with the Zulip APT repository:
    sudo apt-get install python-googleapi

For OS X and other platforms:
    pip install googleapi

(imported from commit dbda4e657e5228f081c39af95f956bd32dd20139)
2014-01-13 13:30:55 -05:00
Jessica McKellar 8976057b45 Add a backend test for signing up as the first user in a realm.
(imported from commit 637c28bfdcac2f021544e68bb125b85d759d9856)
2014-01-13 10:36:48 -05:00
Jessica McKellar 33bcd1977a Show the first person in the realm an invite banner if they are alone.
Previously we unconditionally showed the "get the desktop app"
banner. Now, if the first user declines to invite people as part of
their onboarding workflow, show the invite banner instead.

(imported from commit f7892fef17c923154a700149b8f5be99e9c03fa0)
2014-01-13 10:36:48 -05:00
Jessica McKellar 2543aea3b8 Send us a Zulip on bulk invites.
We currently only do bulk invites when the first user in the realm
goes through the signup process, so this will help us know if that
step is effective for getting more early users into the app.

(imported from commit c846086185ed28b13d3d4b695a9c8cad913d3bc9)
2014-01-13 10:36:48 -05:00
Zev Benjamin 22ae828685 Support Tornado 3
The only thing that needed changing was our instrumented IOLoop.

(imported from commit 17833500f03949f45a546050a1f99675e9f6b1b5)
2014-01-10 21:39:06 -05:00
Steve Howell e832e937c5 Make emojis be 20px tall in missed message emails.
(imported from commit 687b099f19d69f41876571c08a0627f061067f86)
2014-01-10 21:39:05 -05:00
Steve Howell 1a679795e1 Flatten the code for build_message_payload.
(imported from commit b58c91468b36d33c163d4994b501eac796d10e8f)
2014-01-10 21:39:05 -05:00
Waseem Daher fe748f7633 Make Twitter preview look like other inline image previews.
(imported from commit ca4ff9146679a5348bf53d06e992972e9a4b628a)
2014-01-10 21:39:04 -05:00
Steve Howell b52d9c8c00 Add test for bug that was in Handlebars 1.0.9.
(imported from commit 56901dd0615938c9d061faf3f43ca23031c4d215)
2014-01-10 21:39:04 -05:00
Steve Howell 3e48b4fd95 Update mentioned flags after message edits.
(imported from commit 67886db571193a0f53cf72aa00af9e5e75729dc0)
2014-01-10 21:39:03 -05:00
Steve Howell 8d79606136 Update has_alert_word flag after message edits.
(imported from commit cad1b5646742506c1e84a42366fd58aaaf6dc17d)
2014-01-10 21:39:02 -05:00
Steve Howell 0326fa92b4 Send UserMessage flags for update_message events.
When we edit a message, send out UserMessage flags to the recipients.
This sets the stage for making sure that changes related to
user-specific alert words or mentions get sent out to users.

(imported from commit bce1de19acef44b5e106352f261203352ece02b9)
2014-01-10 21:39:02 -05:00
Steve Howell 175aeef09a Simplify code by using message.alerted.
(imported from commit 10eaca36cd3d60ce3cdd36be62dff02217f0b6c6)
2014-01-10 21:39:02 -05:00
Jason Michalski 9e822403bb Linkify twitter media links
Image and video links in the twitter API are media and need to be
handed on separately. We also include a preview image if the media link
is a to a picture.

(imported from commit 2bd00d267e51b29ad0ba681195b2bfea9b991d8c)
2014-01-10 21:39:02 -05:00
Jessica McKellar 5cd851ca4e Add a test for logging in with an invalid email address.
(imported from commit 7d6bc16909e3f3ccaaf218809af6b430c938a671)
2014-01-10 21:39:01 -05:00
Jason Michalski 1352dccea5 Add support to linkify links and mentions on twitter
This converts links in tweets to a tags. We also convert the displayed
text to the target of the twitter short URL. Mentions are linked to the
users twitter page.

(imported from commit 192d5546a7eea82759f9ae30d82c102aed15ff71)
2014-01-10 21:39:01 -05:00
Leo Franchi 45d3bb4f04 Update our pivotal integration to handle v5 of their API
(imported from commit 2deba4ed2f72c7d7ccedafbb8fc4370b2faa5490)
2014-01-10 21:39:00 -05:00
Tim Abbott 5bdb0c9d6d Log a warning when delivering messages to inactive users.
(imported from commit 0bed372ef95c57e40ac91242e87fcd7b0b190683)
2014-01-10 21:39:00 -05:00
Tim Abbott 1470cb8bf4 do_send_messages: Only pass active recipient users to Tornado.
Previously, we were processing in Tornado mirroring dummy users (and
deactived users) as recipients -- resulting in bugs where the missed
message hooks would fire for these nonexistent users.

Our Tornado real-time delivery system only needs the list of active
users both for delivery and for presence information updates.

(imported from commit b81143f106a4d0eefa4b838e7c074b2963259746)
2014-01-10 21:39:00 -05:00
Tim Abbott 4bf3ace444 [manual] Allow signups for emails held by non-MIT mirror dummy accounts.
Before this is deployed to prod, we need to manually frob our database
to set the is_mirror_dummy=True bit for all existing mirror users.

(imported from commit 39f1938cef091cf1d7d97307f76b137fe1d92b6c)
2014-01-10 21:38:59 -05:00
Jason Michalski 75d1366ae1 Fixes how user input is escaped in stream and topic regexes
NarrowBuilder.by_stream and NarrowBuilder.by_topic for mit users uses a
regex to search by stream and topic. Python's re.escape escapes unicode
in a format that postgres can not parse. We escape unicode as '\uXXXX'
for postgres.

(imported from commit d2c27d4514c31fdc6ef1fea898fe721a6f0ab069)
2014-01-10 21:38:59 -05:00
Zev Benjamin 3720cb1c33 Move message-related views into their own file
(imported from commit 2c71cc1b5d3f0210c98767888c461d5c6d046b49)
2014-01-10 21:38:59 -05:00
Jessica McKellar d3f6c4ef36 Log the actual sending of digest emails in addition to queuing possible ones.
(imported from commit e43ac59e71620fe715db462347db228d5a950aed)
2014-01-10 21:38:59 -05:00
Tim Abbott 0e7e6610ce Augment Tornado logging about failed user_profile loads.
(imported from commit 94fb3d6ce3eb8565b8c55eaf281a3ee7df6061f7)
2014-01-10 21:38:58 -05:00
Steve Howell 7d23bffa42 Replace "ios" with "ZulipiOS" in process_client().
(imported from commit 72b4f5ded6dbb86fe67884d6fe8da1ee2146c4c5)
2014-01-10 21:38:58 -05:00
Steve Howell 17adab9a5d DRY up process_client() by extracting get_client_name().
Avoid repeating request.client = get_client(foo) 5 times, and
decouple the logic for determining the client name from how
we represent the client as an ORM object and piggyback it on the
Django request.

(imported from commit efdf81cbaf9599a5606da18e06d7ffe9b88aaf6f)
2014-01-10 21:38:58 -05:00
Steve Howell d043c373b4 Refactor process_client() to avoid double negative.
The "else" branch used to execute when it was not the case
case that HTTP_USER_AGENT was not in request.META.  Now
it's more readable.

(imported from commit ea0664e89d8b3d94cd1c0f8667047461b149ba41)
2014-01-10 21:38:58 -05:00
Steve Howell 7f668463ac Add an ZulipiOS tab to /activity.
(imported from commit 09f609e340a8fb7838e74d558eb3e397ea5f1f7b)
2014-01-10 21:38:57 -05:00
Steve Howell 0b9eb74f93 Remove Pure API tab from /activity.
(imported from commit 32ec22de7746637a18c98f93903661851e367bc8)
2014-01-10 21:38:57 -05:00
Tim Abbott 2c87cb5101 Fix OurAuthenticationForm return value for invalid accounts.
(imported from commit 10461554bec5d86d2ab768177762f11cd905e0f3)
2014-01-09 11:08:41 -05:00
Tim Abbott 47500d8352 [schema] Add a bit for whether inactive users are mirror dummies.
(imported from commit bb21bb2c62ac09742484d7a4ca8907e7d864b982)
2014-01-09 11:08:35 -05:00
Jessica McKellar 8e3911269e Strip whitespace from emails before looking up DB entries in a few places.
(imported from commit eafdce98450d16c0ca51c4cb17a139811a6124bc)
2014-01-07 20:24:21 -05:00
Jessica McKellar 0e120c9bbf Show users in deactivated realms an error page when they try to log in.
(imported from commit 6de839ae944b8c76715361c2211cd759d78f4f1a)
2014-01-07 20:24:21 -05:00
Jessica McKellar 33e8822165 Don't send digest e-mails to users in deactivated realms.
(imported from commit dca53af9beac80242a5a96857595e99ccb75cf77)
2014-01-07 20:24:21 -05:00
Jessica McKellar 32549ec135 Show new users an error page when they try to sign up for a deactivated realm.
(imported from commit 1696a6a5d26ec92b881cd3fda43e6b262e2fbfa5)
2014-01-07 20:24:21 -05:00
Jessica McKellar 511e1a12e3 Add a management command to deactivate old realms.
(imported from commit f6b1d0cb5b10f91683afcffea88b23b1a75a9ad2)
2014-01-07 20:24:20 -05:00
Jessica McKellar a06b5bd720 [schema] Add a deactivated field to Realm.
(imported from commit 8b873296d45dbacc0865c8d101a872be0b65ed46)
2014-01-07 20:24:20 -05:00
Tim Abbott e0c9397c62 Fix query count for test_bulk_message_fetching.
(imported from commit 1f5aaa05aa97e3c07688b8f91b4b45ca39dcc614)
2014-01-07 17:59:56 -05:00
Leo Franchi c7836626ea Accept a pass-through local_id option in send_message
(imported from commit 3f7b8e862a92d8a11b68da9ff23f711b6b25b5e2)
2014-01-07 17:33:34 -05:00
Leo Franchi 685ab1a583 Add message_list.remove_and_rerender
(imported from commit 68da0ad74f797fae3257577bbf415fd1fe9488a6)
2014-01-07 17:33:33 -05:00
Leo Franchi 76892c52aa Send realm filters to clients
(imported from commit a3ba31701baa4d515ea3bf36c39d7255f1dd20d6)
2014-01-07 17:33:33 -05:00
Leo Franchi 4a15f9a2cc Add avatar_url to page_params
(imported from commit e78eeb83ffa0928a624ea54b590cbd42c32b1bc4)
2014-01-07 17:33:33 -05:00
Jason Michalski 175d47f104 Added tests for the rename_stream api
Two tests were added.

1) That that name of the stream is changed.
2) That realm admin is required.

(imported from commit f8fd482c653c983182b96d53c30d731e272f96cd)
2014-01-07 17:15:43 -05:00
Jason Michalski 9d7ee674c6 Add tests for deactivate_stream_backend
deactivate_stream_backend was untested now we test

1) That subscriptions are removed
2) That the realm admin is required

(imported from commit eedb1c4fc0e363df58721302e9f8fbedf78389a9)
2014-01-07 17:15:43 -05:00
Jason Michalski 2a8f0b4b3b Fixed expected_messages in casper tests
expected_messages was ltriming headings but we had a newline at the end
innerText. The ltrim was changed to a trim to correct this.

(imported from commit 5e411c5fc46a2cb675c1268041e95bbb2522c8f9)
2014-01-07 12:32:52 -05:00
Jessica McKellar 5f7c3a959e Enable digest emails for all but special-case domains.
(imported from commit 6f5c8c6c1dcd0f7ba040e86edd7b1bd41ac0dc1e)
2014-01-06 17:32:56 -05:00
Jessica McKellar b082c99267 digest: send e-mails on Fridays.
(imported from commit 2080b98b4d67cfdefa124e2115b2c67b8ef975ce)
2014-01-06 17:32:55 -05:00
Luke Faraone df4b2d9f85 Break out non-Twisted email mirror code into separate library
(imported from commit 45c3e70ba81cdb44f1e9db4f162e5f2d2fe5ead6)
2014-01-06 13:36:53 -05:00
Luke Faraone 266c0f4886 Remove duplicate validation in email_mirror
We already have a try-except earlier in the file about email_gateway_user, so we don't
need to check for it again.

(imported from commit 2d9fa357fab2605916c5c5cb61961c0a121b1211)
2014-01-06 13:36:53 -05:00
Steve Howell badeb70be2 Allow admins to change public/private on streams.
This is the UI piece that finishes the features to let admins
make streams private or public.

(imported from commit 1a193165a6304dc358982e9850a75965fb3a03fd)
2014-01-06 11:59:48 -05:00
Steve Howell 654ce3e0c7 Add make_stream_private endpoint.
(imported from commit b504c24fd651ecf8814e64725a9f303dc085b14e)
2014-01-06 11:59:47 -05:00
Steve Howell e0c62c5eda Add make_stream_public endpoint.
(imported from commit 03d4cff5587d0aa149997f2f6ae28ec4ede95d7a)
2014-01-06 11:59:47 -05:00
Steve Howell 34af2b0828 Extract subscription_setting_icon.handlebars
(imported from commit 574f43d8479e066687312a7a232f243347bd1d7f)
2014-01-06 11:59:47 -05:00
Steve Howell b3d307b465 Extract subscription_type.handlebars
(imported from commit 1a16ed0d51dae23f830043f52046c8fb50f91a48)
2014-01-06 11:59:47 -05:00
Steve Howell 2079cb995a Improve unit test for subscription template.
(imported from commit 607524b47d5fec7bd8630158b1060f0855d845aa)
2014-01-06 11:59:47 -05:00
Steve Howell 492159c312 s/allow_rename/is_admin/ in subscription.handlebars
(imported from commit e5af8d97d0bcd63efd85e5745a8bb131b091f752)
2014-01-06 11:59:47 -05:00
Steve Howell 12b921c9a3 [verify after deploy] Fix API endpoint docs.
After deploying to both staging and prod, double check the docs
are correct here.  This fixes the API docs on prod, which had
"POST /api/v1/messages", despite "/api" not being part of the
prod path.  Prod docs are here:

https://zulip.com/api/endpoints/

(imported from commit a2c4d316128f88171f4a76074314be64d9bc9728)
2014-01-03 19:10:01 -05:00
Zev Benjamin fb602da502 Don't log exceptions that we know aren't bugs when adding events to event queues
(imported from commit 55074e68603119bd11cc5218453a4e1eab710feb)
2014-01-03 14:40:55 -05:00
Jessica McKellar 692ad53941 freshdesk: log payload on webhook errors.
(imported from commit 42bdf56248cbfa1d0b2d39151dd99bdd8a807734)
2014-01-02 10:58:42 -05:00
Leo Franchi 72bfc12f18 Expose a users/me/presence API endpoint
(imported from commit 770310284e91ae20d766cd9a52dd1005b5e47e6b)
2014-01-01 17:02:01 -06:00
Jessica McKellar 30367d0c0f digest: don't include automated messages in hot conversation accounting.
(imported from commit ab8db46c644b3cf66a4bc654d204d870b8fae91f)
2013-12-31 16:45:21 -05:00
Jessica McKellar 8091634814 Move sent_by_human check to a method on the Message class.
(imported from commit 2ef49051932f9633ad11130952591c5c5b147f12)
2013-12-31 16:42:38 -05:00
Jessica McKellar a20894d847 digest: fix generator bug not producing correct deployment comparison.
(imported from commit 33c34d71320fa1f8cd095a6d9f10b2397eeeda2f)
2013-12-31 16:34:52 -05:00
Steve Howell 8c15b89278 Fix handlebars.handlebars typo.
This was my fault.  It is just a label for test output, so it
was harmless.

(imported from commit aff11f411bc14275cb9b8ce339b7100eaebeb49d)
2013-12-26 11:07:01 -05:00
Steve Howell 5dc3d9abce Log internal queries if they are >= 5s.
(imported from commit ee88fcd6292a177e02bfe5e5bca5480b0e474030)
2013-12-26 09:23:18 -05:00
Steve Howell eb6868704f Give higher threshold for webathena kerberos queries.
These are mostly out of our control, so they are not very actionable.

(imported from commit ef342ec1edbff0fa1a934413a7f19ed14817a502)
2013-12-26 09:20:59 -05:00
Steve Howell f61740551c Bump slow query threshold to 1.2s
(imported from commit 8d97fc22d208274bc57b884828957dacf396348a)
2013-12-26 09:16:49 -05:00
Steve Howell 89f3a7c72f Break up conditional in is_slow_query().
(imported from commit c7ca42965e917a0386069c915c0225cefc218c3e)
2013-12-26 09:13:00 -05:00
Steve Howell e0a1841b1c Extract middleware.is_slow_query() and add tests.
(imported from commit 60902244a420800f558fdf2f1c38b4ed736c1286)
2013-12-26 09:09:15 -05:00
Jessica McKellar 7b3d9255bc GitHub integrations: use the branch in the topic for Via Delivers.
(imported from commit 65d009eeba82c24f20eb4241575515e217cb4603)
2013-12-23 11:02:25 -05:00
Jessica McKellar 61103d8349 digest: On an app server, only send digest emails for domains it manages.
(imported from commit 9aea636a19eb6fdefacdc7dc393bf075a05862c5)
2013-12-20 12:50:23 -05:00
acrefoot 0d08acaa1b Transition from tables to divs for the message list.
This breaks our casperjs tests.

(imported from commit c63181c73a24eed4a80bfa56966d1f0871c5edb2)
2013-12-19 18:28:11 -05:00
Tim Abbott b5754758a7 Don't alert on slow queries for /user_activity and /realm_activity.
(imported from commit 8b08ad47138477068f432ff15c56b2ba93ac2db6)
2013-12-19 17:41:36 -05:00
Leo Franchi 9918b8f039 Whitelist mac clients with Mac UAs
(imported from commit a602dba099e1651996c1fb2ad1f01edf4a82dab8)
2013-12-19 17:23:38 -05:00
Tim Abbott 2264a07c03 Update server-side app checks to handle the new app names.
(imported from commit da7b2c06b413add1881b2d80a89794d0db9c810f)
2013-12-19 17:21:26 -05:00
Tim Abbott 66e72d4705 Ignore slow queries on certain non-customer-facing URLs.
(imported from commit c3f53883d93a75d805b15f617f391ccd1a492ce8)
2013-12-19 17:20:43 -05:00
Tim Abbott e77b34ed82 api: Extract client strings from UserAgent.
(imported from commit 22468dd0eb06bb52ed7273f3067ae3e2461ee0a5)
2013-12-19 17:20:43 -05:00
Tim Abbott 453a05996e Update client strings for webhooks to match UserAgent style.
(imported from commit 0bbed9b0f37e7d57fd7a1607d6fd0e938349e586)
2013-12-19 17:20:43 -05:00
Tim Abbott 8c8c5337ef UserPresenceTests: Fix use of API auth with json view.
While it does work, it's more an accident than intentional behavior
and not something we want to be encouraging (and it's messier code).

(imported from commit 3797147fc21836135a6304412bd3f958873a0576)
2013-12-19 17:20:43 -05:00
Leo Franchi 0e8fc2a26a Match new User-Agent format for the desktop app in discrimination
(imported from commit 51c296570f506f2280556956b3bf9c26e95cc2f8)
2013-12-19 16:53:45 -05:00
Tim Abbott a70072f5cf socket: Don't throw traceback when sessions are expired.
(imported from commit 16c876b5bbd0c6ecd5ef48369a7f71ca74d1183f)
2013-12-19 16:52:53 -05:00
Tim Abbott 2ca5f43f05 Report json format 500 errors from all json format views.
Previously, we only did this via rest_dispatch.

(imported from commit b0edfdccea294378292b64677a64d5b01f936b08)
2013-12-19 16:48:51 -05:00
Tim Abbott b30afe432e Return a nice JSON error when CSRF errors happen in JSON views.
(imported from commit 916166c115f9b3ba0fdc93f8d917ff37ae22c2ae)
2013-12-19 16:48:51 -05:00
Tim Abbott 014b5e8a91 Add a per-request realm filters cache.
This avoids doing hundreds of memcached queries in get_old_messages.

(imported from commit 8b64cac3e4e91d46762a13d6812bd3c6f517e9ef)
2013-12-19 14:04:55 -05:00
Tim Abbott c91415f318 Improve names for per-request display recipient cache.
It incorrectly advertises itself as per-process.

(imported from commit faf7ca7374d020058e80249bb16a4c6afbcb3e44)
2013-12-19 14:04:55 -05:00
Steve Howell 7cded2a956 Show realm history on the main activity page.
This shows the number of messages sent by humans for the last
eight 24-hour periods, for each realm.  "Messages sent" isn't a
perfect metric of activity, but it's easier to query with our
current data model than certain other statistics.

(imported from commit 9de3c479640a0b9dbc017b245dda21d951f4efa4)
2013-12-18 16:01:44 -05:00
Steve Howell ab9f6b301f Validate msg_ids in messages_in_narrow_backend.
(imported from commit fde39d8766b2de9e41dee52e3372ce4aa27c353b)
2013-12-18 16:00:16 -05:00
Steve Howell ea42d0bb16 Validate narrow in events_register_backend.
(imported from commit 5b873846fece98f7fbf0b6cb6ed5c098e72ac7f4)
2013-12-18 16:00:16 -05:00
Steve Howell f7ec8cccc7 Validate subscriptions in add_subscriptions_backend.
(imported from commit 3d4b669ade135dfa85c01238db110a5e4c1362b2)
2013-12-18 16:00:16 -05:00
Steve Howell 48319f9763 Validate subscriptions in remove_subscriptions_backend.
(imported from commit 9cbbaf35791b204c78a56d7598cff9775901c5ed)
2013-12-18 16:00:16 -05:00
Steve Howell 28b5b175a3 Validate messages in update_message_flags.
(imported from commit e4905fb0f56f56e5486828eb177493c42a0792f2)
2013-12-18 16:00:16 -05:00
Jessica McKellar 0d7ea7353f Don't show broken images in digest and missed PMs emails.
(imported from commit 92297b4c8f020e30b5c00e93bf32df6e19069dd8)
2013-12-18 14:31:04 -05:00
Jessica McKellar 96ea91056e Support displaying emoji in digest and missed PM emails.
(imported from commit b440da2501ccb6dd95dc79c3fbce1e81b17c38f4)
2013-12-18 14:31:04 -05:00
Jessica McKellar 2f59f69a1f digest: tweak sender information.
(imported from commit fafc54d4b9c9cda447c42f2bd24845aee62624c2)
2013-12-18 14:31:03 -05:00
Steve Howell be1857ceb3 Add blank line to check_list (cosmetic).
(imported from commit 20a9eed98846e976c7fa2cfdb43e25e1c43c850d)
2013-12-18 12:47:32 -05:00
Steve Howell 9df608c612 Validate muted_topics variable in json_set_muted_topics.
(imported from commit 1f6250bb170212af9b5f79a4ef07d57cdaab641d)
2013-12-18 12:45:30 -05:00
Steve Howell 6f573feaeb Add "length" option to check_list validator.
(imported from commit 4f8e203f964d1c936fe548b2f77a2e4aae745ae9)
2013-12-18 12:45:29 -05:00
Steve Howell b2bffc26f9 Validate alert_words is a list of strings.
(imported from commit f6776c17ce4fcc84b9a6a75858154837c6122789)
2013-12-18 12:45:28 -05:00
Steve Howell e7a42ffd02 Add test for /json/set_alert_words.
(imported from commit 307d87331870a89713030e8178b1aa14a31cfdfd)
2013-12-18 12:45:28 -05:00
Luke Faraone 0311bf8e4b Don't crash if prereg_user doesn't have default streams set
(imported from commit 8d24ecd1bac801f3b8502116933ed4470f4fad9e)
2013-12-18 11:33:34 -05:00
Steve Howell b764bb427b Validate invitee_emails better in json_bulk_invite_users().
(imported from commit a446a361677bcb0501d9a340f7b5bb3614c7481b)
2013-12-17 16:24:59 -05:00
Steve Howell 94e3c02649 Add test_bulk_invite_users().
(imported from commit bc8ab756dae0fd82e73b5b2a9655974c5fc839b0)
2013-12-17 16:24:59 -05:00
Tim Abbott 3b7bf691e7 Add tool to query our usage stats as of a given date.
This contains the various fixes that needed to be made in order to get
accurate statistics.

Most notably, the active_users_between function in the previous
version of zerver/lib/statistics.py was broken for end dates in the
past, because it used the UserActivity table to get its data -- so in
fact it really was querying "users last active between".

This commit isn't super clean, but I figure we're probably better off
having our latest code for historical usage data in git so it doesn't
bitrot and anyone can improve on it.

(imported from commit 24ff2f24a22e5bdc004ea8043d8da12deb97ff2f)
2013-12-17 15:34:44 -05:00
Steve Howell 1c67fdb95d Move user list unread-count logic to templates.
When we rebuild the user list from scratch, set the unread
counts in the templates to avoid multiple DOM updates.

(imported from commit 2d0c9b0fb99b382332e464ba7c3caad95e05363e)
2013-12-17 10:59:25 -05:00
Jessica McKellar a8cd91d6c7 digest: send emails if you've been active for slightly less than a day.
That way if all you do is briefly check Zulip because you got the
email, we'll send you another one tomorrow.

(imported from commit fcbbd264c5e5fea7352f0fee6989e000af7b7bed)
2013-12-17 10:47:17 -05:00
Jessica McKellar 6b64ef6be3 digest: log when we enqueue emails.
(imported from commit 1b34e05bc2eebedb818673a4c9a3944e1db15c6d)
2013-12-17 10:47:17 -05:00
Jessica McKellar 71f5b4e0ae Enable digest emails for zulip.com.
(imported from commit f676f96c2b516b33269b8f5c72deaf5c985e8ccd)
2013-12-17 10:47:17 -05:00
Jessica McKellar 1d11e2cce0 digest: don't show new users for MIT.
(imported from commit b7453cb30e6fcf5b36a5e3e53f67faeb17e74048)
2013-12-17 10:47:16 -05:00
Tim Abbott 150ca939b1 Disable some buttons in embedded widget.
(imported from commit 7d6d4725b139ea71c579dfd7d19c38d7bb11ee44)
2013-12-16 17:46:02 -05:00
Tim Abbott 2276c6e524 Add support for loading a narrows-only embedded Zulip window.
Features:
* Only shows messages in the narrow
* New messages in the narrow will arrive as they are sent
* Works even for streams you're not subscribed to
* Automatically subscribes you to a stream on send
* Doesn't update your pointer
* All searches etc. automatically have the narrow added

(imported from commit 2e12b76849f6ca0f53dda5985dad477a04f7bbac)
2013-12-16 17:46:02 -05:00
Tim Abbott 7c829c4024 Extract adding clients to the various dicts to a function.
(imported from commit 667e5736710c23becdf4ebe5688a31421ac632f5)
2013-12-16 17:46:02 -05:00
Tim Abbott af347acf99 Fix narrow stream event queues with all event types.
(imported from commit 69c2f6f1be3dd864b5da85104b83235f0dd4df50)
2013-12-16 17:46:02 -05:00
Tim Abbott 28c03e3f0d Simpify interface for editing/accessing unencoded page_params.
(imported from commit c7c7dce2ecc886f4bd9e5da798b1007887e77642)
2013-12-16 17:46:01 -05:00
Tim Abbott 1ca8804468 Fix renaming streams.
(imported from commit 63c41d7f1175f132dc835e76362d679f00800d3f)
2013-12-16 10:32:55 -05:00
Steve Howell 3b0a563730 Use REQ(validator=) style for update_subscriptions_backend.
(imported from commit 48e16695f7ab9f32b10370751c528dc27583ada7)
2013-12-13 18:23:40 -05:00
Steve Howell cc2779c80e Use REQ(validator=) style for event_types in events_register_backend.
(imported from commit 3af787fcc87355866107d197ef2c9e9552151a8a)
2013-12-13 18:23:40 -05:00
Steve Howell a20270dbc7 Use REQ(validator=) style for principals in add_subscriptions_backend.
(imported from commit 307ce32cc0c56f8a226244cf1128b1c0633852f7)
2013-12-13 18:19:10 -05:00
Steve Howell bfb54b5a4d Add validator support to REQ and has_request_variables.
Validators are similar to converters, but they don't have
to parse JSON, and they are told the name of the request
variable to help format error messages.

(imported from commit 3c33e301892519c67e70675006d5686d9f013353)
2013-12-13 18:19:10 -05:00
Steve Howell 60917c83d6 Add test_REQ_converter.
(imported from commit 4425c68a532dc8a6db3b76397156c4e9d92a5b44)
2013-12-13 18:19:10 -05:00
Steve Howell 668c0ab529 Validate principals in add_subscriptions_backend.
Make sure that principles is a list a of strings (unless it
is None).  This includes a unit test.

(imported from commit c2e3f1c0cafc207ceca67d5a174ef4e29a32c6ca)
2013-12-13 18:19:10 -05:00
Steve Howell 7e04b205fa Add type checking to events_register_backend.
(imported from commit bb3ddbfc0e471f276858d47fbdb65c890af41606)
2013-12-13 18:19:09 -05:00
Steve Howell 0cdcf102a0 Validate parameters in update_subscriptions_backend.
w/unit tests added

(imported from commit a0c0d779279b35ffc5bf1fbe4c5c5a25af263c10)
2013-12-13 18:19:08 -05:00
Steve Howell 6b70e9ddb7 Add SubscriptionRestApiTest.test_basic_add_delete.
(imported from commit 735d6a0657952790de1d58c62cc983320ec402e8)
2013-12-13 18:19:08 -05:00
Steve Howell 4184b9d56f Add validators.py (with tests).
This sets up a scheme to validate complex data structures and
give specific error messages for improperly typed parameters.

(imported from commit 33b2f070d993da4ee929119dd41503bd0128c8eb)
2013-12-13 18:19:07 -05:00
Tim Abbott 7800a34d84 Fix json_unhandled_exception handling of JsonableError.
(imported from commit 16ed6c213cbda3b60a16a01af32c56d6802b7acc)
2013-12-13 18:13:43 -05:00
Waseem Daher 14a5c6bf66 twitter: Detect link styles more robustly.
* Deal with shorter tweet IDs
  (some old tweets don't have a full 18-character ID)
* Allow trailing slash
* Deal with old-style #! syntax
* Deal with links that link to a photo

(imported from commit 008a98c806f3b8dddd9e2f18a8f002af6932766f)
2013-12-13 18:13:23 -05:00
Steve Howell 44b738ab75 Have rest_dispatch return JSON when exceptions are thrown.
(imported from commit 587a8f46d406c6358480db9e0ebd5afb69e12abf)
2013-12-13 17:38:20 -05:00
Kevin Mehall ebab4a59c9 Don't proxy https images through Camo on MIT
These images at least load now, but that's because Camo redirects
the browser to the origin server, so the only effect is an extra
round-trip time.

(imported from commit 0d6b9c888a5cdfaa9299272d74a085e872dfa434)
2013-12-13 17:27:01 -05:00
Jessica McKellar 685830b66a Fix broken image links for missed PM and digest emails.
In plaintext e-mails these will be simple links.

In HTML e-mails these become a <link> and <img>, which some web mail
clients may inline.

(imported from commit b1242dfd917008a019981eb2224c1c7f5f84739f)
2013-12-13 16:38:11 -05:00
Jessica McKellar 70b8d09391 digest: Fix erroneous early return giving us only 1 hot conversation.
(imported from commit db1588bf98778ef838edd6de88fb1ba750251eae)
2013-12-13 16:38:10 -05:00
Jessica McKellar e85566cbb2 digest: Always pad out to 4 conversations if possible.
(imported from commit 1b31a472db5a22a017e461ba846524226641ade1)
2013-12-13 16:38:10 -05:00
Jessica McKellar 8651e205be digest: Make it impossible to report new streams for MIT users.
We may never enqueue MIT users, but just in case we do, never report
new streams.

(imported from commit 01885f339d7bbb3c8ee665fd576831206d493b88)
2013-12-13 16:38:10 -05:00
Jessica McKellar 040cdc2f91 Don't mention new invite-only streams in digest e-mails.
(imported from commit 10ca5dd77736a085f0cc771888ed0aa1ba68a37d)
2013-12-13 16:38:09 -05:00
Jessica McKellar 67088b15a4 Sort messages before building a message list for emails.
Otherwise they sometimes appear out of order!

(imported from commit 26b71579b8f0c31ebdba0eef99afdf0e1772b676)
2013-12-13 16:38:09 -05:00
Jessica McKellar 4740bc7e3a digest: Don't show PMs sent by you.
You can't have unread PMs sent by you, so we weren't explicitly
checking this, but when testing locally we often ignore the unread
check. Filter PMs sent by you to reduce confusion when testing
locally.

(imported from commit 0205c4a3ed67790b9d60d4f2b927e4cb9e720bf3)
2013-12-13 16:38:09 -05:00
Jessica McKellar 35c2804c13 Use PM coloring for PMs in missed message emails.
Previously it used a blue header and white background for everything.

(imported from commit 03b8b0f8fb33a581d67a249f0496cc27aab30ef3)
2013-12-13 16:38:09 -05:00
Tim Abbott c89c3443a8 Support api_key as well as api-key in authenticated_api_view.
All of our other API arguments use "_" as the delimiter, so we're
migrating this to do that as well (except for the legacy send_message
usage, which we're just hoping will eventually shrink to nothing).

(imported from commit 40964cc08e0f94ba439a61e4f68ed500f74a554f)
2013-12-13 15:09:36 -05:00
acrefoot 07501cd12c only show 'auto-scroll forever' setting for zulip.com and customer28.invalid
(imported from commit 329ea6a4f715a093a1ab56777964ca751300ac0c)
2013-12-13 11:50:11 -05:00
acrefoot 1bd420f12c Show auto-scroll forever setting in /#settings
(imported from commit fa66cbe52836f230e551f25c47bd755b705387d2)
2013-12-13 11:50:11 -05:00
acrefoot 0fd492a817 [schema] Add enable_autoscroll_past_unread setting
This is for the CUSTOMER28 folks, so that they can turn Zulip into a more "chat client" thing.

(imported from commit 373a8afae4998fce5560e7b2bd13804c8fbb39fc)
2013-12-13 11:50:03 -05:00
Tim Abbott 5c9def5be4 Add script to parse user agents with historical data set.
(imported from commit e529c0b914ed3d3d06e9581a6239676f68c97b3f)
2013-12-13 11:26:36 -05:00
Tim Abbott 2e62cd5a74 Add tests for the events_register event application system.
(imported from commit 6c3dbe55d43f528b6a980bba3598ac30c0307a69)
2013-12-12 17:36:41 -05:00
Tim Abbott a3d67a7fe7 Fix apply_events for subscription events to actually match.
Since we changed the initial subscription data to include
user_profile_ids rather than emails, we need to preserve that when
adding in events generated during the page load.

(imported from commit 4f4071b8ba30e57c6f64c9e7b54c1cc754e8f010)
2013-12-12 17:36:40 -05:00
Tim Abbott 8af0fae335 Fix missing muted topics in apply_events.
These events would previously not be applied.

(imported from commit c3e5b9de559b6f744567a0c78e920d34e4d5ae9a)
2013-12-12 17:36:40 -05:00
Tim Abbott afdf7897e6 Split out helper functions from do_events_register.
(imported from commit d838a3303d3ec960d076e755fc8690da5151ac1a)
2013-12-12 17:36:40 -05:00
Tim Abbott a3fe72642b Add save/reload of narrows of server restart.
(imported from commit 2ad77845ce7d8fe365c893ab5cad06e3c725b421)
2013-12-12 17:36:39 -05:00