This is an automated email from the ASF dual-hosted git repository.
sbp pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-release.git
The following commit(s) were added to refs/heads/main by this push:
new 5dde147 Remove unused release policy forms and associated code
5dde147 is described below
commit 5dde1474f13b55032f445bdfd9508ebe8ea231cb
Author: Sean B. Palmer <[email protected]>
AuthorDate: Thu May 29 16:39:12 2025 +0100
Remove unused release policy forms and associated code
---
atr/routes/projects.py | 111 ++-------------------------------
atr/templates/project-view.html | 1 +
atr/templates/release-policy-add.html | 23 -------
atr/templates/release-policy-edit.html | 24 -------
atr/templates/release-policy-form.html | 92 ---------------------------
5 files changed, 5 insertions(+), 246 deletions(-)
diff --git a/atr/routes/projects.py b/atr/routes/projects.py
index 3bc00d3..bf02907 100644
--- a/atr/routes/projects.py
+++ b/atr/routes/projects.py
@@ -50,6 +50,7 @@ class ReleasePolicyForm(util.QuartFormTyped):
"""
project_name = wtforms.HiddenField("project_name")
+
mailto_addresses = wtforms.FieldList(
wtforms.StringField(
"Email",
@@ -182,76 +183,6 @@ async def projects() -> str:
return await template.render("projects.html", projects=projects,
empty_form=await util.EmptyForm.create_form())
[email protected]("/projects/<project_name>/release-policy/add",
methods=["GET", "POST"])
-async def release_policy_add(session: routes.CommitterSession, project_name:
str) -> response.Response | str:
- await session.check_access(project_name)
-
- uid = await util.get_asf_id_or_die()
-
- async with db.session() as data:
- project = await data.project(name=project_name, _committee=True,
_release_policy=True).demand(
- base.ASFQuartException(f"Project {project_name} not found",
errorcode=404)
- )
-
- if not (user.is_committee_member(project.committee, uid) or
user.is_admin(uid)):
- raise base.ASFQuartException(
- f"You must be a committee member of {project.display_name} to
submit a release policy", errorcode=403
- )
-
- form = await ReleasePolicyForm.create_form(data={"project_name":
project.name})
-
- if form.mailto_addresses.entries[0].data is None:
- form.mailto_addresses.entries[0].data =
f"dev@{util.unwrap(project.committee).name}.apache.org"
-
- if await form.validate_on_submit():
- return await _add_release_policy(project, form, data)
-
- return await template.render(
- "release-policy-add.html",
- asf_id=uid,
- project=project,
- form=form,
- )
-
-
[email protected]("/projects/<project_name>/release-policy/edit",
methods=["GET", "POST"])
-async def release_policy_edit(session: routes.CommitterSession, project_name:
str) -> response.Response | str:
- await session.check_access(project_name)
-
- uid = await util.get_asf_id_or_die()
-
- async with db.session() as data:
- project = await data.project(name=project_name, _committee=True,
_release_policy=True).demand(
- base.ASFQuartException(f"Project {project_name} not found",
errorcode=404)
- )
-
- if project.release_policy is None:
- base.ASFQuartException(f"Release Policy for project {project_name}
does not exist", errorcode=404)
-
- if not (user.is_committee_member(project.committee, uid) or
user.is_admin(uid)):
- raise base.ASFQuartException(
- f"You must be a committee member of {project.display_name} to
submit a release policy", errorcode=403
- )
-
- form = await ReleasePolicyForm.create_form()
-
- # fill data
- if quart.request.method == "GET":
- form.process(obj=project.release_policy)
- form.project_name.data = project.name
-
- if await form.validate_on_submit():
- return await
_edit_release_policy(util.unwrap(project.release_policy), form, data)
-
- # For GET requests, show the form
- return await template.render(
- "release-policy-edit.html",
- asf_id=uid,
- project=project,
- form=form,
- )
-
-
@routes.committer("/project/select")
async def select(session: routes.CommitterSession) -> str:
"""Select a project to work on."""
@@ -301,6 +232,8 @@ async def view(session: routes.CommitterSession, name: str)
-> response.Response
project.release_policy.release_checklist =
util.unwrap(form.release_checklist.data)
project.release_policy.start_vote_template =
util.unwrap(form.start_vote_template.data)
project.release_policy.announce_release_template =
util.unwrap(form.announce_release_template.data)
+
+ # TODO: Add default handling here
project.release_policy.pause_for_rm =
util.unwrap(form.pause_for_rm.data)
await data.commit()
await quart.flash("Release policy updated successfully.",
"success")
@@ -319,6 +252,7 @@ async def view(session: routes.CommitterSession, name: str)
-> response.Response
form.start_vote_template.data =
project.policy_start_vote_template
form.announce_release_template.data =
project.policy_announce_release_template
form.pause_for_rm.data = project.policy_pause_for_rm
+ ...
return await template.render(
"project-view.html",
@@ -405,40 +339,3 @@ async def _add_project(form: AddFormProtocol, asf_id: str)
-> response.Response:
await data.commit()
return quart.redirect(util.as_url(view, name=new_project_label))
-
-
-async def _add_release_policy(project: models.Project, form:
ReleasePolicyForm, data: db.Session) -> response.Response:
- project_name = str(form.project_name.data)
-
- release_policy = models.ReleasePolicy(
- mailto_addresses=[util.unwrap(form.mailto_addresses.entries[0].data)],
- manual_vote=form.manual_vote.data,
- min_hours=util.unwrap(form.min_hours.data),
- release_checklist=util.unwrap(form.release_checklist.data),
- start_vote_template=util.unwrap(form.start_vote_template.data),
-
announce_release_template=util.unwrap(form.announce_release_template.data),
- pause_for_rm=form.pause_for_rm.data,
- )
-
- release_policy.project = project
- data.add(release_policy)
- await data.commit()
-
- return quart.redirect(util.as_url(view, name=project_name))
-
-
-async def _edit_release_policy(
- release_policy: models.ReleasePolicy, form: ReleasePolicyForm, data:
db.Session
-) -> response.Response:
- project_name = str(form.project_name.data)
-
- release_policy.mailto_addresses =
[util.unwrap(form.mailto_addresses.entries[0].data)]
- release_policy.manual_vote = form.manual_vote.data
- release_policy.min_hours = util.unwrap(form.min_hours.data)
- release_policy.release_checklist = util.unwrap(form.release_checklist.data)
- release_policy.start_vote_template =
util.unwrap(form.start_vote_template.data)
- release_policy.announce_release_template =
util.unwrap(form.announce_release_template.data)
- release_policy.pause_for_rm = form.pause_for_rm.data
- await data.commit()
-
- return quart.redirect(util.as_url(view, name=project_name))
diff --git a/atr/templates/project-view.html b/atr/templates/project-view.html
index 52a0925..b8ca151 100644
--- a/atr/templates/project-view.html
+++ b/atr/templates/project-view.html
@@ -66,6 +66,7 @@
novalidate>
{{ form.hidden_tag() if form.hidden_tag }}
{{ form.project_name(value=project.name) }}
+ {# TODO: Add default handling here #}
<div class="mb-3 pb-3 row border-bottom">
{{ forms.label(form.mailto_addresses.entries[0], col="md3") }}
diff --git a/atr/templates/release-policy-add.html
b/atr/templates/release-policy-add.html
deleted file mode 100644
index e115fd7..0000000
--- a/atr/templates/release-policy-add.html
+++ /dev/null
@@ -1,23 +0,0 @@
-{% extends "layouts/base.html" %}
-
-{% block title %}
- Create a voting policy ~ ATR
-{% endblock title %}
-
-{% block description %}
- Create a voting policy for a project.
-{% endblock description %}
-
-{% block content %}
- <p>
- <a href="{{ as_url(routes.projects.view, name=project.name) }}"
- class="atr-back-link">← Back to {{ project.display_name }}</a>
- </p>
- <h1>Create voting policy</h1>
- <p>
- Use this form to create a voting policy for <strong>{{
project.display_name }}</strong>.
- </p>
-
- {% include "release-policy-form.html" %}
-
-{% endblock content %}
diff --git a/atr/templates/release-policy-edit.html
b/atr/templates/release-policy-edit.html
deleted file mode 100644
index eea1761..0000000
--- a/atr/templates/release-policy-edit.html
+++ /dev/null
@@ -1,24 +0,0 @@
-{% extends "layouts/base.html" %}
-
-{% block title %}
- Edit a voting policy ~ ATR
-{% endblock title %}
-
-{% block description %}
- Edit a voting policy for a project.
-{% endblock description %}
-
-{% block content %}
- <p>
- <a href="{{ as_url(routes.projects.view, name=project.name) }}"
- class="atr-back-link">← Back to {{ project.display_name }}</a>
- </p>
-
- <h1>Edit voting policy</h1>
- <p>
- Use this form to edit the voting policy for <strong>{{
project.display_name }}</strong>.
- </p>
-
- {% include "release-policy-form.html" %}
-
-{% endblock content %}
diff --git a/atr/templates/release-policy-form.html
b/atr/templates/release-policy-form.html
deleted file mode 100644
index fb3bab4..0000000
--- a/atr/templates/release-policy-form.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<form method="post"
- enctype="multipart/form-data"
- class="atr-canary py-4 px-5"
- novalidate>
- {{ form.hidden_tag() }}
-
- <input type="hidden" name="form_type" value="single" />
- <div class="mb-3 pb-3 row border-bottom">
- <label for="project_name_text" class="col-sm-3 col-form-label
text-sm-end">Project</label>
- <div class="col-sm-8">
- <p id="project_name_text" class="form-control-plaintext">{{
project.display_name }}</p>
- </div>
- </div>
-
- <div class="mb-3 pb-3 row border-bottom">
- {{ forms.label(form.mailto_addresses.entries[0], col="md3") }}
- <div class="col-sm-8">
- {{ forms.widget(form.mailto_addresses.entries[0]) }}
- {{ forms.errors(form.mailto_addresses.entries[0]) }}
- {{ forms.description(form.mailto_addresses.entries[0]) }}
- </div>
- <!--
- <div class="col-sm-1">
- <button class="btn btn-primary" type="button"
id="add-mailto-address">+</button>
- </div>
- -->
- </div>
-
- <div class="mb-3 pb-3 row border-bottom">
- {{ forms.label(form.manual_vote, col="md3-high") }}
- <div class="col-sm-8">
- <div class="form-check">
- {{ forms.widget(form.manual_vote, classes="form-check-input") }}
- {{ forms.errors(form.manual_vote, classes="invalid-feedback d-block")
}}
- <label class="form-check-label" for="{{ form.manual_vote.id
}}">Manual</label>
- </div>
- {{ forms.description(form.manual_vote) }}
- </div>
- </div>
-
- <div class="mb-3 pb-3 row border-bottom">
- {{ forms.label(form.min_hours, col="md3") }}
- <div class="col-sm-8">
- {{ forms.widget(form.min_hours) }}
- {{ forms.errors(form.min_hours) }}
- {{ forms.description(form.min_hours) }}
- </div>
- </div>
-
- <div class="mb-3 pb-3 row border-bottom">
- {{ forms.label(form.release_checklist, col="md3") }}
- <div class="col-sm-8">
- {{ forms.widget(form.release_checklist) }}
- {{ forms.errors(form.release_checklist) }}
- {{ forms.description(form.release_checklist) }}
- </div>
- </div>
-
- <div class="mb-3 pb-3 row border-bottom">
- {{ forms.label(form.start_vote_template, col="md3") }}
- <div class="col-sm-8">
- {{ forms.widget(form.start_vote_template) }}
- {{ forms.errors(form.start_vote_template) }}
- {{ forms.description(form.start_vote_template) }}
- </div>
- </div>
-
- <div class="mb-3 pb-3 row border-bottom">
- {{ forms.label(form.announce_release_template, col="md3") }}
- <div class="col-sm-8">
- {{ forms.widget(form.announce_release_template) }}
- {{ forms.errors(form.announce_release_template) }}
- {{ forms.description(form.announce_release_template) }}
- </div>
- </div>
-
- <div class="mb-3 pb-3 row border-bottom">
- {{ forms.label(form.pause_for_rm, col="md3-high") }}
- <div class="col-sm-8">
- <div class="form-check">
- {{ forms.widget(form.pause_for_rm, classes="form-check-input") }}
- {{ forms.errors(form.pause_for_rm, classes="invalid-feedback d-block")
}}
- <label class="form-check-label" for="{{ form.pause_for_rm.id
}}">Enabled</label>
- </div>
- {{ forms.description(form.pause_for_rm) }}
- </div>
- </div>
-
- <div class="row">
- <div class="col-sm-9 offset-sm-3">{{ form.submit(class_="btn btn-primary
mt-2") }}</div>
- </div>
-</form>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]