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.services import git, hg
from hubsrht.types import Event, EventType from hubsrht.types import Event, EventType
from hubsrht.types import RepoType, SourceRepo, Visibility from hubsrht.types import RepoType, SourceRepo, Visibility
from srht.config import get_origin
from srht.database import db from srht.database import db
from srht.flask import paginate_query from srht.flask import paginate_query
from srht.oauth import current_user, loginrequired 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", return render_template("sources-new.html", view="new-resource",
owner=owner, project=project) owner=owner, project=project)
@sources.route("/<owner>/<project_name>/git/new") def src_new_GET(owner, project_name, vcs, service, repo_type):
@loginrequired
def git_new_GET(owner, project_name):
owner, project = get_project(owner, project_name, ProjectAccess.write) owner, project = get_project(owner, project_name, ProjectAccess.write)
# TODO: Pagination # TODO: Pagination
repos = git.get_repos(owner) repos = service.get_repos(owner)
repos = sorted(repos, key=lambda r: r["updated"], reverse=True) repos = sorted(repos, key=lambda r: r["updated"], reverse=True)
existing = [r.remote_id for r in (SourceRepo.query existing = [r.remote_id for r in (SourceRepo.query
.filter(SourceRepo.project_id == project.id) .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", return render_template("sources-select.html",
view="new-resource", vcs="git", view="new-resource", vcs=vcs,
owner=owner, project=project, repos=repos, 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") @sources.route("/<owner>/<project_name>/hg/new")
@loginrequired @loginrequired
def hg_new_GET(owner, project_name): def hg_new_GET(owner, project_name):
owner, project = get_project(owner, project_name, ProjectAccess.write) return src_new_GET(owner, project_name, "hg", hg, RepoType.hg)
# 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)
@sources.route("/<owner>/<project_name>/git/new", methods=["POST"]) @sources.route("/<owner>/<project_name>/git/new", methods=["POST"])
@loginrequired @loginrequired

View File

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