Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion dashboard/src/objects/marketplace.js
Original file line number Diff line number Diff line change
Expand Up @@ -218,10 +218,28 @@ export default {
label: 'Add',
onClick() {
if (app.addVersion.loading) return;

const getAddVersionArgsFromOption = (
option,
) => {
const [
repo_owner,
repo_name,
...branch
] = option.trim().split('/');
return {
repo_owner,
repo_name,
branch: branch.join('/'),
};
};

toast.promise(
app.addVersion.submit({
version: row.version,
branch: row.selectedOption,
...getAddVersionArgsFromOption(
row.selectedOption,
),
}),
{
loading: 'Adding new version...',
Expand Down
18 changes: 11 additions & 7 deletions press/api/marketplace.py
Original file line number Diff line number Diff line change
Expand Up @@ -1225,8 +1225,8 @@ def branches(name):
installation_id = app_source.github_installation_id
repo_owner = app_source.repository_owner
repo_name = app_source.repository

return git_branches(repo_owner, repo_name, installation_id)
branches = git_branches(repo_owner, repo_name, installation_id)
return [f"{repo_owner}/{repo_name}/{branch['name']}" for branch in branches]


@protected("Marketplace App")
Expand All @@ -1242,19 +1242,23 @@ def options_for_version(name):
frappe_version = frappe.get_all("Frappe Version", {"public": True}, pluck="name")
added_versions = frappe.get_all("Marketplace App Version", {"parent": name}, pluck="version")
app = frappe.db.get_value("Marketplace App", name, "app")
source = frappe.get_value("App Source", {"app": app, "team": get_current_team()})
branches_list = branches(source)
sources = frappe.get_all("App Source", {"app": app, "team": get_current_team()})

branches_list = []
for source in sources:
branches_list.append(branches(source))
branches_list = list(set(branches_list))

versions = list(set(frappe_version).difference(set(added_versions)))
branches_list = [branch["name"] for branch in branches_list]

return [{"version": version, "branch": branches_list} for version in versions]


@protected("Marketplace App")
@frappe.whitelist()
def add_version(name, branch, version):
def add_version(name, repo_owner, repo_name, branch, version):
Comment thread
regdocs marked this conversation as resolved.
Outdated
app = frappe.get_doc("Marketplace App", name)
app.add_version(version, branch)
app.add_version(version, repo_owner, repo_name, branch)


@protected("Marketplace App")
Expand Down
4 changes: 3 additions & 1 deletion press/press/doctype/marketplace_app/marketplace_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -342,14 +342,16 @@ def change_branch(self, source, version, to_branch):
self.save()

@dashboard_whitelist()
def add_version(self, version, branch):
def add_version(self, version, repo_owner, repo_name, branch):
existing_source = frappe.db.exists(
"App Source",
[
["App Source", "app", "=", self.app],
["App Source", "team", "=", self.team],
["App Source", "branch", "=", branch],
["App Source", "enabled", "=", 1],
["App Source", "repository", "=", repo_name],
["App Source", "repository_owner", "=", repo_owner],
],
)
source_doc: "AppSource" = (
Expand Down
Loading