zerver: Text-wrap long lines exceeding 110.

This commit is contained in:
rht 2017-11-09 11:45:56 +01:00 committed by Tim Abbott
parent 23a481c5d2
commit a93b7c40a7
11 changed files with 44 additions and 22 deletions

View File

@ -12,7 +12,8 @@ import logging
import time import time
class Command(BaseCommand): class Command(BaseCommand):
help = """Checks redis to make sure our rate limiting system hasn't grown a bug and left redis with a bunch of data help = """Checks redis to make sure our rate limiting system hasn't grown a bug
and left redis with a bunch of data
Usage: ./manage.py [--trim] check_redis""" Usage: ./manage.py [--trim] check_redis"""

View File

@ -45,9 +45,11 @@ Create default stream groups which the users can choose during sign up.
streams.append(stream) streams.append(stream)
try: try:
default_stream_group = DefaultStreamGroup.objects.get(name=options["default_stream_group"], realm=realm) default_stream_group = DefaultStreamGroup.objects.get(
name=options["default_stream_group"], realm=realm)
except DefaultStreamGroup.DoesNotExist: except DefaultStreamGroup.DoesNotExist:
default_stream_group = DefaultStreamGroup.objects.create(name=options["default_stream_group"], realm=realm) default_stream_group = DefaultStreamGroup.objects.create(
name=options["default_stream_group"], realm=realm)
default_stream_group.streams = streams default_stream_group.streams = streams
default_stream_group.save() default_stream_group.save()

View File

@ -46,7 +46,8 @@ Omit both <email> and <full name> for interactive user creation.
help='The file containing the password of the new user.') help='The file containing the password of the new user.')
parser.add_argument('email', metavar='<email>', type=str, nargs='?', default=argparse.SUPPRESS, parser.add_argument('email', metavar='<email>', type=str, nargs='?', default=argparse.SUPPRESS,
help='email address of new user') help='email address of new user')
parser.add_argument('full_name', metavar='<full name>', type=str, nargs='?', default=argparse.SUPPRESS, parser.add_argument('full_name', metavar='<full name>', type=str, nargs='?',
default=argparse.SUPPRESS,
help='full name of new user') help='full name of new user')
self.add_realm_args(parser, True, "The name of the existing realm to which to add the user.") self.add_realm_args(parser, True, "The name of the existing realm to which to add the user.")

View File

@ -43,7 +43,8 @@ Usage: ./manage.py deliver_email
with lockfile("/tmp/zulip_email_deliver.lockfile"): with lockfile("/tmp/zulip_email_deliver.lockfile"):
while True: while True:
email_jobs_to_deliver = ScheduledEmail.objects.filter(scheduled_timestamp__lte=timezone_now()) email_jobs_to_deliver = ScheduledEmail.objects.filter(
scheduled_timestamp__lte=timezone_now())
if email_jobs_to_deliver: if email_jobs_to_deliver:
for job in email_jobs_to_deliver: for job in email_jobs_to_deliver:
try: try:
@ -53,5 +54,6 @@ Usage: ./manage.py deliver_email
logger.warning("%r not delivered" % (job,)) logger.warning("%r not delivered" % (job,))
time.sleep(10) time.sleep(10)
else: else:
# Less load on the db during times of activity, and more responsiveness when the load is low # Less load on the db during times of activity,
# and more responsiveness when the load is low
time.sleep(2) time.sleep(2)

View File

@ -31,7 +31,8 @@ class Command(BaseCommand):
sys.exit(1) sys.exit(1)
url = generate_realm_creation_url() url = generate_realm_creation_url()
self.stdout.write(self.style.SUCCESS("Please visit the following secure single-use link to register your ")) self.stdout.write(self.style.SUCCESS("Please visit the following "
"secure single-use link to register your "))
self.stdout.write(self.style.SUCCESS("new Zulip organization:\033[0m")) self.stdout.write(self.style.SUCCESS("new Zulip organization:\033[0m"))
self.stdout.write("") self.stdout.write("")
self.stdout.write(self.style.SUCCESS(" \033[1;92m%s\033[0m" % (url,))) self.stdout.write(self.style.SUCCESS(" \033[1;92m%s\033[0m" % (url,)))

View File

