mirror of https://git.sr.ht/~sircmpwn/hub.sr.ht
Prevent user from adding duplicate resources
This commit is contained in:
parent
3123e9abe4
commit
ef585b6e3f
|
@ -42,8 +42,10 @@ def new_GET(owner, project_name):
|
||||||
# TODO: Pagination
|
# TODO: Pagination
|
||||||
mls = lists.get_lists(owner)
|
mls = lists.get_lists(owner)
|
||||||
mls = sorted(mls, key=lambda r: r["updated"], reverse=True)
|
mls = sorted(mls, key=lambda r: r["updated"], reverse=True)
|
||||||
|
existing = [l.remote_id for l in (MailingList.query
|
||||||
|
.filter(MailingList.project_id == project.id)).all()]
|
||||||
return render_template("mailing-list-new.html", view="new-resource",
|
return render_template("mailing-list-new.html", view="new-resource",
|
||||||
owner=owner, project=project, lists=mls)
|
owner=owner, project=project, lists=mls, existing=existing)
|
||||||
|
|
||||||
def lists_from_template(owner, project, template):
|
def lists_from_template(owner, project, template):
|
||||||
project_url = url_for("projects.summary_GET",
|
project_url = url_for("projects.summary_GET",
|
||||||
|
|
|
@ -48,10 +48,13 @@ def git_new_GET(owner, project_name):
|
||||||
# TODO: Pagination
|
# TODO: Pagination
|
||||||
repos = git.get_repos(owner)
|
repos = git.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
|
||||||
|
.filter(SourceRepo.project_id == project.id)
|
||||||
|
.filter(SourceRepo.repo_type == RepoType.git)).all()]
|
||||||
return render_template("sources-select.html",
|
return render_template("sources-select.html",
|
||||||
view="new-resource", vcs="git",
|
view="new-resource", vcs="git",
|
||||||
owner=owner, project=project, repos=repos,
|
owner=owner, project=project, repos=repos,
|
||||||
existing=[]) # TODO: Fetch existing repos for this project
|
existing=existing)
|
||||||
|
|
||||||
@sources.route("/<owner>/<project_name>/hg/new")
|
@sources.route("/<owner>/<project_name>/hg/new")
|
||||||
@loginrequired
|
@loginrequired
|
||||||
|
@ -60,10 +63,13 @@ def hg_new_GET(owner, project_name):
|
||||||
# TODO: Pagination
|
# TODO: Pagination
|
||||||
repos = hg.get_repos(owner)
|
repos = hg.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
|
||||||
|
.filter(SourceRepo.project_id == project.id)
|
||||||
|
.filter(SourceRepo.repo_type == RepoType.hg)).all()]
|
||||||
return render_template("sources-select.html",
|
return render_template("sources-select.html",
|
||||||
view="new-resource", vcs="hg",
|
view="new-resource", vcs="hg",
|
||||||
owner=owner, project=project, repos=repos,
|
owner=owner, project=project, repos=repos,
|
||||||
existing=[]) # TODO: Fetch existing repos for this project
|
existing=existing)
|
||||||
|
|
||||||
@sources.route("/<owner>/<project_name>/git/new", methods=["POST"])
|
@sources.route("/<owner>/<project_name>/git/new", methods=["POST"])
|
||||||
@loginrequired
|
@loginrequired
|
||||||
|
|
|
@ -39,8 +39,10 @@ def new_GET(owner, project_name):
|
||||||
# TODO: Pagination
|
# TODO: Pagination
|
||||||
trackers = todo.get_trackers(owner)
|
trackers = todo.get_trackers(owner)
|
||||||
trackers = sorted(trackers, key=lambda r: r["updated"], reverse=True)
|
trackers = sorted(trackers, key=lambda r: r["updated"], reverse=True)
|
||||||
|
existing = [t.remote_id for t in (Tracker.query
|
||||||
|
.filter(Tracker.project_id == project.id)).all()]
|
||||||
return render_template("tracker-new.html", view="new-resource",
|
return render_template("tracker-new.html", view="new-resource",
|
||||||
owner=owner, project=project, trackers=trackers)
|
owner=owner, project=project, trackers=trackers, existing=existing)
|
||||||
|
|
||||||
@trackers.route("/<owner>/<project_name>/trackers/new", methods=["POST"])
|
@trackers.route("/<owner>/<project_name>/trackers/new", methods=["POST"])
|
||||||
@loginrequired
|
@loginrequired
|
||||||
|
|
|
@ -136,11 +136,19 @@
|
||||||
{% for list in lists %}
|
{% for list in lists %}
|
||||||
<div class="event">
|
<div class="event">
|
||||||
<h3>
|
<h3>
|
||||||
|
{% if list["id"] in existing %}
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
class="pull-right btn btn-primary btn-lg"
|
||||||
|
disabled
|
||||||
|
>Already added {{ icon("caret-right") }}</button>
|
||||||
|
{% else %}
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
name="existing-{{ list["name"] }}"
|
name="existing-{{ list["name"] }}"
|
||||||
class="pull-right btn btn-primary btn-lg"
|
class="pull-right btn btn-primary btn-lg"
|
||||||
>Select list {{ icon("caret-right") }}</button>
|
>Select list {{ icon("caret-right") }}</button>
|
||||||
|
{% endif %}
|
||||||
<a
|
<a
|
||||||
href="{{get_origin("lists.sr.ht",
|
href="{{get_origin("lists.sr.ht",
|
||||||
external=True)}}/{{ list["owner"]["canonical_name"] }}/{{list["name"]}}"
|
external=True)}}/{{ list["owner"]["canonical_name"] }}/{{list["name"]}}"
|
||||||
|
|
|
@ -60,11 +60,19 @@
|
||||||
{% for repo in repos %}
|
{% for repo in repos %}
|
||||||
<div class="event">
|
<div class="event">
|
||||||
<h3>
|
<h3>
|
||||||
|
{% if repo["id"] in existing %}
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
class="pull-right btn btn-primary btn-lg"
|
||||||
|
disabled
|
||||||
|
>Already added {{ icon("caret-right") }}</button>
|
||||||
|
{% else %}
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
name="existing-{{ repo["name"] }}"
|
name="existing-{{ repo["name"] }}"
|
||||||
class="pull-right btn btn-primary btn-lg"
|
class="pull-right btn btn-primary btn-lg"
|
||||||
>Select repo {{ icon("caret-right") }}</button>
|
>Select repo {{ icon("caret-right") }}</button>
|
||||||
|
{% endif %}
|
||||||
<a
|
<a
|
||||||
href="{{get_origin("git.sr.ht",
|
href="{{get_origin("git.sr.ht",
|
||||||
external=True)}}/{{ repo["owner"]["canonical_name"] }}/{{repo["name"]}}"
|
external=True)}}/{{ repo["owner"]["canonical_name"] }}/{{repo["name"]}}"
|
||||||
|
|
|
@ -68,11 +68,19 @@
|
||||||
{% for tracker in trackers %}
|
{% for tracker in trackers %}
|
||||||
<div class="event">
|
<div class="event">
|
||||||
<h3>
|
<h3>
|
||||||
|
{% if tracker["id"] in existing %}
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
class="pull-right btn btn-primary btn-lg"
|
||||||
|
disabled
|
||||||
|
>Already added {{ icon("caret-right") }}</button>
|
||||||
|
{% else %}
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
name="existing-{{ tracker["name"] }}"
|
name="existing-{{ tracker["name"] }}"
|
||||||
class="pull-right btn btn-primary btn-lg"
|
class="pull-right btn btn-primary btn-lg"
|
||||||
>Select tracker {{ icon("caret-right") }}</button>
|
>Select tracker {{ icon("caret-right") }}</button>
|
||||||
|
{% endif %}
|
||||||
<a
|
<a
|
||||||
href="{{get_origin("todo.sr.ht",
|
href="{{get_origin("todo.sr.ht",
|
||||||
external=True)}}/{{ tracker["owner"]["canonical_name"] }}/{{tracker["name"]}}"
|
external=True)}}/{{ tracker["owner"]["canonical_name"] }}/{{tracker["name"]}}"
|
||||||
|
|
Loading…
Reference in New Issue