diff options
Diffstat (limited to 'uploader/publications/views.py')
| -rw-r--r-- | uploader/publications/views.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/uploader/publications/views.py b/uploader/publications/views.py index 23efa2e..f97de75 100644 --- a/uploader/publications/views.py +++ b/uploader/publications/views.py @@ -14,6 +14,7 @@ from flask import ( from uploader.authorisation import require_login from .models import ( + delete_publications, update_publications, fetch_publication_by_id, create_new_publications, @@ -142,3 +143,34 @@ def edit_publication(publication_id: int): "alert-success") return redirect(url_for( "publications.view_publication", publication_id=publication_id)) + + +@pubbp.route("/delete/<int:publication_id>", methods=["GET", "POST"]) +@require_login +def delete_publication(publication_id: int): + """Delete a particular publication.""" + with database_connection(app.config["SQL_URI"]) as conn: + publication = fetch_publication_by_id(conn, publication_id) + linked_phenotypes=tuple(fetch_publication_phenotypes( + conn, publication_id)) + + if not bool(publication): + flash("Requested publication was not found!", "alert-warning") + return redirect(url_for('publications.index')) + + if len(linked_phenotypes) > 0: + flash("Cannot delete publication with linked phenotypes!", + "alert-warning") + return redirect(url_for( + "publications.view_publication", publication_id=publication_id)) + + if request.method == "GET": + return render_template( + "publications/delete-publication.html", + publication=publication, + linked_phenotypes=linked_phenotypes, + publication_id=publication_id) + + delete_publications(conn, (publication,)) + flash("Deleted the publication successfully.", "alert-success") + return render_template("publications/delete-publication-success.html") |
