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
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-28 22:05 +0000
1from canonicalwebteam.store_api.dashboard import Dashboard
3from webapp.decorators import login_required
4import flask
5from flask import (
6 Blueprint,
7 request,
8 make_response,
9)
11from webapp.packages.logic import (
12 get_packages,
13 get_package,
14 get_snaps_account_info,
15)
16from webapp.helpers import api_session
19FIELDS = [
20 "title",
21 "summary",
22 "media",
23 "publisher",
24 "categories",
25]
27store_packages = Blueprint(
28 "package",
29 __name__,
30)
32dashboard = Dashboard(api_session)
35@store_packages.route("/store.json")
36def get_store_packages():
37 args = dict(request.args)
39 res = make_response(get_packages(FIELDS, 15, args))
40 return res
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.
50 :returns: Response: The HTTP response containing the JSON data of the
51 packages.
52 """
54 account_info = dashboard.get_account(flask.session)
56 user_snaps, registered_snaps = get_snaps_account_info(account_info)
57 flask_user = flask.session["publisher"]
59 response = make_response(
60 {
61 "snaps": user_snaps,
62 "current_user": flask_user["nickname"],
63 "registered_snaps": registered_snaps,
64 }
65 )
67 return response
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