Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1from os import getenv 

2 

3import flask 

4import talisker 

5 

6from canonicalwebteam.discourse import DiscourseAPI, TutorialParser, Tutorials 

7 

8DISCOURSE_API_KEY = getenv("DISCOURSE_API_KEY") 

9DISCOURSE_API_USERNAME = getenv("DISCOURSE_API_USERNAME") 

10 

11 

12def init_tutorials(app, url_prefix): 

13 session = talisker.requests.get_session() 

14 tutorials_discourse = Tutorials( 

15 parser=TutorialParser( 

16 api=DiscourseAPI( 

17 base_url="https://forum.snapcraft.io/", 

18 session=session, 

19 api_key=DISCOURSE_API_KEY, 

20 api_username=DISCOURSE_API_USERNAME, 

21 get_topics_query_id=2, 

22 ), 

23 index_topic_id=15409, 

24 url_prefix=url_prefix, 

25 ), 

26 document_template="tutorials/tutorial.html", 

27 url_prefix=url_prefix, 

28 blueprint_name="tutorials", 

29 ) 

30 

31 @app.route(url_prefix) 

32 def index(): 

33 tutorials_discourse.parser.parse() 

34 tutorials_discourse.parser.parse_topic( 

35 tutorials_discourse.parser.index_topic 

36 ) 

37 

38 tutorials = tutorials_discourse.parser.tutorials 

39 topic_list = [] 

40 

41 for item in tutorials: 

42 if item["categories"] not in topic_list: 

43 topic_list.append(item["categories"]) 

44 item["categories"] = { 

45 "slug": item["categories"], 

46 "name": " ".join( 

47 [ 

48 word.capitalize() 

49 for word in item["categories"].split("-") 

50 ] 

51 ), 

52 } 

53 

54 topic_list.sort() 

55 topics = [] 

56 

57 for topic in topic_list: 

58 topics.append( 

59 { 

60 "slug": topic, 

61 "name": " ".join( 

62 [word.capitalize() for word in topic.split("-")] 

63 ), 

64 } 

65 ) 

66 

67 return flask.render_template( 

68 "tutorials/index.html", 

69 tutorials=tutorials, 

70 topics=topics, 

71 ) 

72 

73 tutorials_discourse.init_app(app)