Commit Graph

39754 Commits

Author SHA1 Message Date
Steve Howell e31326c823 refactor: Extract get_digest_context.
This eliminates the union type and boolean parameter,
and it makes it a bit easier to migrate to a
bulk-get approach.
2020-11-05 09:36:59 -08:00
Steve Howell 217967f743 refactor: Extract get_hot_topics.
This extraction will make a bit more sense when
we start doing bulk operations on a realm to
get digests, but even now, it encapsulates the
slightly complex way we cherry-pick the top 4
topics for a user.
2020-11-05 09:36:59 -08:00
Steve Howell 5a6d6f81ff refactor: Extract get_recent_topic_activity. 2020-11-05 09:36:59 -08:00
Steve Howell f987b014b3 refactor: Rename conversation to topic.
Not only is topic shorter, but the name makes
it clear that we're not dealing with abstract
conversations here--we are truly bucketing by
topic.
2020-11-05 09:36:59 -08:00
Steve Howell 6ac3cd3534 refactor: Use list of topics, not tuples. 2020-11-05 09:36:59 -08:00
Steve Howell 878e938a89 minor: Rename conversation_diversity to conversation_senders. 2020-11-05 09:36:59 -08:00
Steve Howell 6dc8250e9a mypy: Add TopicKey type for digests. 2020-11-05 09:36:59 -08:00
Steve Howell 96f6064b18 refactor: Move Messages query down the digest stack.
This prep step is mostly for diff hygiene; the next
commit will make the code a bit nicer.

The original code here had the nice property that
most (but not all) of the DB work happened up
front in `handle_digest_email`, and none of the
DB work was delegated to the callers.  But I
prefer the tradeoff of making the helpers a bit
more cohesive--let them get the data they need.
And we have query-count coverage in our tests,
so there's no real danger of having helpers
down in the stack insidiously doing a bunch of
extra DB hops.
2020-11-05 09:36:59 -08:00
Anders Kaseorg 13c11ec5f3 openapi: Fix escaping in curl command generation.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-11-05 09:36:31 -08:00
Steve Howell c1f134a3a4 performance: Use ORM to fetch sender in render_markdown.
In 709493cd75 (Feb 2017)
I added code to render_markdown that re-fetched the
sender of the message, to detect whether the message is
a bot.

It's better to just let the ORM fetch this.  The
message object should already have sender.

The diff makes it look like we are saving round trips
to the database, which is true in some cases.  For
the main message-send codepath, though, we are only
saving a trip to memcached, since the middleware
will have put our sender's user object into the
cache.  The test_message_send test calls internally
to check_send_stream_message, so it was actually
hitting the database in render_markdown (prior to
my change).
2020-11-05 09:35:15 -08:00
Steve Howell 637f596751 tests: Fix queries_captured to clear cache up front.
Before this change we were clearing the cache on
every SQL usage.

The code to do this was added in February 2017
in 6db4879f9c.

Now we clear the cache just one time, but before
the action/request under test.

Tests that want to count queries with a warm
cache now specify keep_cache_warm=True.  Those
tests were particularly flawed before this change.

In general, the old code both over-counted and
under-counted queries.

It under-counted SQL usage for requests that were
able to pull some data out of a warm cache before
they did any SQL.  Typically this would have bypassed
the initial query to get UserProfile, so you
will see several off-by-one fixes.

The old code over-counted SQL usage to the extent
that it's a rather extreme assumption that during
an action itself, the entries that you put into
the cache will get thrown away.  And that's essentially
what the prior code simulated.

Now, it's still bad if an action keeps hitting the
cache for no reason, but it's not as bad as hitting
the database.  There doesn't appear to be any evidence
of us doing something silly like fetching the same
data from the cache in a loop, but there are
opportunities to prevent second or third round
trips to the cache for the same object, if we
can re-structure the code so that the same caller
doesn't have two callees get the same data.

