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

1# Packages 

2import flask 

3import pycountry 

4from canonicalwebteam.store_api.dashboard import Dashboard 

5 

6# Local 

7from webapp.helpers import api_publisher_session, launchpad 

8from webapp.decorators import login_required 

9 

10dashboard = Dashboard(api_publisher_session) 

11 

12 

13@login_required 

14def get_settings_json(snap_name): 

15 return get_settings(snap_name, return_json=True) 

16 

17 

18@login_required 

19def get_settings(snap_name, return_json=False): 

20 snap_details = dashboard.get_snap_info(flask.session, snap_name) 

21 

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 = [] 

30 

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 = [] 

39 

40 countries = [] 

41 for country in pycountry.countries: 

42 countries.append({"key": country.alpha_2, "name": country.name}) 

43 

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 

48 

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 } 

69 

70 if return_json: 

71 return flask.jsonify(context) 

72 

73 return flask.render_template("store/publisher.html", **context)