Anders Kaseorg
e7ed907cf6
python: Convert deprecated Django ugettext alias to gettext.
...
django.utils.translation.ugettext is a deprecated alias of
django.utils.translation.gettext as of Django 3.0, and will be removed
in Django 4.0.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2021-04-15 18:01:34 -07:00
Sumanth V Rao
7f6fe128f6
hotspots: Add TUTORIAL_ENABLED setting to toggle INTRO_HOTSPOTS.
...
We add a TUTORIAL_ENABLED setting for self-hosters who want to
disable the tutorial entirely on their system. For this, the
default value (True) is placed in default_settings.py, which
can be overwritten by adding an entry in /etc/zulip/settings.py.
2021-03-30 14:46:42 -07:00
Sumanth V Rao
829f9272d2
hotspots: Extract INTRO_HOTSPOTS from ALL_HOTSPOTS.
...
Its likely that we would implement new hotspots that aren't
a part of the tutorial hotspots, in the future. For instance,
a hotspot to advertise new features. Hence, grouping them into
categories like INTRO_HOTSPOTS would be a good start. We also
have an aggregate of all types of hotspots we may add in the
future, under ALL_HOTSPOTS.
2021-02-26 15:02:48 -08:00
Sumanth V Rao
540cca595c
hotspots: Fix typos in function name and code comment.
2021-02-15 18:33:21 -08:00
Anders Kaseorg
6e4c3e41dc
python: Normalize quotes with Black.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2021-02-12 13:11:19 -08:00
Anders Kaseorg
11741543da
python: Reformat with Black, except quotes.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2021-02-12 13:11:19 -08:00
Anders Kaseorg
bba43f35ca
i18n: Be deliberate about distinguishing ugettext and ugettext_lazy.
...
The early str conversions in zerver.models were defeating the point of
ugettext_lazy.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-10-18 14:31:15 -07:00
Anders Kaseorg
f91d287447
python: Pre-fix a few spots for better Black formatting.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-09-03 17:51:09 -07:00
Vishnu KS
8a993aa7e7
hotspots: Use ugettext_lazy for i18n.
...
Since ALL_HOTSPOTS is a global object, it is initialized
at the time the backend server is started. Hence, the
title and description is translated only once. Using
ugettext_lazy makes sure that the strings are translated
in each and every request according to the language
of the user.
Fixes #16224
2020-08-31 11:22:54 -07:00
Anders Kaseorg
365fe0b3d5
python: Sort imports with isort.
...
Fixes #2665 .
Regenerated by tabbott with `lint --fix` after a rebase and change in
parameters.
Note from tabbott: In a few cases, this converts technical debt in the
form of unsorted imports into different technical debt in the form of
our largest files having very long, ugly import sequences at the
start. I expect this change will increase pressure for us to split
those files, which isn't a bad thing.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-06-11 16:45:32 -07:00
Anders Kaseorg
fead14951c
python: Convert assignment type annotations to Python 3.6 style.
...
This commit was split by tabbott; this piece covers the vast majority
of files in Zulip, but excludes scripts/, tools/, and puppet/ to help
ensure we at least show the right error messages for Xenial systems.
We can likely further refine the remaining pieces with some testing.
Generated by com2ann, with whitespace fixes and various manual fixes
for runtime issues:
- invoiced_through: Optional[LicenseLedger] = models.ForeignKey(
+ invoiced_through: Optional["LicenseLedger"] = models.ForeignKey(
-_apns_client: Optional[APNsClient] = None
+_apns_client: Optional["APNsClient"] = None
- notifications_stream: Optional[Stream] = models.ForeignKey('Stream', related_name='+', null=True, blank=True, on_delete=CASCADE)
- signup_notifications_stream: Optional[Stream] = models.ForeignKey('Stream', related_name='+', null=True, blank=True, on_delete=CASCADE)
+ notifications_stream: Optional["Stream"] = models.ForeignKey('Stream', related_name='+', null=True, blank=True, on_delete=CASCADE)
+ signup_notifications_stream: Optional["Stream"] = models.ForeignKey('Stream', related_name='+', null=True, blank=True, on_delete=CASCADE)
- author: Optional[UserProfile] = models.ForeignKey('UserProfile', blank=True, null=True, on_delete=CASCADE)
+ author: Optional["UserProfile"] = models.ForeignKey('UserProfile', blank=True, null=True, on_delete=CASCADE)
- bot_owner: Optional[UserProfile] = models.ForeignKey('self', null=True, on_delete=models.SET_NULL)
+ bot_owner: Optional["UserProfile"] = models.ForeignKey('self', null=True, on_delete=models.SET_NULL)
- default_sending_stream: Optional[Stream] = models.ForeignKey('zerver.Stream', null=True, related_name='+', on_delete=CASCADE)
- default_events_register_stream: Optional[Stream] = models.ForeignKey('zerver.Stream', null=True, related_name='+', on_delete=CASCADE)
+ default_sending_stream: Optional["Stream"] = models.ForeignKey('zerver.Stream', null=True, related_name='+', on_delete=CASCADE)
+ default_events_register_stream: Optional["Stream"] = models.ForeignKey('zerver.Stream', null=True, related_name='+', on_delete=CASCADE)
-descriptors_by_handler_id: Dict[int, ClientDescriptor] = {}
+descriptors_by_handler_id: Dict[int, "ClientDescriptor"] = {}
-worker_classes: Dict[str, Type[QueueProcessingWorker]] = {}
-queues: Dict[str, Dict[str, Type[QueueProcessingWorker]]] = {}
+worker_classes: Dict[str, Type["QueueProcessingWorker"]] = {}
+queues: Dict[str, Dict[str, Type["QueueProcessingWorker"]]] = {}
-AUTH_LDAP_REVERSE_EMAIL_SEARCH: Optional[LDAPSearch] = None
+AUTH_LDAP_REVERSE_EMAIL_SEARCH: Optional["LDAPSearch"] = None
Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
2020-04-22 11:02:32 -07:00
Tim Abbott
cefebd87a4
docs: Mention bug in ALWAYS_SEND_ALL_HOTSPOTS feature.
...
This should avoid some wasted time.
2019-02-27 10:21:30 -08:00
Rishi Gupta
36472413e4
hotspots: Add hotspot for gear menu.
2019-02-05 12:19:21 -08:00
Vishnu Ks
b639778d0f
signup: Copy hotspots when importing settings.
2018-06-16 08:50:49 -07:00
Aditya Bansal
1f9244e060
zerver/lib: Change use of typing.Text to str.
2018-05-10 14:19:49 -07:00
Tim Abbott
77ca9e7eca
hotspots: Tag strings for translation.
2018-04-18 09:33:09 -07:00
Nikhil Kumar Mishra
f29a1918f3
hotspots: Add ALWAYS_SEND_ALL_HOTSPOTS in dev_settings.
...
Replace the local variable SEND_ALL from get_next_hotspots.
Add unit test for the same.
2018-03-19 10:39:43 -07:00
rht
33b1a541d7
zerver/lib: Use python 3 syntax for typing.
...
With tweaks by tabbott to fix line spacing.
2017-11-18 16:09:04 -08:00
derAnfaenger
816c4a4e79
mypy: Fix typo in type statement.
2017-11-08 11:16:18 -08:00
Rishi Gupta
b9c8747bd0
hotspots: Use tutorial_status to manage whether we show hotspots.
2017-09-15 04:14:52 -07:00
Rishi Gupta
ac48772732
hotspots.js: Fix timeout millisecond conversion.
2017-09-15 04:14:52 -07:00
Rishi Gupta
21f076ac5d
hotspots.py: Clean up SEND_ALL codepath.
...
Moves SEND_ALL to inside get_next_hotspots, since it is not something other
files should call.
Also changes the delay to 0s, and gates the code behind an
`if settings.DEVELOPMENT`.
2017-09-15 04:14:52 -07:00
Rishi Gupta
a8deedbbb6
hotspots: Replace stream_settings with intro_streams and intro_topics.
2017-09-15 04:14:52 -07:00
Rishi Gupta
0677bd2a6d
hotspots: Rename and update new_topic_button.
2017-09-15 04:14:52 -07:00
Rishi Gupta
4a383544af
hotspots: Rename and update click_to_reply.
2017-09-15 04:14:52 -07:00
Jack Zhang
d9c1ad5db2
hotspots.py: Add SEND_ALL flag.
...
Used to view all hotspots in development.
2017-08-05 18:32:37 -07:00
Jack Zhang
11c27015f0
hotspots: Refactor backend for hotspots v2.
2017-07-28 16:34:13 -07:00
Rishi Gupta
dbac262509
hotspots: Change hotspots to have a name and a description.
2017-06-13 12:59:33 -07:00
Amy Liu
6f061beb46
hotspots: Add backend support for tutorial hotspots.
...
This commit adds the backend support for a new style of tutorial which
allows for highlighting of multiple areas of the page with hotspots that
disappear when clicked by the user.
2017-03-29 11:34:32 -07:00