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
|
||||
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",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {{ icon("caret-right") }}</button>
|
||||
{% else %}
|
||||
<button
|
||||
type="submit"
|
||||
name="existing-{{ list["name"] }}"
|
||||
class="pull-right btn btn-primary btn-lg"
|
||||
>Select list {{ icon("caret-right") }}</button>
|
||||
{% endif %}
|
||||
<a
|
||||
href="{{get_origin("lists.sr.ht",
|
||||
external=True)}}/{{ list["owner"]["canonical_name"] }}/{{list["name"]}}"
|
||||
|
|
|
@ -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 {{ icon("caret-right") }}</button>
|
||||
{% else %}
|
||||
<button
|
||||
type="submit"
|
||||
name="existing-{{ repo["name"] }}"
|
||||
class="pull-right btn btn-primary btn-lg"
|
||||
>Select repo {{ icon("caret-right") }}</button>
|
||||
{% endif %}
|
||||
<a
|
||||
href="{{get_origin("git.sr.ht",
|
||||
external=True)}}/{{ repo["owner"]["canonical_name"] }}/{{repo["name"]}}"
|
||||
|
|
|
@ -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 {{ icon("caret-right") }}</button>
|
||||
{% else %}
|
||||
<button
|
||||
type="submit"
|
||||
name="existing-{{ tracker["name"] }}"
|
||||
class="pull-right btn btn-primary btn-lg"
|
||||
>Select tracker {{ icon("caret-right") }}</button>
|
||||
{% endif %}
|
||||
<a
|
||||
href="{{get_origin("todo.sr.ht",
|
||||
external=True)}}/{{ tracker["owner"]["canonical_name"] }}/{{tracker["name"]}}"
|
||||
|
|
Loading…
Reference in New Issue