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

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)
10from webapp.packages.logic import (
11 get_packages,
12 get_package,
13 get_snaps_account_info,
14)
15from webapp.config import APP_NAME
17from canonicalwebteam.store_api.stores.snapstore import (
18 SnapStore,
19 SnapPublisher,
20)
22FIELDS = [
23 "title",
24 "summary",
25 "media",
26 "publisher",
27 "categories",
28]
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,
56@store_packages.route("/store.json")
57def get_store_packages():
58 args = dict(request.args)
59 libraries = bool(args.pop("fields", ""))
61 res = make_response(
62 get_packages(
63 SnapStore, SnapPublisher, APP_NAME, libraries, FIELDS, 15, args
64 )
65 )
66 return res
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.
76 :returns: Response: The HTTP response containing the JSON data of the
77 packages.
78 """
80 publisher_api = SnapPublisher(talisker.requests.get_session())
82 account_info = publisher_api.get_account(flask.session)
84 user_snaps, registered_snaps = get_snaps_account_info(account_info)
85 flask_user = flask.session["publisher"]
87 response = make_response(
88 {
89 "snaps": user_snaps,
90 "current_user": flask_user["nickname"],
91 "registered_snaps": registered_snaps,
92 }
93 )
95 return response
98@store_packages.route("/<package_name>/card.json")
99def get_store_package(package_name):
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