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
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-15 22:43 +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
18FIELDS = [
19 "title",
20 "summary",
21 "media",
22 "publisher",
23 "categories",
24]
26store_packages = Blueprint(
27 "package",
28 __name__,
29)
31dashboard = Dashboard(api_session)
34@store_packages.route("/store.json")
35def get_store_packages():
36 args = dict(request.args)
38 res = make_response(get_packages(FIELDS, 15, args))
39 return res
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.
49 :returns: Response: The HTTP response containing the JSON data of the
50 packages.
51 """
53 account_info = dashboard.get_account(flask.session)
55 user_snaps, registered_snaps = get_snaps_account_info(account_info)
56 flask_user = flask.session["publisher"]
58 response = make_response(
59 {
60 "snaps": user_snaps,
61 "current_user": flask_user["nickname"],
62 "registered_snaps": registered_snaps,
63 }
64 )
66 return response
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