Implement mailing list removal

This commit is contained in:
Drew DeVault 2020-04-01 14:50:42 -04:00
parent 6e3810a76c
commit 6115640e84
2 changed files with 42 additions and 10 deletions

View File

@ -121,3 +121,38 @@ def manage_GET(owner, project_name):
search=terms, search_error=search_error,
mailing_lists=mailing_lists,
**pagination)
@mailing_lists.route("/<owner>/<project_name>/lists/delete/<int:list_id>")
@loginrequired
def delete_GET(owner, project_name, list_id):
owner, project = get_project(owner, project_name, ProjectAccess.write)
mailing_list = (MailingList.query
.filter(MailingList.id == list_id)
.filter(MailingList.project_id == project.id)).one_or_none()
if not mailing_list:
abort(404)
return render_template("resource-delete.html", view="mailing lists",
owner=owner, project=project, resource=mailing_list,
resource_type="mailing list",
undeletable=True) # TODO: mailing list deletion
@mailing_lists.route("/<owner>/<project_name>/lists/delete/<int:list_id>",
methods=["POST"])
@loginrequired
def delete_POST(owner, project_name, list_id):
owner, project = get_project(owner, project_name, ProjectAccess.write)
mailing_list = (MailingList.query
.filter(MailingList.id == list_id)
.filter(MailingList.project_id == project.id)).one_or_none()
if not mailing_list:
abort(404)
db.session.delete(mailing_list)
valid = Validation(request)
delete_remote = valid.optional("delete-remote") == "on"
if delete_remote:
assert False # TODO: mailing list deletion
db.session.commit()
return redirect(url_for("projects.summary_GET",
owner=owner.canonical_name, project_name=project.name))

View File

@ -37,16 +37,13 @@
{% if mailing_list.description %}
{{ mailing_list.description | md }}
{% endif %}
<form
class="d-inline"
method="POST"
action="#TODO"
>
{{csrf_token()}}
<button class="btn btn-danger">
Remove mailing list {{icon('caret-right')}}
</button>
</form>
<a
class="btn btn-danger"
href="{{url_for("mailing_lists.delete_POST",
owner=project.owner.canonical_name,
project_name=project.name,
list_id=mailing_list.id)}}"
>Remove mailing list {{icon('caret-right')}}</a>
</div>
{% endfor %}
{{pagination()}}