Note that for invites, we have some cache hits
that are due to the nature of how we serialize
data to our queue processor--we generally just
serialize ids, and then re-fetch objects when
we pop them off the queue.
2020-11-05 09:35:15 -08:00
Kamal Marhubi 9c176bc0fa markdown: Remove border colour on inline code links
The visual noise from the blue border has bothered me forever and I
finally decided to do something about it. I don't know if this is the
best solution, but I do think it's a lot better than the status quo!
2020-11-05 09:32:05 -08:00
YashRE42 79d077135e navbar: Remove :not() text-overflow selector.
Here we change from using clip to using ellipses on stream name.
2020-11-03 16:54:09 -08:00
YashRE42 af221526f2 navbar: Remove unnecessary :not() selector.
Replace not selector with equivalent properties.
2020-11-03 16:54:09 -08:00
YashRE42 4c0b7f9e9b messsage_view_header: Remove flex set via :not().
This did not server any purpose.
2020-11-03 16:54:09 -08:00
Aman Agrawal 965b443075 subscription_settings: Show eye icon for view stream button.
This reduces the unnecessary width that the button takes.
2020-11-03 16:48:23 -08:00
Tim Abbott b6ec66e972 github: Enable retention periods for uploaded artifacts.
This prevents Zulip CI from eventually consuming large amounts of
storage on one's GitHub account.

I picked a longer retention period for the Puppeteer artifacts because
humans look at those; the production tarballs are unlikely to be used
10 minutes after the run completes as they are just for the next stage
fo the build; certainly 14 days seems ample for any debugging.
2020-11-03 16:36:26 -08:00
Tim Abbott eae14baa05 api: URL-quote password when testing authentication API.
The passwords generated for our development environment / test suite
include the `+` character, which needs to be quoted when encoded as an
HTTP POST parameter.

This is hopefully sufficient to fix the CI failures we've seen with
the tests for POST /api/v1/fetch_api_key; I haven't reproduced the
failure so am not completely sure.
2020-11-03 15:55:30 -08:00
Aman Agrawal b2841c7d02 dev_requirements: Upgrade zulint.
This tells users how autofix errors for linters which support it.
This is important since only way to fix prettier errors is
running lint with `--fix` which now the linter will gladly print
with the error.
2020-11-03 14:49:02 -08:00
YashRE42 967efc32d2 widgets: Remove tictactoe example widget.
Steve asked me to remove this, since the tictactoe game was always
intended as a proof of concept. Now that we have poll and todo
widgets, the sample code for tictactoe has much less value.

We replace the content and type in test_widgets.py to maintain
coverage.
2020-11-03 14:46:39 -08:00
Aman Agrawal 87cdd8433d home: Allow logged out user through home.
We allow user to load webapp without log-in. This is only
be enabled for developed purposes now. Production setups will
see no changes.
2020-11-02 17:07:12 -08:00
YashRE42 13f95dfc2b composebox_typeahead: Refactor content_highlighter to use switch/case.
This refactor should make no functional changes.
2020-11-02 16:50:51 -08:00
YashRE42 f843c2285d composebox_typeahead: Use switch case for content_typeahead_selected.
This refactor should make no functional changes.
2020-11-02 16:50:51 -08:00
shanukun be39672026 api_docs: Document the /fetch-api-key endpoint.
With tweaks by tabbott to document addition details.

Fixes: #16408.
2020-11-02 16:45:42 -08:00
shanukun da9d586254 openapi: Add parameter examples for fetch api key endpoints. 2020-11-02 16:45:42 -08:00
Aman Agrawal 190af58d18 subscription_settings: Fix subscriber search box width.
These properties were causing the search box to have a very small
width. Removing it returns search box to normal width.
2020-11-02 16:30:57 -08:00
Anders Kaseorg 26f630dfa1 fenced_code: Escape code_language on output in wrapped_code.
Strings should be escaped at the point of interpolation into a
template, not before.  In this case, the early escape was hiding the
bug that code_language was only escaped if it was not found in
pygments_data.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-11-02 16:23:48 -08:00
Anders Kaseorg ac5cbf7693 Revert "markdown: Escape lang when echoing back custom non-pygments languages."
This reverts commit 564b199fe6, which
was part of #16308.

Escaping is either required or incorrect; it is never “defensive”.
This escaping is incorrect.  lxml already escapes attributes during
serialization (any other behavior would be a serious bug), and
additional escaping just results in double escaping.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-11-02 16:23:48 -08:00
aniketsonu 28aaf24a61 invite: Add Copy-to-Clipboard button for multiuse links.
A convenient copy-to-clipboard button was added in the Invite users to
Zulip modal, to make it slightly more convenient to share the
generated links.

