Coverage for webapp/packages/store_packages.py: 59%

27 statements  

« prev     ^ index     » next       coverage.py v7.14.1, created at 2026-06-15 22:43 +0000

1from canonicalwebteam.store_api.dashboard import Dashboard 

2 

3from webapp.decorators import login_required 

4import flask 

5from flask import ( 

6 Blueprint, 

7 request, 

8 make_response, 

9) 

10 

11from webapp.packages.logic import ( 

12 get_packages, 

13 get_package, 

14 get_snaps_account_info, 

15) 

16from webapp.helpers import api_session 

17 

18FIELDS = [ 

19 "title", 

20 "summary", 

21 "media", 

22 "publisher", 

23 "categories", 

24] 

25 

26store_packages = Blueprint( 

27 "package", 

28 __name__, 

29) 

30 

31dashboard = Dashboard(api_session) 

32 

33 

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

35def get_store_packages(): 

36 args = dict(request.args) 

37 

38 res = make_response(get_packages(FIELDS, 15, args)) 

39 return res 

40 

41 

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

43@login_required 

44def package(package_type): 

45 """ 

46 Retrieves and returns package information based on the current app 

47 and package type. 

48 

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

50 packages. 

51 """ 

52 

53 account_info = dashboard.get_account(flask.session) 

54 

55 user_snaps, registered_snaps = get_snaps_account_info(account_info) 

56 flask_user = flask.session["publisher"] 

57 

58 response = make_response( 

59 { 

60 "snaps": user_snaps, 

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

62 "registered_snaps": registered_snaps, 

63 } 

64 ) 

65 

66 return response 

67 

68 

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

70def get_store_package(package_name): 

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

72 res = make_response( 

73 get_package( 

74 package_name, 

75 FIELDS, 

76 has_libraries, 

77 ) 

78 ) 

79 return res