Move {git,hg}_new_GET into common handler; use correct origin for /~u/p/{git,hg}/new

Ref: ~sircmpwn/hg.sr.ht/39
This commit is contained in:
наб 2020-09-06 00:02:49 +02:00 committed by Drew DeVault
parent 9fc47d0bb4
commit ff01082c30
2 changed files with 13 additions and 20 deletions

View File

@ -3,6 +3,7 @@ from hubsrht.projects import ProjectAccess, get_project
from hubsrht.services import git, hg
from hubsrht.types import Event, EventType
from hubsrht.types import RepoType, SourceRepo, Visibility
from srht.config import get_origin
from srht.database import db
from srht.flask import paginate_query
from srht.oauth import current_user, loginrequired
@ -42,35 +43,28 @@ def new_GET(owner, project_name):
return render_template("sources-new.html", view="new-resource",
owner=owner, project=project)
@sources.route("/<owner>/<project_name>/git/new")
@loginrequired
def git_new_GET(owner, project_name):
def src_new_GET(owner, project_name, vcs, service, repo_type):
owner, project = get_project(owner, project_name, ProjectAccess.write)
# TODO: Pagination
repos = git.get_repos(owner)
repos = service.get_repos(owner)
repos = sorted(repos, key=lambda r: r["updated"], reverse=True)
existing = [r.remote_id for r in (SourceRepo.query
.filter(SourceRepo.project_id == project.id)
.filter(SourceRepo.repo_type == RepoType.git)).all()]
.filter(SourceRepo.repo_type == repo_type)).all()]
return render_template("sources-select.html",
view="new-resource", vcs="git",
view="new-resource", vcs=vcs,
owner=owner, project=project, repos=repos,
existing=existing)
existing=existing, origin=get_origin(f"{vcs}.sr.ht", external=True))
@sources.route("/<owner>/<project_name>/git/new")
@loginrequired
def git_new_GET(owner, project_name):
return src_new_GET(owner, project_name, "git", git, RepoType.git)
@sources.route("/<owner>/<project_name>/hg/new")
@loginrequired
def hg_new_GET(owner, project_name):
owner, project = get_project(owner, project_name, ProjectAccess.write)
# TODO: Pagination
repos = hg.get_repos(owner)
repos = sorted(repos, key=lambda r: r["updated"], reverse=True)
existing = [r.remote_id for r in (SourceRepo.query
.filter(SourceRepo.project_id == project.id)
.filter(SourceRepo.repo_type == RepoType.hg)).all()]
return render_template("sources-select.html",
view="new-resource", vcs="hg",
owner=owner, project=project, repos=repos,
existing=existing)
return src_new_GET(owner, project_name, "hg", hg, RepoType.hg)
@sources.route("/<owner>/<project_name>/git/new", methods=["POST"])
@loginrequired

View File

@ -74,8 +74,7 @@
>Select repo&nbsp;{{ icon("caret-right") }}</button>
{% endif %}
<a
href="{{get_origin("git.sr.ht",
external=True)}}/{{ repo["owner"]["canonical_name"] }}/{{repo["name"]}}"
href="{{origin}}/{{ repo["owner"]["canonical_name"] }}/{{repo["name"]}}"
target="_blank"
rel="noopener"
>{{ repo["name"] }}</a>