mirror of https://github.com/zulip/zulip.git
settings: Use named_user_group field to access name.
This commit updates code to access name from named_user_group field which points to the "NamedUserGroup" instead of directly accessing name from "UserGroup", since name field will only be present on NamedUserGroup objects in further commits.
This commit is contained in:
parent
e78d0aacaf
commit
27558315a2
|
@ -1567,7 +1567,7 @@ def get_recipients_for_user_creation_events(
|
||||||
if len(guest_recipients) == 0:
|
if len(guest_recipients) == 0:
|
||||||
return recipients_for_user_creation_events
|
return recipients_for_user_creation_events
|
||||||
|
|
||||||
if realm.can_access_all_users_group.name == SystemGroups.EVERYONE:
|
if realm.can_access_all_users_group.named_user_group.name == SystemGroups.EVERYONE:
|
||||||
return recipients_for_user_creation_events
|
return recipients_for_user_creation_events
|
||||||
|
|
||||||
if len(user_profiles) == 1:
|
if len(user_profiles) == 1:
|
||||||
|
|
|
@ -195,7 +195,7 @@ def do_deactivate_stream(stream: Stream, *, acting_user: Optional[UserProfile])
|
||||||
event = dict(type="stream", op="delete", streams=[stream_dict])
|
event = dict(type="stream", op="delete", streams=[stream_dict])
|
||||||
send_event_on_commit(stream.realm, event, affected_user_ids)
|
send_event_on_commit(stream.realm, event, affected_user_ids)
|
||||||
|
|
||||||
if stream.realm.can_access_all_users_group.name != SystemGroups.EVERYONE:
|
if stream.realm.can_access_all_users_group.named_user_group.name != SystemGroups.EVERYONE:
|
||||||
send_user_remove_events_on_stream_deactivation(stream, subscribed_users)
|
send_user_remove_events_on_stream_deactivation(stream, subscribed_users)
|
||||||
|
|
||||||
event_time = timezone_now()
|
event_time = timezone_now()
|
||||||
|
@ -797,7 +797,7 @@ def bulk_add_subscriptions(
|
||||||
if sub_info.user.is_guest:
|
if sub_info.user.is_guest:
|
||||||
altered_guests.add(sub_info.user.id)
|
altered_guests.add(sub_info.user.id)
|
||||||
|
|
||||||
if realm.can_access_all_users_group.name != SystemGroups.EVERYONE:
|
if realm.can_access_all_users_group.named_user_group.name != SystemGroups.EVERYONE:
|
||||||
altered_users = list(altered_streams_dict.keys())
|
altered_users = list(altered_streams_dict.keys())
|
||||||
subscribers_of_altered_user_subscriptions = get_subscribers_of_target_user_subscriptions(
|
subscribers_of_altered_user_subscriptions = get_subscribers_of_target_user_subscriptions(
|
||||||
altered_users
|
altered_users
|
||||||
|
@ -837,7 +837,7 @@ def bulk_add_subscriptions(
|
||||||
subscriber_dict=subscriber_peer_info.subscribed_ids,
|
subscriber_dict=subscriber_peer_info.subscribed_ids,
|
||||||
)
|
)
|
||||||
|
|
||||||
if realm.can_access_all_users_group.name != SystemGroups.EVERYONE:
|
if realm.can_access_all_users_group.named_user_group.name != SystemGroups.EVERYONE:
|
||||||
send_user_creation_events_on_adding_subscriptions(
|
send_user_creation_events_on_adding_subscriptions(
|
||||||
realm,
|
realm,
|
||||||
altered_user_dict,
|
altered_user_dict,
|
||||||
|
@ -1082,7 +1082,7 @@ def bulk_remove_subscriptions(
|
||||||
removed_sub_tuples = [(sub_info.user, sub_info.stream) for sub_info in subs_to_deactivate]
|
removed_sub_tuples = [(sub_info.user, sub_info.stream) for sub_info in subs_to_deactivate]
|
||||||
send_subscription_remove_events(realm, users, streams, removed_sub_tuples)
|
send_subscription_remove_events(realm, users, streams, removed_sub_tuples)
|
||||||
|
|
||||||
if realm.can_access_all_users_group.name != SystemGroups.EVERYONE:
|
if realm.can_access_all_users_group.named_user_group.name != SystemGroups.EVERYONE:
|
||||||
altered_user_dict: Dict[UserProfile, Set[int]] = defaultdict(set)
|
altered_user_dict: Dict[UserProfile, Set[int]] = defaultdict(set)
|
||||||
for user, stream in removed_sub_tuples:
|
for user, stream in removed_sub_tuples:
|
||||||
altered_user_dict[user].add(stream.id)
|
altered_user_dict[user].add(stream.id)
|
||||||
|
|
|
@ -114,6 +114,7 @@ def get_usable_missed_message_address(address: str) -> MissedMessageEmailAddress
|
||||||
"user_profile",
|
"user_profile",
|
||||||
"user_profile__realm",
|
"user_profile__realm",
|
||||||
"user_profile__realm__can_access_all_users_group",
|
"user_profile__realm__can_access_all_users_group",
|
||||||
|
"user_profile__realm__can_access_all_users_group__named_user_group",
|
||||||
"message",
|
"message",
|
||||||
"message__sender",
|
"message__sender",
|
||||||
"message__recipient",
|
"message__recipient",
|
||||||
|
|
|
@ -1214,27 +1214,27 @@ def stream_wildcard_mention_allowed(sender: UserProfile, stream: Stream, realm:
|
||||||
|
|
||||||
def check_user_group_mention_allowed(sender: UserProfile, user_group_ids: List[int]) -> None:
|
def check_user_group_mention_allowed(sender: UserProfile, user_group_ids: List[int]) -> None:
|
||||||
user_groups = NamedUserGroup.objects.filter(id__in=user_group_ids).select_related(
|
user_groups = NamedUserGroup.objects.filter(id__in=user_group_ids).select_related(
|
||||||
"can_mention_group"
|
"can_mention_group", "can_mention_group__named_user_group"
|
||||||
)
|
)
|
||||||
sender_is_system_bot = is_cross_realm_bot_email(sender.delivery_email)
|
sender_is_system_bot = is_cross_realm_bot_email(sender.delivery_email)
|
||||||
|
|
||||||
for group in user_groups:
|
for group in user_groups:
|
||||||
can_mention_group = group.can_mention_group
|
can_mention_group = group.can_mention_group
|
||||||
|
can_mention_group_name = can_mention_group.named_user_group.name
|
||||||
if sender_is_system_bot:
|
if sender_is_system_bot:
|
||||||
if can_mention_group.name == SystemGroups.EVERYONE:
|
if can_mention_group_name == SystemGroups.EVERYONE:
|
||||||
continue
|
continue
|
||||||
raise JsonableError(
|
raise JsonableError(
|
||||||
_(
|
_(
|
||||||
"You are not allowed to mention user group '{user_group_name}'. You must be a member of '{can_mention_group_name}' to mention this group."
|
"You are not allowed to mention user group '{user_group_name}'. You must be a member of '{can_mention_group_name}' to mention this group."
|
||||||
).format(user_group_name=group.name, can_mention_group_name=can_mention_group.name)
|
).format(user_group_name=group.name, can_mention_group_name=can_mention_group_name)
|
||||||
)
|
)
|
||||||
|
|
||||||
if not is_user_in_group(can_mention_group, sender, direct_member_only=False):
|
if not is_user_in_group(can_mention_group, sender, direct_member_only=False):
|
||||||
raise JsonableError(
|
raise JsonableError(
|
||||||
_(
|
_(
|
||||||
"You are not allowed to mention user group '{user_group_name}'. You must be a member of '{can_mention_group_name}' to mention this group."
|
"You are not allowed to mention user group '{user_group_name}'. You must be a member of '{can_mention_group_name}' to mention this group."
|
||||||
).format(user_group_name=group.name, can_mention_group_name=can_mention_group.name)
|
).format(user_group_name=group.name, can_mention_group_name=can_mention_group_name)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -569,7 +569,7 @@ def user_access_restricted_in_realm(target_user: UserProfile) -> bool:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
realm = target_user.realm
|
realm = target_user.realm
|
||||||
if realm.can_access_all_users_group.name == SystemGroups.EVERYONE:
|
if realm.can_access_all_users_group.named_user_group.name == SystemGroups.EVERYONE:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -883,7 +883,10 @@ post_save.connect(flush_user_profile, sender=UserProfile)
|
||||||
@cache_with_key(user_profile_by_id_cache_key, timeout=3600 * 24 * 7)
|
@cache_with_key(user_profile_by_id_cache_key, timeout=3600 * 24 * 7)
|
||||||
def get_user_profile_by_id(user_profile_id: int) -> UserProfile:
|
def get_user_profile_by_id(user_profile_id: int) -> UserProfile:
|
||||||
return UserProfile.objects.select_related(
|
return UserProfile.objects.select_related(
|
||||||
"realm", "realm__can_access_all_users_group", "bot_owner"
|
"realm",
|
||||||
|
"realm__can_access_all_users_group",
|
||||||
|
"realm__can_access_all_users_group__named_user_group",
|
||||||
|
"bot_owner",
|
||||||
).get(id=user_profile_id)
|
).get(id=user_profile_id)
|
||||||
|
|
||||||
|
|
||||||
|
@ -901,7 +904,10 @@ def get_user_profile_by_email(email: str) -> UserProfile:
|
||||||
def maybe_get_user_profile_by_api_key(api_key: str) -> Optional[UserProfile]:
|
def maybe_get_user_profile_by_api_key(api_key: str) -> Optional[UserProfile]:
|
||||||
try:
|
try:
|
||||||
return UserProfile.objects.select_related(
|
return UserProfile.objects.select_related(
|
||||||
"realm", "realm__can_access_all_users_group", "bot_owner"
|
"realm",
|
||||||
|
"realm__can_access_all_users_group",
|
||||||
|
"realm__can_access_all_users_group__named_user_group",
|
||||||
|
"bot_owner",
|
||||||
).get(api_key=api_key)
|
).get(api_key=api_key)
|
||||||
except UserProfile.DoesNotExist:
|
except UserProfile.DoesNotExist:
|
||||||
# We will cache failed lookups with None. The
|
# We will cache failed lookups with None. The
|
||||||
|
@ -927,7 +933,10 @@ def get_user_by_delivery_email(email: str, realm: "Realm") -> UserProfile:
|
||||||
those code paths.
|
those code paths.
|
||||||
"""
|
"""
|
||||||
return UserProfile.objects.select_related(
|
return UserProfile.objects.select_related(
|
||||||
"realm", "realm__can_access_all_users_group", "bot_owner"
|
"realm",
|
||||||
|
"realm__can_access_all_users_group",
|
||||||
|
"realm__can_access_all_users_group__named_user_group",
|
||||||
|
"bot_owner",
|
||||||
).get(delivery_email__iexact=email.strip(), realm=realm)
|
).get(delivery_email__iexact=email.strip(), realm=realm)
|
||||||
|
|
||||||
|
|
||||||
|
@ -964,7 +973,10 @@ def get_user(email: str, realm: "Realm") -> UserProfile:
|
||||||
get_user_by_delivery_email.
|
get_user_by_delivery_email.
|
||||||
"""
|
"""
|
||||||
return UserProfile.objects.select_related(
|
return UserProfile.objects.select_related(
|
||||||
"realm", "realm__can_access_all_users_group", "bot_owner"
|
"realm",
|
||||||
|
"realm__can_access_all_users_group",
|
||||||
|
"realm__can_access_all_users_group__named_user_group",
|
||||||
|
"bot_owner",
|
||||||
).get(email__iexact=email.strip(), realm=realm)
|
).get(email__iexact=email.strip(), realm=realm)
|
||||||
|
|
||||||
|
|
||||||
|
@ -979,7 +991,10 @@ def get_active_user(email: str, realm: "Realm") -> UserProfile:
|
||||||
|
|
||||||
def get_user_profile_by_id_in_realm(uid: int, realm: "Realm") -> UserProfile:
|
def get_user_profile_by_id_in_realm(uid: int, realm: "Realm") -> UserProfile:
|
||||||
return UserProfile.objects.select_related(
|
return UserProfile.objects.select_related(
|
||||||
"realm", "realm__can_access_all_users_group", "bot_owner"
|
"realm",
|
||||||
|
"realm__can_access_all_users_group",
|
||||||
|
"realm__can_access_all_users_group__named_user_group",
|
||||||
|
"bot_owner",
|
||||||
).get(id=uid, realm=realm)
|
).get(id=uid, realm=realm)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ class StreamSetupTest(ZulipTestCase):
|
||||||
|
|
||||||
new_user = self.create_simple_new_user(realm, "alice@zulip.com")
|
new_user = self.create_simple_new_user(realm, "alice@zulip.com")
|
||||||
|
|
||||||
with self.assert_database_query_count(12):
|
with self.assert_database_query_count(13):
|
||||||
set_up_streams_for_new_human_user(
|
set_up_streams_for_new_human_user(
|
||||||
user_profile=new_user,
|
user_profile=new_user,
|
||||||
prereg_user=None,
|
prereg_user=None,
|
||||||
|
|
|
@ -1164,7 +1164,8 @@ class RealmTest(ZulipTestCase):
|
||||||
permission_configuration,
|
permission_configuration,
|
||||||
) in Realm.REALM_PERMISSION_GROUP_SETTINGS.items():
|
) in Realm.REALM_PERMISSION_GROUP_SETTINGS.items():
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
getattr(realm, setting_name).name, permission_configuration.default_group_name
|
getattr(realm, setting_name).named_user_group.name,
|
||||||
|
permission_configuration.default_group_name,
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_do_create_realm_with_keyword_arguments(self) -> None:
|
def test_do_create_realm_with_keyword_arguments(self) -> None:
|
||||||
|
|
|
@ -932,7 +932,7 @@ class LoginTest(ZulipTestCase):
|
||||||
# seem to be any O(N) behavior. Some of the cache hits are related
|
# seem to be any O(N) behavior. Some of the cache hits are related
|
||||||
# to sending messages, such as getting the welcome bot, looking up
|
# to sending messages, such as getting the welcome bot, looking up
|
||||||
# the alert words for a realm, etc.
|
# the alert words for a realm, etc.
|
||||||
with self.assert_database_query_count(104), self.assert_memcached_count(18):
|
with self.assert_database_query_count(105), self.assert_memcached_count(18):
|
||||||
with self.captureOnCommitCallbacks(execute=True):
|
with self.captureOnCommitCallbacks(execute=True):
|
||||||
self.register(self.nonreg_email("test"), "test")
|
self.register(self.nonreg_email("test"), "test")
|
||||||
|
|
||||||
|
|
|
@ -906,7 +906,7 @@ class QueryCountTest(ZulipTestCase):
|
||||||
|
|
||||||
prereg_user = PreregistrationUser.objects.get(email="fred@zulip.com")
|
prereg_user = PreregistrationUser.objects.get(email="fred@zulip.com")
|
||||||
|
|
||||||
with self.assert_database_query_count(93):
|
with self.assert_database_query_count(94):
|
||||||
with self.assert_memcached_count(23):
|
with self.assert_memcached_count(23):
|
||||||
with self.capture_send_event_calls(expected_num_events=11) as events:
|
with self.capture_send_event_calls(expected_num_events=11) as events:
|
||||||
fred = do_create_user(
|
fred = do_create_user(
|
||||||
|
|
|
@ -986,11 +986,11 @@ class ZulipLDAPAuthBackendBase(ZulipAuthMixin, LDAPBackend):
|
||||||
existing_group_name_set_for_user = set(
|
existing_group_name_set_for_user = set(
|
||||||
UserGroupMembership.objects.filter(
|
UserGroupMembership.objects.filter(
|
||||||
user_group__realm=user_profile.realm,
|
user_group__realm=user_profile.realm,
|
||||||
user_group__name__in=set(
|
user_group__named_user_group__name__in=set(
|
||||||
settings.LDAP_SYNCHRONIZED_GROUPS_BY_REALM[user_profile.realm.string_id]
|
settings.LDAP_SYNCHRONIZED_GROUPS_BY_REALM[user_profile.realm.string_id]
|
||||||
),
|
),
|
||||||
user_profile=user_profile,
|
user_profile=user_profile,
|
||||||
).values_list("user_group__name", flat=True)
|
).values_list("user_group__named_user_group__name", flat=True)
|
||||||
)
|
)
|
||||||
|
|
||||||
ldap_logger.debug(
|
ldap_logger.debug(
|
||||||
|
|
Loading…
Reference in New Issue