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

27 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-28 22:05 +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 

18 

19FIELDS = [ 

20 "title", 

21 "summary", 

22 "media", 

23 "publisher", 

24 "categories", 

25] 

26 

27store_packages = Blueprint( 

28 "package", 

29 __name__, 

30) 

31 

32dashboard = Dashboard(api_session) 

33 

34 

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

36def get_store_packages(): 

37 args = dict(request.args) 

38 

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

40 return res 

41 

42 

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

44@login_required 

45def package(package_type): 

46 """ 

47 Retrieves and returns package information based on the current app 

48 and package type. 

49 

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

51 packages. 

52 """ 

53 

54 account_info = dashboard.get_account(flask.session) 

55 

56 user_snaps, registered_snaps = get_snaps_account_info(account_info) 

57 flask_user = flask.session["publisher"] 

58 

59 response = make_response( 

60 { 

61 "snaps": user_snaps, 

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

63 "registered_snaps": registered_snaps, 

64 } 

65 ) 

66 

67 return response 

68 

69 

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

71def get_store_package(package_name): 

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

73 res = make_response( 

74 get_package( 

75 package_name, 

76 FIELDS, 

77 has_libraries, 

78 ) 

79 ) 

80 return res