9
9
10
10
from zerver .lib .avatar import get_gravatar_url
11
11
from zerver .lib .timestamp import datetime_to_timestamp
12
+ from zerver .lib .exceptions import JsonableError
12
13
13
14
def archive (request : HttpRequest ,
14
15
stream_id : int ,
15
16
topic_name : str ) -> HttpResponse :
16
- stream = get_stream_by_id (stream_id )
17
17
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 :
19
21
return render (
20
22
request ,
21
23
'zerver/archive/index.html' ,
22
24
context = {
23
25
'is_web_public' : is_web_public ,
24
26
'message_list' : rendered_message_list ,
25
- 'stream' : stream . name ,
27
+ 'stream' : stream_name ,
26
28
'topic' : topic_name ,
27
29
}
28
30
)
29
31
32
+ try :
33
+ stream = get_stream_by_id (stream_id )
34
+ except JsonableError :
35
+ return get_response ([], False , '' )
36
+
30
37
if not stream .is_web_public :
31
- return get_response ([], False )
38
+ return get_response ([], False , '' )
32
39
33
40
all_messages = list (Message .objects .select_related (
34
41
'sender' ).filter (recipient__type_id = stream_id , subject = topic_name ).order_by ('pub_date' ))
35
42
if not all_messages :
36
- return get_response ([], True )
43
+ return get_response ([], True , stream . name )
37
44
38
45
rendered_message_list = []
39
46
prev_sender = None
@@ -60,4 +67,4 @@ def get_response(rendered_message_list: List[str], is_web_public: bool) -> HttpR
60
67
}
61
68
rendered_msg = loader .render_to_string ('zerver/archive/single_message.html' , context )
62
69
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