@ -43,7 +43,8 @@ import a database dump from one or more JSON files."""
if count: if count:
print("Zulip instance is not empty, found %d rows in %s table. " print("Zulip instance is not empty, found %d rows in %s table. "
% (count, model._meta.db_table)) % (count, model._meta.db_table))
print("You may use --destroy-rebuild-database to destroy and rebuild the database prior to import.") print("You may use --destroy-rebuild-database to destroy and "
"rebuild the database prior to import.")
exit(1) exit(1)
def do_destroy_and_rebuild_database(self, db_name: str) -> None: def do_destroy_and_rebuild_database(self, db_name: str) -> None:

View File

@ -25,7 +25,7 @@ unfortunately isn't extensible, so we can:
We are currently doing that last thing. It turns out there we are lucky We are currently doing that last thing. It turns out there we are lucky
for once: It's simply a matter of extending two regular expressions. for once: It's simply a matter of extending two regular expressions.
Credit for the approach goes to: Credit for the approach goes to:
http://stackoverflow.com/questions/2090717/getting-translation-strings-for-jinja2-templates-integrated-with-django-1-x http://stackoverflow.com/questions/2090717
""" """
@ -44,7 +44,8 @@ from django.utils.translation import template
from zerver.lib.str_utils import force_text from zerver.lib.str_utils import force_text
strip_whitespace_right = re.compile("(%s-?\\s*(trans|pluralize).*?-%s)\\s+" % (BLOCK_TAG_START, BLOCK_TAG_END), re.U) strip_whitespace_right = re.compile("(%s-?\\s*(trans|pluralize).*?-%s)\\s+" % (
BLOCK_TAG_START, BLOCK_TAG_END), re.U)
strip_whitespace_left = re.compile("\\s+(%s-\\s*(endtrans|pluralize).*?-?%s)" % ( strip_whitespace_left = re.compile("\\s+(%s-\\s*(endtrans|pluralize).*?-?%s)" % (
BLOCK_TAG_START, BLOCK_TAG_END), re.U) BLOCK_TAG_START, BLOCK_TAG_END), re.U)

View File

@ -64,7 +64,8 @@ class Command(ZulipBaseCommand):
user_emails_found = [user.email for user in users_to_activate] user_emails_found = [user.email for user in users_to_activate]
for user in user_emails: for user in user_emails:
if user not in user_emails_found: if user not in user_emails_found:
raise Exception('User with email %s was not found. Check if the email is correct.' % (user)) raise Exception('User with email %s was not found. '
'Check if the email is correct.' % (user))
users_activated = do_soft_activate_users(users_to_activate) users_activated = do_soft_activate_users(users_to_activate)
logger.info('Soft Reactivated %d user(s)' % (len(users_activated))) logger.info('Soft Reactivated %d user(s)' % (len(users_activated)))
@ -86,7 +87,8 @@ class Command(ZulipBaseCommand):
else: else:
if realm is not None: if realm is not None:
filter_kwargs = dict(user_profile__realm=realm) filter_kwargs = dict(user_profile__realm=realm)
users_to_deactivate = get_users_for_soft_deactivation(int(options['inactive_for']), filter_kwargs) users_to_deactivate = get_users_for_soft_deactivation(int(options['inactive_for']),
filter_kwargs)
if users_to_deactivate: if users_to_deactivate:
users_deactivated = do_soft_deactivate_users(users_to_deactivate) users_deactivated = do_soft_deactivate_users(users_to_deactivate)

View File

@ -374,7 +374,8 @@ def get_realm_domains(realm):
class RealmEmoji(models.Model): class RealmEmoji(models.Model):
author = models.ForeignKey('UserProfile', blank=True, null=True, on_delete=CASCADE) author = models.ForeignKey('UserProfile', blank=True, null=True, on_delete=CASCADE)
realm = models.ForeignKey(Realm, on_delete=CASCADE) # type: Realm realm = models.ForeignKey(Realm, on_delete=CASCADE) # type: Realm
# Second part of the regex (negative lookbehind) disallows names ending with one of the punctuation characters # Second part of the regex (negative lookbehind) disallows names ending with
# one of the punctuation characters
name = models.TextField(validators=[MinLengthValidator(1), name = models.TextField(validators=[MinLengthValidator(1),
RegexValidator(regex=r'^[0-9a-z.\-_]+(?<![.\-_])$', RegexValidator(regex=r'^[0-9a-z.\-_]+(?<![.\-_])$',
message=_("Invalid characters in emoji name"))]) # type: Text message=_("Invalid characters in emoji name"))]) # type: Text
@ -435,7 +436,8 @@ def filter_format_validator(value):
regex = re.compile(r'^[\.\/:a-zA-Z0-9_?=-]+%\(([a-zA-Z0-9_-]+)\)s[a-zA-Z0-9_-]*$') regex = re.compile(r'^[\.\/:a-zA-Z0-9_?=-]+%\(([a-zA-Z0-9_-]+)\)s[a-zA-Z0-9_-]*$')
if not regex.match(value): if not regex.match(value):
raise ValidationError('URL format string must be in the following format: `https://example.com/%(\w+)s`') raise ValidationError('URL format string must be in the following format: '
'`https://example.com/%(\w+)s`')
class RealmFilter(models.Model): class RealmFilter(models.Model):
realm = models.ForeignKey(Realm, on_delete=CASCADE) # type: Realm realm = models.ForeignKey(Realm, on_delete=CASCADE) # type: Realm
@ -479,7 +481,9 @@ def all_realm_filters():
# type: () -> Dict[int, List[Tuple[Text, Text, int]]] # type: () -> Dict[int, List[Tuple[Text, Text, int]]]
filters = defaultdict(list) # type: DefaultDict[int, List[Tuple[Text, Text, int]]] filters = defaultdict(list) # type: DefaultDict[int, List[Tuple[Text, Text, int]]]
for realm_filter in RealmFilter.objects.all(): for realm_filter in RealmFilter.objects.all():
filters[realm_filter.realm_id].append((realm_filter.pattern, realm_filter.url_format_string, realm_filter.id)) filters[realm_filter.realm_id].append((realm_filter.pattern,
realm_filter.url_format_string,
realm_filter.id))
return filters return filters
@ -503,7 +507,8 @@ class UserProfile(AbstractBaseUser, PermissionsMixin):
since they can't be used to read messages. since they can't be used to read messages.
""" """
INCOMING_WEBHOOK_BOT = 2 INCOMING_WEBHOOK_BOT = 2
# This value is also being used in static/js/settings_bots.js. On updating it here, update it there as well. # This value is also being used in static/js/settings_bots.js.
# On updating it here, update it there as well.
OUTGOING_WEBHOOK_BOT = 3 OUTGOING_WEBHOOK_BOT = 3
""" """
Embedded bots run within the Zulip server itself; events are added to the Embedded bots run within the Zulip server itself; events are added to the
@ -1207,7 +1212,8 @@ class Message(AbstractMessage):
@staticmethod @staticmethod
def content_has_image(content): def content_has_image(content):
# type: (Text) -> bool # type: (Text) -> bool
return bool(re.search(r'[/\-]user[\-_]uploads[/\.-]\S+\.(bmp|gif|jpg|jpeg|png|webp)', content, re.IGNORECASE)) return bool(re.search(r'[/\-]user[\-_]uploads[/\.-]\S+\.(bmp|gif|jpg|jpeg|png|webp)',
content, re.IGNORECASE))
@staticmethod @staticmethod
def content_has_link(content): def content_has_link(content):
@ -1972,7 +1978,8 @@ class Service(models.Model):
def get_realm_outgoing_webhook_services_name(realm): def get_realm_outgoing_webhook_services_name(realm):
# type: (Realm) -> List[Any] # type: (Realm) -> List[Any]
return list(Service.objects.filter(user_profile__realm=realm, user_profile__is_bot=True, return list(Service.objects.filter(
user_profile__realm=realm, user_profile__is_bot=True,
user_profile__bot_type=UserProfile.OUTGOING_WEBHOOK_BOT).values('name')) user_profile__bot_type=UserProfile.OUTGOING_WEBHOOK_BOT).values('name'))
def get_bot_services(user_profile_id): def get_bot_services(user_profile_id):

View File

@ -61,8 +61,11 @@ class BadNarrowOperator(JsonableError):
# type: () -> str # type: () -> str
return _('Invalid narrow operator: {desc}') return _('Invalid narrow operator: {desc}')
Query = Any # TODO: Should be Select, but sqlalchemy stubs are busted # TODO: Should be Select, but sqlalchemy stubs are busted
ConditionTransform = Any # TODO: should be Callable[[ColumnElement], ColumnElement], but sqlalchemy stubs are busted Query = Any
# TODO: should be Callable[[ColumnElement], ColumnElement], but sqlalchemy stubs are busted
ConditionTransform = Any
# When you add a new operator to this, also update zerver/lib/narrow.py # When you add a new operator to this, also update zerver/lib/narrow.py
class NarrowBuilder: class NarrowBuilder:

View File

@ -38,7 +38,8 @@ def report_send_times(request: HttpRequest, user_profile: UserProfile,
received: int=REQ(converter=to_non_negative_int, default=-1), received: int=REQ(converter=to_non_negative_int, default=-1),
displayed: int=REQ(converter=to_non_negative_int, default=-1), displayed: int=REQ(converter=to_non_negative_int, default=-1),
locally_echoed: bool=REQ(validator=check_bool, default=False), locally_echoed: bool=REQ(validator=check_bool, default=False),
rendered_content_disparity: bool=REQ(validator=check_bool, default=False)) -> HttpResponse: rendered_content_disparity: bool=REQ(validator=check_bool,
default=False)) -> HttpResponse:
received_str = "(unknown)" received_str = "(unknown)"
if received > 0: if received > 0:
received_str = str(received) received_str = str(received)