Skip to content

Commit 7ef1a7e

Browse files
committed
Improvide export of apps and projects in portfolios
1 parent aab65c6 commit 7ef1a7e

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

sonar/util/portfolio_helper.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
from typing import Any
2323
from sonar import utilities as util
24+
from sonar.util import constants as c
2425
from sonar.util import common_json_helper
2526

2627

@@ -29,11 +30,42 @@ def convert_portfolio_json(old_json: dict[str, Any]) -> dict[str, Any]:
2930
new_json = common_json_helper.convert_common_fields(old_json.copy())
3031
if "projects" in new_json:
3132
new_json["projects"] = common_json_helper.convert_common_fields(new_json["projects"])
33+
if "manual" in new_json["projects"]:
34+
projs = {}
35+
for k, v in new_json["projects"]["manual"].items():
36+
projs[k] = {"key": k, "branches": sorted(["" if e == c.DEFAULT_BRANCH else e for e in util.csv_to_list(v)])}
37+
if projs[k]["branches"] == [""]:
38+
projs[k].pop("branches", None)
39+
new_json["projectSelection"] = {"manual": new_json["projects"]}
40+
new_json["projectSelection"]["manual"] = util.dict_to_list(projs, "key", "branches")
41+
elif "regexp" in new_json["projects"]:
42+
new_json["projectSelection"] = "regexp"
43+
new_json["projectSelection"] = {"regexp": new_json["projects"]["regexp"]}
44+
if new_json["projects"].get("branch", c.DEFAULT_BRANCH) != c.DEFAULT_BRANCH:
45+
new_json["projectSelection"]["branch"] = new_json["projects"]["branch"]
46+
elif "tags" in new_json["projects"]:
47+
new_json["projectSelection"] = {"tags": new_json["projects"]["tags"]}
48+
if new_json["projects"].get("branch", c.DEFAULT_BRANCH) != c.DEFAULT_BRANCH:
49+
new_json["projectSelection"]["branch"] = new_json["projects"]["branch"]
50+
elif "rest" in new_json["projects"]:
51+
new_json["projectSelection"] = {"rest": True}
52+
if new_json["projects"].get("branch", c.DEFAULT_BRANCH) != c.DEFAULT_BRANCH:
53+
new_json["projectSelection"]["branch"] = new_json["projects"]["branch"]
54+
new_json.pop("projects")
55+
if "applications" in new_json:
56+
for k, v in new_json["applications"].items():
57+
new_json["applications"][k] = {"key": k, "branches": sorted(["" if e == c.DEFAULT_BRANCH else e for e in util.csv_to_list(v)])}
58+
if new_json["applications"][k]["branches"] == [""]:
59+
new_json["applications"][k].pop("branches", None)
60+
new_json["applications"] = util.dict_to_list(new_json["applications"], "key", "branches")
61+
3262
for key in "children", "portfolios":
3363
if key in new_json:
3464
new_json[key] = convert_portfolios_json(new_json[key])
3565
if "branches" in old_json:
3666
new_json["branches"] = util.dict_to_list(old_json["branches"], "name")
67+
log.info("CONVERTED %s", util.json_dump(new_json))
68+
new_json = util.order_keys(new_json, "key", "name", "visibility", "projectSelection", "applications", "portfolios", "permissions")
3769
return new_json
3870

3971

0 commit comments

Comments
 (0)