Coverage for webapp/publisher/snaps/listing_views.py: 82%
50 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# Standard library
2from json import loads
4# Packages
5import bleach
6import flask
7from canonicalwebteam.store_api.dashboard import Dashboard
9# Local
10from webapp import helpers
11from webapp.helpers import api_session
12from webapp.decorators import login_required
13from webapp.markdown import parse_markdown_description
14from webapp.publisher.snaps import preview_data
15from webapp.store.logic import (
16 filter_screenshots,
17 get_video,
18)
20dashboard = Dashboard(api_session)
23def get_market_snap(snap_name):
24 return flask.redirect(
25 flask.url_for(".get_listing_data", snap_name=snap_name)
26 )
29def redirect_post_market_snap(snap_name):
30 return flask.redirect(
31 flask.url_for(".post_listing_data", snap_name=snap_name)
32 )
35@login_required
36def get_listing_snap(snap_name):
37 snap_details = dashboard.get_snap_info(flask.session, snap_name)
38 token = ""
39 if snap_details["links"]["website"]:
40 token = helpers.get_dns_verification_token(
41 snap_details["snap_name"], snap_details["links"]["website"][0]
42 )
43 return flask.render_template(
44 "store/publisher.html",
45 snap_name=snap_name,
46 dns_verification_token=token,
47 )
50@login_required
51def post_preview(snap_name):
52 snap_details = dashboard.get_snap_info(flask.session, snap_name)
54 context = {
55 "publisher": snap_details["publisher"]["display-name"],
56 "username": snap_details["publisher"]["username"],
57 "developer_validation": snap_details["publisher"]["validation"],
58 "categories": [],
59 }
61 state = loads(flask.request.form["state"])
63 for item in state:
64 if item == "description":
65 context[item] = parse_markdown_description(
66 bleach.clean(state[item], tags=[])
67 )
68 else:
69 context[item] = state[item]
71 context["is_preview"] = True
72 context["package_name"] = context["snap_name"]
73 context["snap_title"] = context["title"]
74 context["appliances"] = []
76 # Images
77 icon = helpers.get_icon(context["images"])
78 context["screenshots"] = filter_screenshots(context["images"])
79 context["icon_url"] = icon
81 if context["video"]:
82 context["video"] = get_video(context["video"])
84 # Channel map
85 context["channel_map"] = []
86 context["default_track"] = "latest"
87 context["lowest_risk_available"] = "stable"
88 context["version"] = "test"
89 context["has_stable"] = True
91 # metadata
92 context["last_updated"] = "Preview"
93 context["filesize"] = "1mb"
95 # maps
96 context["countries"] = preview_data.get_countries()
97 context["normalized_os"] = preview_data.get_normalised_oses()
99 return flask.render_template("store/snap-details.html", **context)