Commit Graph

2598 Commits

Author SHA1 Message Date
Tim Abbott bea03548c2 tornado: Don't attempt to populate the memcached on restart.
Later, we can fork off a separate process to do that task, but for
now, we can just rely on the fact that unless the server was just
rebooted, the relevant messages will already be in that cache, and
even if it was, getting the needed messages once each is not a
particularly expensive query.

(imported from commit 6d08eba1b41237fd4e1204e181ce8f227573930d)
2013-01-14 12:28:48 -05:00
Tim Abbott d121c51584 update-deployment: Delete pyc files on deploy.
(imported from commit 852258b1fd1b837807d11e5f4693012cd438c395)
2013-01-14 11:52:39 -05:00
Reid Barton 904f55a08e Don't show sender email in skinny windows
It can easily cost an entire line, and the information is available by
clicking on the sender's name.  Plus on a phone, you can't hover
anyways.

Annoyingly, this tends to put the popover partly off the window, but
there must be a way to fix that separately.

(imported from commit 19334cb067981b323e300245654c83c8e545fb2e)
2013-01-14 10:39:20 -05:00
Reid Barton 389a52de6e Fix test for adding to top or bottom of zhome/zfilt
It's possible for selected_message_id to not exist in zhome. For
instance, when you open the page to a narrowed URL, there is a race
between loading the narrowed messages and loading all your
messages. If the narrowed message request completes first, it will
update selected_message_id to your initial_pointer if the latter
happens to be among the narrowed messages. Even if it is not, you can
select a message by clicking on it before the zhome request finishes.

Then the old code would never add that selected_message_id to the
zhome table, so it wouldn't show up in the Home view or if you
re-narrowed.

I'm pretty sure there are still cases where the selected_message_id
might be outside the range of messages in zhome, in which case adding
to zhome might put old messages at the bottom. I observed this twice
on staging but was unable to reproduce it consistently.

(imported from commit 162feff3090f8806cc67140db0cfabb6e965aece)
2013-01-14 10:33:51 -05:00
Luke Faraone f62c97706a Don't assume that PreregistrationUser.email is unique in accounts_home
The schema change made this no longer a guarantee, and creating duplicate
PUs is not harmful.

(imported from commit ca05b4dad7d3cc12a35548817f98c0a072c14c8f)
2013-01-14 10:25:27 -05:00
Luke Faraone fc3fecb1af Add test cases for invite functionality.
This involved splitting off into a separate function the second step of
the two-step registration process.

(imported from commit bd1ec9b5abb15d29b0585873daaa54a8d4e26556)
2013-01-14 10:25:27 -05:00
Luke Faraone 99abad2447 Use custom copy for invites.
(imported from commit 15b306777fd40e7c3feeaaaa871a8936ffc0f651)
2013-01-14 10:25:27 -05:00
Luke Faraone 3fb1889835 confirmation: Make send_confirmation accept custom templates and context.
(imported from commit 08f19a48f229029f68832868bc48a2ac160e85e7)
2013-01-14 10:25:26 -05:00
Luke Faraone 974c220625 Convert invitee_emails to a set to eliminate duplicate users.
(imported from commit 09e6f7251c4d8d13ce2b4a2808f53e3c9fb97708)
2013-01-14 10:25:26 -05:00
Luke Faraone 75004c65f2 Prevent MIT users from sending invites and hide the button.
(imported from commit 0388c4a2253514e0aba15605bd75a87543479312)
2013-01-14 10:25:26 -05:00
Luke Faraone 57d8b8d30c Add hr to the sidebar with zero margins.
(imported from commit 30fd816c55a9eaf7fecc5670d08f0a44c2489ac7)
2013-01-14 10:25:26 -05:00
Waseem Daher d9e50117be Frontend for invitations.
(imported from commit 8afab7cc5a4a5c14b605f1b27b48036c9414f7d0)
2013-01-14 10:25:26 -05:00
Luke Faraone 7a43b4e30b [south] Migration for PreregistrationUser
Added field invited_at on zephyr.PreregistrationUser, with a one-time
default of Jan 1, 1970 for existing objects.

