Skip to content

Commit 58d475a

Browse files
adnrs96shubham-padia
authored andcommitted
views/archive.py: Make 'StreamDoesNotExist' return a error msg page.
1 parent 3f769c8 commit 58d475a

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

zerver/tests/test_archive.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def test_non_existant_stream_id(self) -> None:
99
# Here we use a relatively big number as stream id assumming such an id
1010
# won't exist in the test DB.
1111
result = self.client_get("/archive/streams/100000000/topic/TopicGlobal")
12-
self.assert_json_error(result, 'Invalid stream id')
12+
self.assert_in_success_response(["This stream does not exist."], result)
1313

1414
def test_non_web_public_stream(self) -> None:
1515
test_stream = self.make_stream('Test Public Archives')

zerver/views/archive.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,31 +9,38 @@
99

1010
from zerver.lib.avatar import get_gravatar_url
1111
from zerver.lib.timestamp import datetime_to_timestamp
12+
from zerver.lib.exceptions import JsonableError
1213

1314
def archive(request: HttpRequest,
1415
stream_id: int,
1516
topic_name: str) -> HttpResponse:
16-
stream = get_stream_by_id(stream_id)
1717

18-
def get_response(rendered_message_list: List[str], is_web_public: bool) -> HttpResponse:
18+
def get_response(rendered_message_list: List[str],
19+
is_web_public: bool,
20+
stream_name: str) -> HttpResponse:
1921
return render(
2022
request,
2123
'zerver/archive/index.html',
2224
context={
2325
'is_web_public': is_web_public,
2426
'message_list': rendered_message_list,
25-
'stream': stream.name,
27+
'stream': stream_name,
2628
'topic': topic_name,
2729
}
2830
)
2931

32+
try:
33+
stream = get_stream_by_id(stream_id)
34+
except JsonableError:
35+
return get_response([], False, '')
36+
3037
if not stream.is_web_public:
31-
return get_response([], False)
38+
return get_response([], False, '')
3239

3340
all_messages = list(Message.objects.select_related(
3441
'sender').filter(recipient__type_id=stream_id, subject=topic_name).order_by('pub_date'))
3542
if not all_messages:
36-
return get_response([], True)
43+
return get_response([], True, stream.name)
3744

3845
rendered_message_list = []
3946
prev_sender = None
@@ -60,4 +67,4 @@ def get_response(rendered_message_list: List[str], is_web_public: bool) -> HttpR
6067
}
6168
rendered_msg = loader.render_to_string('zerver/archive/single_message.html', context)
6269
rendered_message_list.append(rendered_msg)
63-
return get_response(rendered_message_list, True)
70+
return get_response(rendered_message_list, True, stream.name)

0 commit comments

Comments
 (0)