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

1import talisker 

2from webapp.decorators import login_required 

3import flask 

4from flask import ( 

5 Blueprint, 

6 request, 

7 make_response, 

8) 

9 

10from webapp.packages.logic import ( 

11 get_packages, 

12 get_package, 

13 get_snaps_account_info, 

14) 

15from webapp.config import APP_NAME 

16 

17from canonicalwebteam.store_api.stores.snapstore import ( 

18 SnapStore, 

19 SnapPublisher, 

20) 

21 

22FIELDS = [ 

23 "title", 

24 "summary", 

25 "media", 

26 "publisher", 

27 "categories", 

28] 

29 

30store_packages = Blueprint( 

31 "package", 

32 __name__, 

33) 

34# "store": SnapStore, 

35# "publisher": SnapPublisher, 

36# "fields": [ 

37# "title", 

38# "summary", 

39# "media", 

40# "publisher", 

41# "categories", 

42# ], 

43# "permissions": [ 

44# "edit_account", 

45# "package_access", 

46# "package_metrics", 

47# "package_register", 

48# "package_release", 

49# "package_update", 

50# "package_upload_request", 

51# "store_admin", 

52# ], 

53# "size": 15, 

54 

55 

56@store_packages.route("/store.json") 

57def get_store_packages(): 

58 args = dict(request.args) 

59 libraries = bool(args.pop("fields", "")) 

60 

61 res = make_response( 

62 get_packages( 

63 SnapStore, SnapPublisher, APP_NAME, libraries, FIELDS, 15, args 

64 ) 

65 ) 

66 return res 

67 

68 

69@store_packages.route("/<any(snaps):package_type>") 

70@login_required 

71def package(package_type): 

72 """ 

73 Retrieves and returns package information based on the current app 

74 and package type. 

75 

76 :returns: Response: The HTTP response containing the JSON data of the 

77 packages. 

78 """ 

79 

80 publisher_api = SnapPublisher(talisker.requests.get_session()) 

81 

82 account_info = publisher_api.get_account(flask.session) 

83 

84 user_snaps, registered_snaps = get_snaps_account_info(account_info) 

85 flask_user = flask.session["publisher"] 

86 

87 response = make_response( 

88 { 

89 "snaps": user_snaps, 

90 "current_user": flask_user["nickname"], 

91 "registered_snaps": registered_snaps, 

92 } 

93 ) 

94 

95 return response 

96 

97 

98@store_packages.route("/<package_name>/card.json") 

99def get_store_package(package_name): 

100 

101 has_libraries = bool(request.args.get("fields", "")) 

102 res = make_response( 

103 get_package( 

104 SnapStore, 

105 SnapPublisher, 

106 APP_NAME, 

107 package_name, 

108 FIELDS, 

109 has_libraries, 

110 ) 

111 ) 

112 return res