Added M2M table for streams on zephyr.PreregistrationUser
Deleted unique constraint for ['email'] on zephyr.PreregistrationUser

(imported from commit 85247acb488201f8fc51dfaae354423c27eddcb0)
2013-01-14 10:25:26 -05:00
Luke Faraone 22a4b76290 [manual] [schema] Add backend function to invite users to the app.
(imported from commit 17ae27b22bdca33e63b96fa8c819759e4f4315fa)
2013-01-14 10:25:25 -05:00
Jessica McKellar 163003b4c1 Lighten the message highlight colors.
(imported from commit c2fc2859efca3ee2ebda5f4ee7c5c02c4a3b6719)
2013-01-11 21:19:16 -05:00
Keegan McAllister 6d7ef69cda nginx: Add config for plant.humbughq.com
(imported from commit e90b8e350014b49de53bfd5640442060672e691d)
2013-01-11 17:41:11 -05:00
Keegan McAllister 56660f30f8 nginx: Factor out shared parts of app / staging config
(imported from commit e00d5eec1bc58754db6e97935bc803fe3a4fe291)
2013-01-11 17:39:51 -05:00
Keegan McAllister ef6a5220c8 nginx: Remove unused config humbug-dev
(imported from commit 178a320bf56076c61f4010bf6cb89ba04798b4a4)
2013-01-11 17:39:48 -05:00
Tim Abbott 4df3c44a97 tornado: Fix order_by query during usermessage initialization.
(imported from commit e39556438ccb6487fe6be3e80d9c3b1e4cdf0cb7)
2013-01-11 16:19:31 -05:00
Tim Abbott 3636f22b2b tornado: Rename receive to receive_message.
(imported from commit 336273048c902941bb65755254bf253c0d130bd6)
2013-01-11 16:11:07 -05:00
Tim Abbott e36fd4b817 tornado: Send rendered messages to Tornado via memcached.
(imported from commit c1e8a017fa61b4e3f5c44ad4e5f59e4faf012ca3)
2013-01-11 16:11:07 -05:00
Tim Abbott a058471a56 tornado: Cache messages internally in tornado process.
This allows us to handle the return_messages_immediately part of
get_updates requests without having to talk to the database.

(imported from commit ed0b7742d359efb21a0a4960f4fc25f4337e9ad4)
2013-01-11 16:11:07 -05:00
Zev Benjamin 7e62ef5a03 Add a common base class for the RequestVariable*Error classes.
Tweaked by tabbott to make it easier to use for one-off applications.

(imported from commit 6c8e3e6da87c431d9a21e6186fa8952bbaa9e5f6)
2013-01-11 16:11:07 -05:00
Tim Abbott 3b7d61e45f tornado: Get User and UserProfile objects from a memcached.
This commit has the effect of eliminating all of the non-UserActivity
database queries from the Tornado process -- at least in the uncached
case.

This is safe to do, if a bit fragile, since our Tornado code only
accesses these objects (as opposed to their IDs) in a few places that
are all fine with old data, and I don't expect us to add any new ones
soon:

* UserActivity logging, which I plan to move out of Tornado entirely

* Checking whether we're authenticated in our decorators (which could
  be simplified -- the actual security check is just whether the
  Django session object has a particular field)

* Checking the user realm for whether we should sync to the client
  notices about their Zephyr mirror being up to date, which is quite
  static and I think we can move out of this code path.

But implementation constraints around mapping the user_ids to
user_profile_ids mean that it makes sense to get the actual objects
for now.

This code is not what I want to do long-term.  I expect we'll be able
to clean up the dual User/UserProfile nonsense once we integrate the
upcoming Django 1.5 release, with its support for pluggable User
models, and after that I change, I expect it'll be fairly easy to make
the Tornado code only work with the user ID, not the actual objects.

