Coverage for webapp/publisher/snaps/settings_views.py: 34%
29 statements
« prev ^ index » next coverage.py v7.10.5, created at 2025-08-26 22:06 +0000
« prev ^ index » next coverage.py v7.10.5, created at 2025-08-26 22:06 +0000
1# Packages
2import flask
3import pycountry
4from canonicalwebteam.store_api.dashboard import Dashboard
6# Local
7from webapp.helpers import api_publisher_session, launchpad
8from webapp.decorators import login_required
10dashboard = Dashboard(api_publisher_session)
13@login_required
14def get_settings_json(snap_name):
15 return get_settings(snap_name, return_json=True)
18@login_required
19def get_settings(snap_name, return_json=False):
20 snap_details = dashboard.get_snap_info(flask.session, snap_name)
22 if "whitelist_country_codes" in snap_details:
23 whitelist_country_codes = (
24 snap_details["whitelist_country_codes"]
25 if len(snap_details["whitelist_country_codes"]) > 0
26 else []
27 )
28 else:
29 whitelist_country_codes = []
31 if "blacklist_country_codes" in snap_details:
32 blacklist_country_codes = (
33 snap_details["blacklist_country_codes"]
34 if len(snap_details["blacklist_country_codes"]) > 0
35 else []
36 )
37 else:
38 blacklist_country_codes = []
40 countries = []
41 for country in pycountry.countries:
42 countries.append({"key": country.alpha_2, "name": country.name})
44 is_on_lp = False
45 lp_snap = launchpad.get_snap_by_store_name(snap_name)
46 if lp_snap:
47 is_on_lp = True
49 context = {
50 "snap_name": snap_details["snap_name"],
51 "snap_title": snap_details["title"],
52 "snap_id": snap_details["snap_id"],
53 "publisher_name": snap_details["publisher"]["display-name"],
54 "license": snap_details["license"],
55 "private": snap_details["private"],
56 "unlisted": snap_details["unlisted"],
57 "countries": countries,
58 "whitelist_country_codes": whitelist_country_codes,
59 "blacklist_country_codes": blacklist_country_codes,
60 "store": snap_details["store"],
61 "keywords": snap_details["keywords"],
62 "status": snap_details["status"],
63 "is_on_lp": is_on_lp,
64 "update_metadata_on_release": snap_details[
65 "update_metadata_on_release"
66 ],
67 "visibility_locked": snap_details["visibility_locked"] | False,
68 }
70 if return_json:
71 return flask.jsonify(context)
73 return flask.render_template("store/publisher.html", **context)