The formatting is extracted to a template to make i18n and variable
substitution simpler.

Tweaked by tabbott significantly to simplify JS, HTML, and CSS.

Fixes #16442.
2020-11-02 15:34:50 -08:00
Aman Agrawal 7d21f574b7 subscriptions_overlay: Increase line height of stream name.
This stop some part of stream name from being hidden.
2020-11-02 12:15:33 -08:00
Aman Agrawal aa5a032087 subscriptions_overlay: Stop button from overflowing out of view.
This media query makes the buttons overflow out of view and are
not visible for large stream names.
2020-11-02 12:13:12 -08:00
Aman Agrawal 22e598715e create_stream: Remove no longer required condition.
The issue raised in the comment here seems to have been
fixed on its own. Tested on chrome and safari on macOS.

This was introduced in 2dd36aa422.
2020-11-02 12:12:01 -08:00
Aman Agrawal a144f56a00 compose: Remove breaking css property.
When compose box is open we already set
```
    $(".new_message_textarea").css("min-height", "3em");
```
in compose_actions.js.

So, this property actually reduces the min-height slightly which
hides the topic when it is long enough to span in two lines.
2020-11-02 12:10:36 -08:00
Aman Agrawal a26c0b6584 compose: Remove unused css property.
This property never gets used and is not necessary since it
is overridden by
```
        .button.small {
            font-size: 1em;
            padding: 3px 10px;
        }

```
in compose.css

which looks good enough.
2020-11-02 12:10:36 -08:00
Aman Agrawal e7a5588cb3 drafts: Remove unused css property.
Since width of drafts-container is set to 58% above, this
property never gets used.
2020-11-02 12:09:34 -08:00
Aman Agrawal 93e99d0ebd settings: Remove unused css property.
There is no sidebar-bottom-anchor in our codebase, because it was
removed in 96caebf38f.
2020-11-02 12:07:30 -08:00
akshatdalton 620e9cbf72 markdown: Fix merging of separate quotations.
Initally, when writing two or more quotes, having
a blank line in between them, merges those quotes.
This created confusion especially in "quote and reply".

This commit fixes such issues. Now two or more quotes
having a blank line in between them, will not get merged.

This change is correct both for usability and for improving our
compatibility with CommonMark.

Fixes #14379.
2020-10-30 15:21:15 -07:00
Tim Abbott cba7425cdc docs: Clean up email testing docs a bit more. 2020-10-30 12:15:27 -07:00
Tim Abbott f2b9109be5 docs: Tweak email testing notes a bit more. 2020-10-30 12:08:36 -07:00
Vishnu KS ebe92fe70a docs: Simplify email testing notes section.
No good reason for one note to be bold compared to
other notes.
2020-10-30 11:50:30 -07:00
Vishnu KS 7a6285ede7 email testing: Store the SMTP settings in dev-secrets.
It's super annoying to set this up each time I have to test
email templates in gmail.
2020-10-30 11:50:30 -07:00
Vishnu KS 95cd031274 version: Bump provision version for updating email templates. 2020-10-30 11:50:30 -07:00
Vishnu KS ff754ee528 emails: Pass help link as variable in password reset email. 2020-10-30 11:50:30 -07:00
Vishnu KS 0eec12ad8b emails: Pass reset link as variable in notify new login email. 2020-10-30 11:50:30 -07:00
Vishnu KS 0853c866a9 emails: Use link tag macro for realm uri in password reset email. 2020-10-30 11:50:30 -07:00
Vishnu KS e53008410a emails: Use email tag macro for email in password reset email. 2020-10-30 11:50:30 -07:00
Vishnu KS 1c08ea8134 emails: Use trans tag for ladap username in followup day 1 email. 2020-10-30 11:50:30 -07:00
Vishnu KS abc5fb6cea emails: Use email tag macro for email in followup day1 email. 2020-10-30 11:50:30 -07:00
Vishnu KS df882d1563 emails: Use link tag macro for realm_uri in followup day1 email. 2020-10-30 11:50:30 -07:00
Vishnu KS cb6ab43ba2 emails: Use link tag macro for realm_uri in realm reactivation email. 2020-10-30 11:50:30 -07:00