(imported from commit 82e25b62fd0e3af7c86040600c63a4deec7bec06)
2013-01-11 16:11:07 -05:00
Tim Abbott 053543e6eb tornado: Remove normal-runtime query in the user pointers code path.
We still need to do an initial query to get the pointers for all users.

(imported from commit 6ee991a648faf46539fd8676890dedb5f2003d05)
2013-01-11 16:11:07 -05:00
Tim Abbott 1a82741650 Move action functions from models.py to zephyr/lib/actions.py.
(imported from commit 9d577dd53ce7d4c9faf6cc8a56129d684a50811b)
2013-01-11 16:11:03 -05:00
Tim Abbott b977bce998 Add hack to clean up zephyr/lib/time.pyc -- it will break tests.
(imported from commit f649b31010adc38e3820879fcdd543e81d271d0f)
2013-01-11 15:58:19 -05:00
Tim Abbott 761b7cd5fa Rename zephyr.lib.time to zephyr.lib.timestamp.
Otherwise one gets:

AttributeError: 'module' object has no attribute 'time'

when trying to use the time module from inside zephyr.lib.

(imported from commit 645368672a3eff68320278dd480edeed56721fcc)
2013-01-11 15:58:19 -05:00
Jeff Arnold 3c8b30d043 Revert "Autocomplete @names in the compose box"
This reverts commit d60d1693e77bdd045a1bd20491c6d6efed918b39.

(imported from commit 796036e146eaf917b74dc0bac01e92aa6a682d16)
2013-01-11 13:49:23 -05:00
Jeff Arnold 09a6dc6c42 Autocomplete @names in the compose box
(imported from commit d60d1693e77bdd045a1bd20491c6d6efed918b39)
2013-01-11 13:00:34 -05:00
Jeff Arnold 279ded6072 Notify when we see our username or our name plus punctuation
(imported from commit 158c78de264ef31f61670694764d025a773ae840)
2013-01-11 13:00:34 -05:00
Waseem Daher e3e8d9b939 Revert recent set of floating_recipient_bar changes.
We suspect that these seem to be causing a regression where scrolling
in narrowed views gets really sluggish, but we haven't totally been
able to figure out why since it's challenging to reproduce locally.
(It currently manifests itself on staging but not prod.)

So for now we'll back them out. Here's the full set of things:
Revert "Cause update_floating_recipient_bar to get called less frequently."
This reverts commit a6c1518c4001a2dde44d7b512236795da3ccd351.

Revert "Remove double-scroll in un-narrowing code."
This reverts commit 3dde6c27ffa1e8afa1a084b1b2baee3bc0512962.

Revert "Reset our scroll position if we change our hash to "#"."
This reverts commit 925b44d770c96dafaabebc9e0114f9a3b8f53c4d.

Revert "Properly update floating subject bar when you are at top of page."
This reverts commit 6633cc8a81aedcbb31b30d7c1f27816f8808c700.

(imported from commit a273730581cef30c33bedf701659ee084434f8ad)
2013-01-11 10:58:04 -05:00
Keegan McAllister 0fdc3b772e runtornado: Print busy percentage at most once every 5s
(imported from commit 017bd01f96689f06c6d166bea47b5112fad05f8c)
2013-01-10 17:21:24 -05:00
Keegan McAllister 1d9bcf8da9 runtornado: Report the percentage of time spent outside the event loop
Note that on local dev servers, this will print out every half second, as
Tornado polls for file changes for autoreloading.  In production it will only
print out when network events occur.

(imported from commit adfe88879e4e446b7dfa6ee69e0a9ad013e9c4d4)
2013-01-10 17:07:46 -05:00
Tim Abbott e15c575977 Cache Django session objects using memcached.
(imported from commit 531ea34d5781b27401a7e2d90a0be99927d0bae5)
2013-01-10 16:59:36 -05:00
Tim Abbott bd05bdd777 Cache client objects in get_client.
This should remove a database query invoked from Tornado by our
decorators in the common case.

We use hashlib.sha1() on the key because memcached doesn't support
keys with whitespace in them.

