mirror of https://github.com/zulip/zulip.git
Extract a zephyr.py library.
Right now it only has one function, but the function we removed never really belonged in actions.py, and now we have better test coverage on actions.py, which is an important module to get to 100%.
This commit is contained in:
parent
5bc33213c9
commit
413a0174f4
|
@ -90,6 +90,7 @@ not_yet_fully_covered = {
|
||||||
'zerver/lib/timeout.py',
|
'zerver/lib/timeout.py',
|
||||||
'zerver/lib/unminify.py',
|
'zerver/lib/unminify.py',
|
||||||
'zerver/lib/utils.py',
|
'zerver/lib/utils.py',
|
||||||
|
'zerver/lib/zephyr.py',
|
||||||
# Low priority for coverage
|
# Low priority for coverage
|
||||||
'zerver/lib/ccache.py',
|
'zerver/lib/ccache.py',
|
||||||
'zerver/lib/generate_test_data.py',
|
'zerver/lib/generate_test_data.py',
|
||||||
|
|
|
@ -67,6 +67,7 @@ from zerver.lib.users import (
|
||||||
user_ids_to_users
|
user_ids_to_users
|
||||||
)
|
)
|
||||||
from zerver.lib.user_groups import create_user_group, access_user_group_by_id
|
from zerver.lib.user_groups import create_user_group, access_user_group_by_id
|
||||||
|
|
||||||
from zerver.models import Realm, RealmEmoji, Stream, UserProfile, UserActivity, \
|
from zerver.models import Realm, RealmEmoji, Stream, UserProfile, UserActivity, \
|
||||||
RealmDomain, Service, SubMessage, \
|
RealmDomain, Service, SubMessage, \
|
||||||
Subscription, Recipient, Message, Attachment, UserMessage, RealmAuditLog, \
|
Subscription, Recipient, Message, Attachment, UserMessage, RealmAuditLog, \
|
||||||
|
@ -126,16 +127,14 @@ from zerver.lib.exceptions import JsonableError, ErrorCode, BugdownRenderingExce
|
||||||
from zerver.lib.sessions import delete_user_sessions
|
from zerver.lib.sessions import delete_user_sessions
|
||||||
from zerver.lib.upload import attachment_url_re, attachment_url_to_path_id, \
|
from zerver.lib.upload import attachment_url_re, attachment_url_to_path_id, \
|
||||||
claim_attachment, delete_message_image, upload_emoji_image
|
claim_attachment, delete_message_image, upload_emoji_image
|
||||||
from zerver.lib.str_utils import NonBinaryStr, force_str
|
from zerver.lib.str_utils import NonBinaryStr
|
||||||
from zerver.tornado.event_queue import request_event_queue, send_event
|
from zerver.tornado.event_queue import request_event_queue, send_event
|
||||||
from zerver.lib.types import ProfileFieldData
|
from zerver.lib.types import ProfileFieldData
|
||||||
|
|
||||||
from analytics.models import StreamCount
|
from analytics.models import StreamCount
|
||||||
|
|
||||||
import DNS
|
|
||||||
import ujson
|
import ujson
|
||||||
import time
|
import time
|
||||||
import traceback
|
|
||||||
import re
|
import re
|
||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
|
@ -858,26 +857,6 @@ def compute_irc_user_fullname(email: NonBinaryStr) -> NonBinaryStr:
|
||||||
def compute_jabber_user_fullname(email: NonBinaryStr) -> NonBinaryStr:
|
def compute_jabber_user_fullname(email: NonBinaryStr) -> NonBinaryStr:
|
||||||
return email.split("@")[0] + " (XMPP)"
|
return email.split("@")[0] + " (XMPP)"
|
||||||
|
|
||||||
def compute_mit_user_fullname(email: NonBinaryStr) -> NonBinaryStr:
|
|
||||||
try:
|
|
||||||
# Input is either e.g. username@mit.edu or user|CROSSREALM.INVALID@mit.edu
|
|
||||||
match_user = re.match(r'^([a-zA-Z0-9_.-]+)(\|.+)?@mit\.edu$', email.lower())
|
|
||||||
if match_user and match_user.group(2) is None:
|
|
||||||
answer = DNS.dnslookup(
|
|
||||||
"%s.passwd.ns.athena.mit.edu" % (match_user.group(1),),
|
|
||||||
DNS.Type.TXT)
|
|
||||||
hesiod_name = force_str(answer[0][0]).split(':')[4].split(',')[0].strip()
|
|
||||||
if hesiod_name != "":
|
|
||||||
return hesiod_name
|
|
||||||
elif match_user:
|
|
||||||
return match_user.group(1).lower() + "@" + match_user.group(2).upper()[1:]
|
|
||||||
except DNS.Base.ServerError:
|
|
||||||
pass
|
|
||||||
except Exception:
|
|
||||||
print("Error getting fullname for %s:" % (email,))
|
|
||||||
traceback.print_exc()
|
|
||||||
return email.lower()
|
|
||||||
|
|
||||||
@cache_with_key(lambda realm, email, f: user_profile_by_email_cache_key(email),
|
@cache_with_key(lambda realm, email, f: user_profile_by_email_cache_key(email),
|
||||||
timeout=3600*24*7)
|
timeout=3600*24*7)
|
||||||
def create_mirror_user_if_needed(realm: Realm, email: str,
|
def create_mirror_user_if_needed(realm: Realm, email: str,
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
import re
|
||||||
|
import traceback
|
||||||
|
import DNS
|
||||||
|
|
||||||
|
from zerver.lib.str_utils import NonBinaryStr, force_str
|
||||||
|
|
||||||
|
def compute_mit_user_fullname(email: NonBinaryStr) -> NonBinaryStr:
|
||||||
|
try:
|
||||||
|
# Input is either e.g. username@mit.edu or user|CROSSREALM.INVALID@mit.edu
|
||||||
|
match_user = re.match(r'^([a-zA-Z0-9_.-]+)(\|.+)?@mit\.edu$', email.lower())
|
||||||
|
if match_user and match_user.group(2) is None:
|
||||||
|
answer = DNS.dnslookup(
|
||||||
|
"%s.passwd.ns.athena.mit.edu" % (match_user.group(1),),
|
||||||
|
DNS.Type.TXT)
|
||||||
|
hesiod_name = force_str(answer[0][0]).split(':')[4].split(',')[0].strip()
|
||||||
|
if hesiod_name != "":
|
||||||
|
return hesiod_name
|
||||||
|
elif match_user:
|
||||||
|
return match_user.group(1).lower() + "@" + match_user.group(2).upper()[1:]
|
||||||
|
except DNS.Base.ServerError:
|
||||||
|
pass
|
||||||
|
except Exception:
|
||||||
|
print("Error getting fullname for %s:" % (email,))
|
||||||
|
traceback.print_exc()
|
||||||
|
return email.lower()
|
|
@ -11,8 +11,8 @@ from zerver.lib.rate_limiter import (
|
||||||
remove_ratelimit_rule,
|
remove_ratelimit_rule,
|
||||||
RateLimitedUser,
|
RateLimitedUser,
|
||||||
)
|
)
|
||||||
|
from zerver.lib.zephyr import compute_mit_user_fullname
|
||||||
|
|
||||||
from zerver.lib.actions import compute_mit_user_fullname
|
|
||||||
from zerver.lib.test_classes import (
|
from zerver.lib.test_classes import (
|
||||||
ZulipTestCase,
|
ZulipTestCase,
|
||||||
)
|
)
|
||||||
|
|
|
@ -15,7 +15,7 @@ from django.utils.html import escape as escape_html
|
||||||
from zerver.lib import bugdown
|
from zerver.lib import bugdown
|
||||||
from zerver.lib.zcommand import process_zcommands
|
from zerver.lib.zcommand import process_zcommands
|
||||||
from zerver.lib.actions import recipient_for_emails, do_update_message_flags, \
|
from zerver.lib.actions import recipient_for_emails, do_update_message_flags, \
|
||||||
compute_mit_user_fullname, compute_irc_user_fullname, compute_jabber_user_fullname, \
|
compute_irc_user_fullname, compute_jabber_user_fullname, \
|
||||||
create_mirror_user_if_needed, check_send_message, do_update_message, \
|
create_mirror_user_if_needed, check_send_message, do_update_message, \
|
||||||
extract_recipients, truncate_body, render_incoming_message, do_delete_message, \
|
extract_recipients, truncate_body, render_incoming_message, do_delete_message, \
|
||||||
do_mark_all_as_read, do_mark_stream_messages_as_read, \
|
do_mark_all_as_read, do_mark_stream_messages_as_read, \
|
||||||
|
@ -36,6 +36,7 @@ from zerver.lib.topic_mutes import exclude_topic_mutes
|
||||||
from zerver.lib.utils import statsd
|
from zerver.lib.utils import statsd
|
||||||
from zerver.lib.validator import \
|
from zerver.lib.validator import \
|
||||||
check_list, check_int, check_dict, check_string, check_bool
|
check_list, check_int, check_dict, check_string, check_bool
|
||||||
|
from zerver.lib.zephyr import compute_mit_user_fullname
|
||||||
from zerver.models import Message, UserProfile, Stream, Subscription, Client,\
|
from zerver.models import Message, UserProfile, Stream, Subscription, Client,\
|
||||||
Realm, RealmDomain, Recipient, UserMessage, bulk_get_recipients, get_personal_recipient, \
|
Realm, RealmDomain, Recipient, UserMessage, bulk_get_recipients, get_personal_recipient, \
|
||||||
get_stream, email_to_domain, get_realm, get_active_streams, \
|
get_stream, email_to_domain, get_realm, get_active_streams, \
|
||||||
|
|
|
@ -20,7 +20,7 @@ from zerver.lib.send_email import send_email, FromAddress
|
||||||
from zerver.lib.events import do_events_register
|
from zerver.lib.events import do_events_register
|
||||||
from zerver.lib.actions import do_change_password, do_change_full_name, do_change_is_admin, \
|
from zerver.lib.actions import do_change_password, do_change_full_name, do_change_is_admin, \
|
||||||
do_activate_user, do_create_user, do_create_realm, \
|
do_activate_user, do_create_user, do_create_realm, \
|
||||||
email_not_system_bot, compute_mit_user_fullname, validate_email_for_realm, \
|
email_not_system_bot, validate_email_for_realm, \
|
||||||
do_set_user_display_setting, lookup_default_stream_groups, bulk_add_subscriptions
|
do_set_user_display_setting, lookup_default_stream_groups, bulk_add_subscriptions
|
||||||
from zerver.forms import RegistrationForm, HomepageForm, RealmCreationForm, \
|
from zerver.forms import RegistrationForm, HomepageForm, RealmCreationForm, \
|
||||||
CreateUserForm, FindMyTeamForm
|
CreateUserForm, FindMyTeamForm
|
||||||
|
@ -33,6 +33,7 @@ from zerver.lib.response import json_success
|
||||||
from zerver.lib.subdomains import get_subdomain, is_root_domain_available
|
from zerver.lib.subdomains import get_subdomain, is_root_domain_available
|
||||||
from zerver.lib.timezone import get_all_timezones
|
from zerver.lib.timezone import get_all_timezones
|
||||||
from zerver.lib.users import get_accounts_for_email
|
from zerver.lib.users import get_accounts_for_email
|
||||||
|
from zerver.lib.zephyr import compute_mit_user_fullname
|
||||||
from zerver.views.auth import create_preregistration_user, \
|
from zerver.views.auth import create_preregistration_user, \
|
||||||
redirect_and_log_into_subdomain, \
|
redirect_and_log_into_subdomain, \
|
||||||
redirect_to_deactivation_notice
|
redirect_to_deactivation_notice
|
||||||
|
|
Loading…
Reference in New Issue