Skip to content

Commit 2b30a1d

Browse files
committed
model: Add can_user_edit_topic function.
The function verifies whether editing a message or editing a community topic is disabled. Also if the current user is eligible to edit a topic according to organization permissions is checked. New test added.
1 parent 7819dab commit 2b30a1d

File tree

2 files changed

+19
-31
lines changed

2 files changed

+19
-31
lines changed

tests/model/test_model.py

+16-28
Original file line numberDiff line numberDiff line change
@@ -1097,11 +1097,11 @@ def test_get_latest_message_in_topic(
10971097
},
10981098
{
10991099
"_": ["User not found", False],
1100-
"_owner": ["Editing messages is disabled", False],
1101-
"_admin": ["Editing messages is disabled", False],
1102-
"_moderator": ["Editing messages is disabled", False],
1103-
"_member": ["Editing messages is disabled", False],
1104-
"_guest": ["Editing messages is disabled", False],
1100+
"_owner": [" Editing messages is disabled", False],
1101+
"_admin": [" Editing messages is disabled", False],
1102+
"_moderator": [" Editing messages is disabled", False],
1103+
"_member": [" Editing messages is disabled", False],
1104+
"_guest": [" Editing messages is disabled", False],
11051105
},
11061106
id="editing_msg_disabled:PreZulip4.0",
11071107
),
@@ -1114,9 +1114,9 @@ def test_get_latest_message_in_topic(
11141114
"_": ["User not found", False],
11151115
"_owner": ["", True],
11161116
"_admin": ["", True],
1117-
"_moderator": ["Editing topic is disabled", False],
1118-
"_member": ["Editing topic is disabled", False],
1119-
"_guest": ["Editing topic is disabled", False],
1117+
"_moderator": [" Editing topic is disabled", False],
1118+
"_member": [" Editing topic is disabled", False],
1119+
"_guest": [" Editing topic is disabled", False],
11201120
},
11211121
id="editing_topic_disabled:PreZulip4.0",
11221122
),
@@ -1135,18 +1135,6 @@ def test_get_latest_message_in_topic(
11351135
},
11361136
id="editing_topic_and_msg_enabled:PreZulip4.0",
11371137
),
1138-
case(
1139-
{"allow_message_editing": False, "edit_topic_policy": 1},
1140-
{
1141-
"_": ["User not found", False],
1142-
"_owner": ["Editing messages is disabled", False],
1143-
"_admin": ["Editing messages is disabled", False],
1144-
"_moderator": ["Editing messages is disabled", False],
1145-
"_member": ["Editing messages is disabled", False],
1146-
"_guest": ["Editing messages is disabled", False],
1147-
},
1148-
id="all_but_no_editing:Zulip4.0+:ZFL75",
1149-
),
11501138
case(
11511139
{"allow_message_editing": True, "edit_topic_policy": 1},
11521140
{
@@ -1156,8 +1144,8 @@ def test_get_latest_message_in_topic(
11561144
"_moderator": ["", True],
11571145
"_member": ["", True],
11581146
"_guest": [
1159-
"Only organization administrators, moderators, full members and"
1160-
" members can edit topic",
1147+
"Only organization administrators, moderators, full members"
1148+
" and members can edit topic",
11611149
False,
11621150
],
11631151
},
@@ -1208,13 +1196,13 @@ def test_get_latest_message_in_topic(
12081196
"_admin": ["", True],
12091197
"_moderator": ["", True],
12101198
"_member": [
1211-
"Only organization administrators and moderators"
1212-
" can edit topic",
1199+
"Only organization administrators and moderators can edit"
1200+
" topic",
12131201
False,
12141202
],
12151203
"_guest": [
1216-
"Only organization administrators and moderators"
1217-
" can edit topic",
1204+
"Only organization administrators and moderators can edit"
1205+
" topic",
12181206
False,
12191207
],
12201208
},
@@ -1246,9 +1234,9 @@ def test_can_user_edit_topic(
12461234
):
12471235
model.get_user_info = mocker.Mock(return_value=user_role)
12481236
model.initial_data = initial_data
1249-
initial_data["realm_allow_message_editing"] = realm_editing_settings[
1237+
initial_data["realm_allow_message_editing"] = realm_editing_settings.get(
12501238
"allow_message_editing"
1251-
]
1239+
)
12521240
allow_community_topic_editing = realm_editing_settings.get(
12531241
"allow_community_topic_editing", None
12541242
)

zulipterminal/model.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ def can_user_edit_topic(self) -> bool:
648648
user_info = self.get_user_info(self.user_id)
649649
if user_info is not None:
650650
if not self.initial_data.get("realm_allow_message_editing"):
651-
self.controller.report_error("Editing messages is disabled")
651+
self.controller.report_error(" Editing messages is disabled")
652652
return False
653653
role = user_info["role"]
654654
if role <= 200:
@@ -661,7 +661,7 @@ def can_user_edit_topic(self) -> bool:
661661
if allow_community_topic_editing is True:
662662
return True
663663
elif allow_community_topic_editing is False:
664-
self.controller.report_error("Editing topic is disabled")
664+
self.controller.report_error(" Editing topic is disabled")
665665
return False
666666
else:
667667
edit_topic_policy = self.initial_data.get("realm_edit_topic_policy")
@@ -693,7 +693,7 @@ def can_user_edit_topic(self) -> bool:
693693
else:
694694
self.controller.report_error(EDIT_TOPIC_POLICY[1])
695695
return False
696-
else: # edit_topic_policy == 5 (or None)
696+
else:
697697
# All users including guests
698698
return True
699699
self.controller.report_error("User not found")

0 commit comments

Comments
 (0)