(imported from commit 351ef4c76bc68e2d53f0e7ddca91dcf95e7bb2a6)
2013-01-10 16:59:36 -05:00
Tim Abbott 0a84d7ac62 Fix running test suite on a machine with caching enabled.
(imported from commit d5a18fd0af24b5c1602d027f1793eceba5a8f8a5)
2013-01-10 16:59:36 -05:00
Tim Abbott 77b7c1ead3 Explicitly error out when running tests improperly.
(imported from commit 8224aef3e327010f8ffdcf4dc966a1ccdbb8714c)
2013-01-10 16:59:36 -05:00
Tim Abbott af88c10c5e Add tools/test-backend script to run backend tests.
(imported from commit fde4c7deb1e64e8cca9d62cda905f13d90392961)
2013-01-10 16:59:36 -05:00
Tim Abbott 52589ca6fb Fix running "./manage.py test zephyr --settings=humbug.test_settings"
Previously it wouldn't work due to using the wrong port numbers.

This commit also has the side effect of fixing the fact that our
frontend tests would send real emails and log events to the real
message log.

(imported from commit f2cf400e6061c089627acba2759d588981ecf5bb)
2013-01-10 16:59:36 -05:00
Tim Abbott 536027aa66 decorators: Use select_related() when getting the UserProfile objects.
This should save a database query when we later need to access fields
such as the user's realm name in format_updates_response.

(imported from commit ceef726db9e917cfb0b47061130d7299ee64890d)
2013-01-10 16:59:36 -05:00
Tim Abbott f65ad3d59b Remove obsolete check for empty users string.
This code is from a previous protocol where the users array was posted
as a comma-separate list, rather than encoded via json.

(imported from commit 3a2edfcbf250a7eef305b2e98018c1361cc2fffe)
2013-01-10 16:59:36 -05:00
Tim Abbott 45b9de1e85 tornado: Remove UserProfile database queries from notify_new_message.
(imported from commit a23ce0cf7b8497e2ba7bc048d6fcf373f7ad913d)
2013-01-10 16:59:36 -05:00
Tim Abbott 8fe1edb6b0 tornado: Remove database queries from notify_pointer_update.
(imported from commit 218d5b804a4b4d9f7a1e9305165fd21820c26240)
2013-01-10 16:59:36 -05:00
Tim Abbott c3c59e938c Cache user pointers as they pass through Tornado.
(imported from commit 21a0dc0008ea5d3ac11388d3dd8d8cf8fa8a7e01)
2013-01-10 16:59:36 -05:00
Tim Abbott 62aed7c527 tornado: Move the add_*_callback functions a little earlier.
(imported from commit 2925e345fb9bd44c605350aac631c65a8f0601b6)
2013-01-10 16:59:36 -05:00
Tim Abbott 7274b24018 Callbacks: Reference users by user_profile_id, not user_id.
This is for consistency with the rest of our code dealing with message
delivery, which always uses the user_profile_id.

(imported from commit 5bf10bb9b994b0a98d3a22bd0bd86e542ab8a2ee)
2013-01-10 16:59:36 -05:00
Tim Abbott 3c10a2e6a0 Move bulk_create_* methods to bulk_create.py.
(imported from commit 30d5f86209f9c8807516f0440276fafeb6590c1a)
2013-01-10 16:59:36 -05:00
Tim Abbott 21c2317bd2 Move callbacks library to tornadoviews.py.
(imported from commit a4e545d82133ae9dc34e283e3bf268225e35f400)
2013-01-10 16:59:36 -05:00
Waseem Daher 66af2da9ed Cause update_floating_recipient_bar to get called less frequently.
Putting update_floating_recipient_bar in the old location caused it to
be called on every single keypress, which is unnecessarily
expensive. Instead, just call it once when we think we might actually
need it: after initiating a narrow.

(imported from commit a6c1518c4001a2dde44d7b512236795da3ccd351)
2013-01-10 14:19:29 -05:00