Prevent user from adding duplicate resources

This commit is contained in:
Drew DeVault 2020-04-29 09:59:53 -04:00
parent 3123e9abe4
commit ef585b6e3f
6 changed files with 38 additions and 4 deletions

View File

@ -42,8 +42,10 @@ def new_GET(owner, project_name):
# TODO: Pagination
mls = lists.get_lists(owner)
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",
owner=owner, project=project, lists=mls)
owner=owner, project=project, lists=mls, existing=existing)
def lists_from_template(owner, project, template):
project_url = url_for("projects.summary_GET",

View File

@ -48,10 +48,13 @@ def git_new_GET(owner, project_name):
# TODO: Pagination
repos = git.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()]
return render_template("sources-select.html",
view="new-resource", vcs="git",
owner=owner, project=project, repos=repos,
existing=[]) # TODO: Fetch existing repos for this project
existing=existing)
@sources.route("/<owner>/<project_name>/hg/new")
@loginrequired
@ -60,10 +63,13 @@ def hg_new_GET(owner, project_name):
# 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=[]) # TODO: Fetch existing repos for this project
existing=existing)
@sources.route("/<owner>/<project_name>/git/new", methods=["POST"])
@loginrequired

View File

@ -39,8 +39,10 @@ def new_GET(owner, project_name):
# TODO: Pagination
trackers = todo.get_trackers(owner)
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",
owner=owner, project=project, trackers=trackers)
owner=owner, project=project, trackers=trackers, existing=existing)
@trackers.route("/<owner>/<project_name>/trackers/new", methods=["POST"])
@loginrequired

View File

@ -136,11 +136,19 @@
{% for list in lists %}
<div class="event">
<h3>
{% if list["id"] in existing %}
<button
type="submit"
class="pull-right btn btn-primary btn-lg"
disabled
>Already added&nbsp;{{ icon("caret-right") }}</button>
{% else %}
<button
type="submit"
name="existing-{{ list["name"] }}"
class="pull-right btn btn-primary btn-lg"
>Select list&nbsp;{{ icon("caret-right") }}</button>
{% endif %}
<a
href="{{get_origin("lists.sr.ht",
external=True)}}/{{ list["owner"]["canonical_name"] }}/{{list["name"]}}"

View File

@ -60,11 +60,19 @@
{% for repo in repos %}
<div class="event">
<h3>
{% if repo["id"] in existing %}
<button
type="submit"
class="pull-right btn btn-primary btn-lg"
disabled
>Already added&nbsp;{{ icon("caret-right") }}</button>
{% else %}
<button
type="submit"
name="existing-{{ repo["name"] }}"
class="pull-right btn btn-primary btn-lg"
>Select repo&nbsp;{{ icon("caret-right") }}</button>
{% endif %}
<a
href="{{get_origin("git.sr.ht",
external=True)}}/{{ repo["owner"]["canonical_name"] }}/{{repo["name"]}}"

View File

@ -68,11 +68,19 @@
{% for tracker in trackers %}
<div class="event">
<h3>
{% if tracker["id"] in existing %}
<button
type="submit"
class="pull-right btn btn-primary btn-lg"
disabled
>Already added&nbsp;{{ icon("caret-right") }}</button>
{% else %}
<button
type="submit"
name="existing-{{ tracker["name"] }}"
class="pull-right btn btn-primary btn-lg"
>Select tracker&nbsp;{{ icon("caret-right") }}</button>
{% endif %}
<a
href="{{get_origin("todo.sr.ht",
external=True)}}/{{ tracker["owner"]["canonical_name"] }}/{{tracker["name"]}}"