mirror of https://github.com/zulip/zulip.git
user_info: Add `bot_owner_id` to user info dataset.
Modifies the dict with the user info to include the key `bot_owner_id` so it can be displayed in the user info popover. Tests concerned with changing bot owner have been modified to have number of events=2 because while updating the bot info, two events are fired -- updating the `realm_bot` and `realm_user` since the key `bot_owner_id` is a part of realm user info.
This commit is contained in:
parent
802d3dbbf4
commit
61371cbe9a
|
@ -91,6 +91,10 @@ exports.update_person = function update(person) {
|
||||||
if (_.has(person, 'timezone')) {
|
if (_.has(person, 'timezone')) {
|
||||||
person_obj.timezone = person.timezone;
|
person_obj.timezone = person.timezone;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_.has(person, 'bot_owner_id')) {
|
||||||
|
person_obj.bot_owner_id = person.bot_owner_id;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return exports;
|
return exports;
|
||||||
|
|
|
@ -407,16 +407,18 @@ def process_new_human_user(user_profile: UserProfile,
|
||||||
lambda event: None)
|
lambda event: None)
|
||||||
|
|
||||||
def notify_created_user(user_profile: UserProfile) -> None:
|
def notify_created_user(user_profile: UserProfile) -> None:
|
||||||
event = dict(type="realm_user", op="add",
|
person = dict(email=user_profile.email,
|
||||||
person=dict(email=user_profile.email,
|
user_id=user_profile.id,
|
||||||
user_id=user_profile.id,
|
is_admin=user_profile.is_realm_admin,
|
||||||
is_admin=user_profile.is_realm_admin,
|
full_name=user_profile.full_name,
|
||||||
full_name=user_profile.full_name,
|
avatar_url=avatar_url(user_profile),
|
||||||
avatar_url=avatar_url(user_profile),
|
timezone=user_profile.timezone,
|
||||||
timezone=user_profile.timezone,
|
date_joined=user_profile.date_joined.isoformat(),
|
||||||
date_joined=user_profile.date_joined.isoformat(),
|
is_guest=user_profile.is_guest,
|
||||||
is_guest=user_profile.is_guest,
|
is_bot=user_profile.is_bot) # type: Dict[str, Any]
|
||||||
is_bot=user_profile.is_bot)) # type: Dict[str, Any]
|
if user_profile.is_bot and user_profile.bot_owner_id is not None:
|
||||||
|
person["bot_owner_id"] = user_profile.bot_owner_id
|
||||||
|
event = dict(type="realm_user", op="add", person=person) # type: Dict[str, Any]
|
||||||
if not user_profile.is_bot:
|
if not user_profile.is_bot:
|
||||||
event["person"]["profile_data"] = {}
|
event["person"]["profile_data"] = {}
|
||||||
send_event(user_profile.realm, event, active_user_ids(user_profile.realm_id))
|
send_event(user_profile.realm, event, active_user_ids(user_profile.realm_id))
|
||||||
|
@ -3229,6 +3231,18 @@ def do_change_bot_owner(user_profile: UserProfile, bot_owner: UserProfile,
|
||||||
)),
|
)),
|
||||||
update_users)
|
update_users)
|
||||||
|
|
||||||
|
# Since `bot_owner_id` is included in the user profile dict we need
|
||||||
|
# to update the users dict with the new bot owner id
|
||||||
|
event = dict(
|
||||||
|
type="realm_user",
|
||||||
|
op="update",
|
||||||
|
person=dict(
|
||||||
|
user_id=user_profile.id,
|
||||||
|
bot_owner_id=user_profile.bot_owner.id,
|
||||||
|
),
|
||||||
|
) # type: Dict[str, Any]
|
||||||
|
send_event(user_profile.realm, event, active_user_ids(user_profile.realm_id))
|
||||||
|
|
||||||
def do_change_tos_version(user_profile: UserProfile, tos_version: str) -> None:
|
def do_change_tos_version(user_profile: UserProfile, tos_version: str) -> None:
|
||||||
user_profile.tos_version = tos_version
|
user_profile.tos_version = tos_version
|
||||||
user_profile.save(update_fields=["tos_version"])
|
user_profile.save(update_fields=["tos_version"])
|
||||||
|
|
|
@ -325,7 +325,7 @@ realm_user_dict_fields = [
|
||||||
'id', 'full_name', 'short_name', 'email',
|
'id', 'full_name', 'short_name', 'email',
|
||||||
'avatar_source', 'avatar_version', 'is_active',
|
'avatar_source', 'avatar_version', 'is_active',
|
||||||
'is_realm_admin', 'is_bot', 'realm_id', 'timezone',
|
'is_realm_admin', 'is_bot', 'realm_id', 'timezone',
|
||||||
'date_joined', 'is_guest'
|
'date_joined', 'is_guest', 'bot_owner_id'
|
||||||
] # type: List[str]
|
] # type: List[str]
|
||||||
|
|
||||||
def realm_user_dicts_cache_key(realm_id: int) -> str:
|
def realm_user_dicts_cache_key(realm_id: int) -> str:
|
||||||
|
|
|
@ -101,7 +101,10 @@ def get_raw_user_data(realm: Realm, client_gravatar: bool) -> Dict[int, Dict[str
|
||||||
is_active = row['is_active'],
|
is_active = row['is_active'],
|
||||||
date_joined = row['date_joined'].isoformat(),
|
date_joined = row['date_joined'].isoformat(),
|
||||||
)
|
)
|
||||||
if not is_bot:
|
if is_bot:
|
||||||
|
if row['bot_owner_id'] is not None:
|
||||||
|
result['bot_owner_id'] = row['bot_owner_id']
|
||||||
|
else:
|
||||||
result['profile_data'] = profiles_by_user_id.get(row['id'], {})
|
result['profile_data'] = profiles_by_user_id.get(row['id'], {})
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
|
@ -2138,7 +2138,16 @@ class EventsRegisterTest(ZulipTestCase):
|
||||||
self.assert_on_error(error)
|
self.assert_on_error(error)
|
||||||
|
|
||||||
def test_change_bot_owner(self) -> None:
|
def test_change_bot_owner(self) -> None:
|
||||||
change_bot_owner_checker = self.check_events_dict([
|
change_bot_owner_checker_user = self.check_events_dict([
|
||||||
|
('type', equals('realm_user')),
|
||||||
|
('op', equals('update')),
|
||||||
|
('person', check_dict_only([
|
||||||
|
('user_id', check_int),
|
||||||
|
('bot_owner_id', check_int),
|
||||||
|
])),
|
||||||
|
])
|
||||||
|
|
||||||
|
change_bot_owner_checker_bot = self.check_events_dict([
|
||||||
('type', equals('realm_bot')),
|
('type', equals('realm_bot')),
|
||||||
('op', equals('update')),
|
('op', equals('update')),
|
||||||
('bot', check_dict_only([
|
('bot', check_dict_only([
|
||||||
|
@ -2151,11 +2160,13 @@ class EventsRegisterTest(ZulipTestCase):
|
||||||
owner = self.example_user('hamlet')
|
owner = self.example_user('hamlet')
|
||||||
bot = self.create_bot('test')
|
bot = self.create_bot('test')
|
||||||
action = lambda: do_change_bot_owner(bot, owner, self.user_profile)
|
action = lambda: do_change_bot_owner(bot, owner, self.user_profile)
|
||||||
events = self.do_test(action)
|
events = self.do_test(action, num_events=2)
|
||||||
error = change_bot_owner_checker('events[0]', events[0])
|
error = change_bot_owner_checker_bot('events[0]', events[0])
|
||||||
|
self.assert_on_error(error)
|
||||||
|
error = change_bot_owner_checker_user('events[1]', events[1])
|
||||||
self.assert_on_error(error)
|
self.assert_on_error(error)
|
||||||
|
|
||||||
change_bot_owner_checker = self.check_events_dict([
|
change_bot_owner_checker_bot = self.check_events_dict([
|
||||||
('type', equals('realm_bot')),
|
('type', equals('realm_bot')),
|
||||||
('op', equals('delete')),
|
('op', equals('delete')),
|
||||||
('bot', check_dict_only([
|
('bot', check_dict_only([
|
||||||
|
@ -2167,12 +2178,14 @@ class EventsRegisterTest(ZulipTestCase):
|
||||||
owner = self.example_user('hamlet')
|
owner = self.example_user('hamlet')
|
||||||
bot = self.create_bot('test1', full_name='Test1 Testerson')
|
bot = self.create_bot('test1', full_name='Test1 Testerson')
|
||||||
action = lambda: do_change_bot_owner(bot, owner, self.user_profile)
|
action = lambda: do_change_bot_owner(bot, owner, self.user_profile)
|
||||||
events = self.do_test(action)
|
events = self.do_test(action, num_events=2)
|
||||||
error = change_bot_owner_checker('events[0]', events[0])
|
error = change_bot_owner_checker_bot('events[0]', events[0])
|
||||||
|
self.assert_on_error(error)
|
||||||
|
error = change_bot_owner_checker_user('events[1]', events[1])
|
||||||
self.assert_on_error(error)
|
self.assert_on_error(error)
|
||||||
|
|
||||||
check_services = check_list(sub_validator=None, length=0)
|
check_services = check_list(sub_validator=None, length=0)
|
||||||
change_bot_owner_checker = self.check_events_dict([
|
change_bot_owner_checker_bot = self.check_events_dict([
|
||||||
('type', equals('realm_bot')),
|
('type', equals('realm_bot')),
|
||||||
('op', equals('add')),
|
('op', equals('add')),
|
||||||
('bot', check_dict_only([
|
('bot', check_dict_only([
|
||||||
|
@ -2194,8 +2207,10 @@ class EventsRegisterTest(ZulipTestCase):
|
||||||
self.user_profile = self.example_user('hamlet')
|
self.user_profile = self.example_user('hamlet')
|
||||||
bot = self.create_test_bot('test2', previous_owner, full_name='Test2 Testerson')
|
bot = self.create_test_bot('test2', previous_owner, full_name='Test2 Testerson')
|
||||||
action = lambda: do_change_bot_owner(bot, self.user_profile, previous_owner)
|
action = lambda: do_change_bot_owner(bot, self.user_profile, previous_owner)
|
||||||
events = self.do_test(action)
|
events = self.do_test(action, num_events=2)
|
||||||
error = change_bot_owner_checker('events[0]', events[0])
|
error = change_bot_owner_checker_bot('events[0]', events[0])
|
||||||
|
self.assert_on_error(error)
|
||||||
|
error = change_bot_owner_checker_user('events[1]', events[1])
|
||||||
self.assert_on_error(error)
|
self.assert_on_error(error)
|
||||||
|
|
||||||
def test_do_update_outgoing_webhook_service(self):
|
def test_do_update_outgoing_webhook_service(self):
|
||||||
|
|
Loading…
Reference in New Issue