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 677dd04  Convert a couple more routes to Bootstrap
677dd04 is described below

commit 677dd044c375be65b74950fa74ef48ad84479783
Author: Sean B. Palmer <s...@miscoranda.com>
AuthorDate: Wed Mar 12 20:47:35 2025 +0200

    Convert a couple more routes to Bootstrap
---
 atr/static/css/atr-small.css                  |  14 +-
 atr/templates/candidate-create.html           | 152 +++++++-----------
 atr/templates/candidate-signature-verify.html | 216 --------------------------
 atr/templates/dev-send-email.html             | 169 +++++++-------------
 4 files changed, 118 insertions(+), 433 deletions(-)

diff --git a/atr/static/css/atr-small.css b/atr/static/css/atr-small.css
index 63e75ab..27d70a8 100644
--- a/atr/static/css/atr-small.css
+++ b/atr/static/css/atr-small.css
@@ -27,6 +27,13 @@ body {
     font-weight: 425;
 }
 
+input, textarea, select, option {
+    border-width: 2px !important;
+    border-color: #cccccc !important;
+    font-size: 17px !important;
+    font-weight: 425 !important;
+}
+
 input, textarea, button, select, option {
     font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe 
UI", "Oxygen", "Ubuntu", "Cantarell", "Open Sans", "Helvetica Neue", sans-serif;
     font-size: 17px;
@@ -67,13 +74,6 @@ ul {
     padding-left: 1rem;
 }
 
-label {
-    font-weight: 500;
-    border-bottom: 1px dashed #b1b2b3;
-    padding-bottom: 0.5rem;
-    cursor: pointer;
-}
-
 table {
     border-collapse: collapse;
 }
diff --git a/atr/templates/candidate-create.html 
b/atr/templates/candidate-create.html
index 5922607..90c9fd0 100644
--- a/atr/templates/candidate-create.html
+++ b/atr/templates/candidate-create.html
@@ -8,117 +8,73 @@
   Create a new release candidate.
 {% endblock description %}
 
+{% block theme_css %}
+  <link rel="stylesheet"
+        href="{{ url_for('static', filename='css/atr-small.css') }}" />
+{% endblock theme_css %}
+
 {% block stylesheets %}
   {{ super() }}
-  <style>
-      .form-table {
-          width: 100%;
-      }
-
-      .form-table th {
-          width: 200px;
-          text-align: right;
-          padding-right: 1rem;
-          vertical-align: top;
-          font-weight: 500;
-      }
-
-      .form-table td {
-          vertical-align: top;
-      }
-
-      .form-table label {
-          border-bottom: none;
-          padding-bottom: 0;
-      }
-
-      select,
-      input[type="file"] {
-          display: block;
-          margin-bottom: 0.5rem;
-      }
-
-      .help-text {
-          color: #666;
-          font-size: 0.9em;
-          display: block;
-          margin-top: 0.25rem;
-      }
-
-      .error-message {
-          color: #dc3545;
-          margin-top: 0.25rem;
-      }
-
-      button {
-          margin-top: 1rem;
-      }
-
-      button:disabled {
-          opacity: 0.5;
-          cursor: not-allowed;
-      }
-  </style>
 {% endblock stylesheets %}
 
 {% block content %}
   <h1>Create release candidate</h1>
-  <p class="intro">
+  <p>
     Welcome, <strong>{{ asf_id }}</strong>! Use this form to create a new 
release candidate for
     your project. You can create a new release candidate for any project of 
which you are a release
     manager. Release managers at the ASF must be either PMC members or 
committers.
   </p>
-  <p>
+  <p class="mb-4">
     ATR will guide you through the process of turning your release candidate 
into a final release,
     providing tools and automation to help during each step of the workflow.
   </p>
 
-  <form method="post" enctype="multipart/form-data" class="striking">
-    <table class="form-table">
-      <tbody>
-        <tr>
-          <th>
-            <label for="project_name">Project:</label>
-          </th>
-          <td>
-            <select id="project_name" name="project_name" required>
-              <option value="">Select a project...</option>
-              {% for pmc in user_pmcs|sort(attribute='project_name') %}
-                <option value="{{ pmc.project_name }}">{{ pmc.display_name 
}}</option>
-              {% endfor %}
-            </select>
-            {% if not user_pmcs %}
-              <p class="error-message">You must be a PMC member or committer 
to submit a release candidate.</p>
-            {% endif %}
-          </td>
-        </tr>
-
-        <tr>
-          <th>
-            <label for="version">Version:</label>
-          </th>
-          <td>
-            <input type="text" id="version" name="version" required />
-          </td>
-        </tr>
-
-        <tr>
-          <th>
-            <label for="product_name">Product name:</label>
-          </th>
-          <td>
-            <!-- TODO: Add a dropdown for the product name, plus "add new 
product" -->
-            <input type="text" id="product_name" name="product_name" required 
/>
-          </td>
-        </tr>
-
-        <tr>
-          <td></td>
-          <td>
-            <button type="submit" {% if not user_pmcs %}disabled{% endif 
%}>Create release</button>
-          </td>
-        </tr>
-      </tbody>
-    </table>
+  <form method="post"
+        enctype="multipart/form-data"
+        class="striking py-4 px-5">
+    <div class="mb-3 pb-3 row border-bottom">
+      <label for="project_name" class="col-sm-3 col-form-label 
text-sm-end">Project:</label>
+      <div class="col-sm-8">
+        <select id="project_name"
+                name="project_name"
+                class="mb-2 form-select"
+                required>
+          <option value="">Select a project...</option>
+          {% for pmc in user_pmcs|sort(attribute='project_name') %}
+            <option value="{{ pmc.project_name }}">{{ pmc.display_name 
}}</option>
+          {% endfor %}
+        </select>
+        {% if not user_pmcs %}
+          <p class="text-danger">You must be a PMC member or committer to 
submit a release candidate.</p>
+        {% endif %}
+      </div>
+    </div>
+
+    <div class="mb-3 pb-3 row border-bottom">
+      <label for="version" class="col-sm-3 col-form-label 
text-sm-end">Version:</label>
+      <div class="col-sm-8">
+        <input type="text" id="version" name="version" class="form-control" 
required />
+      </div>
+    </div>
+
+    <div class="mb-3 pb-3 row border-bottom">
+      <label for="product_name" class="col-sm-3 col-form-label 
text-sm-end">Product name:</label>
+      <div class="col-sm-8">
+        <!-- TODO: Add a dropdown for the product name, plus "add new product" 
-->
+        <input type="text"
+               id="product_name"
+               name="product_name"
+               class="form-control"
+               required />
+      </div>
+    </div>
+
+    <div class="row">
+      <div class="col-sm-9 offset-sm-3">
+        <button type="submit"
+                class="btn btn-primary mt-2"
+                {% if not user_pmcs %}disabled{% endif %}>Create 
release</button>
+      </div>
+    </div>
   </form>
 {% endblock content %}
diff --git a/atr/templates/candidate-signature-verify.html 
b/atr/templates/candidate-signature-verify.html
deleted file mode 100644
index 6893d8d..0000000
--- a/atr/templates/candidate-signature-verify.html
+++ /dev/null
@@ -1,216 +0,0 @@
-{% extends "layouts/base.html" %}
-
-{% block title %}
-  Verify release signatures ~ ATR
-{% endblock title %}
-
-{% block description %}
-  Verify release candidate signatures.
-{% endblock description %}
-
-{% block stylesheets %}
-  {{ super() }}
-  <style>
-      .candidate-info {
-          margin-bottom: 2rem;
-      }
-
-      .package-list {
-          margin: 1rem 0;
-      }
-
-      .package {
-          border: 1px solid #ddd;
-          padding: 1rem;
-          margin: 1rem 0;
-          border-radius: 4px;
-      }
-
-      .package-info {
-          margin-bottom: 1rem;
-      }
-
-      .verification-status {
-          margin-top: 1rem;
-          padding: 1rem;
-          border-radius: 4px;
-          background: #f5f5f5;
-      }
-
-      .verification-status .status {
-          font-weight: bold;
-      }
-
-      .navigation {
-          margin-top: 2rem;
-      }
-
-      .navigation a {
-          margin-right: 1rem;
-      }
-
-      .error {
-          color: #dc3545;
-          font-weight: bold;
-      }
-
-      .status.success {
-          color: #219f3f;
-      }
-
-      .status.failure {
-          color: #dc3545;
-      }
-
-      .signature-details {
-          margin-top: 1rem;
-          padding: 1rem;
-          border-radius: 4px;
-          background: #f5f5f5;
-      }
-
-      .debug-info {
-          margin-top: 1rem;
-          padding: 1rem;
-          border-radius: 4px;
-          background: #f8f9fa;
-          border: 1px solid #dee2e6;
-      }
-
-      .debug-info summary {
-          color: #666;
-          font-weight: bold;
-          cursor: pointer;
-          padding-bottom: 0.5rem;
-      }
-
-      .debug-info summary:hover {
-          color: #333;
-      }
-
-      .debug-info[open] summary {
-          border-bottom: 1px solid #dee2e6;
-          margin-bottom: 1rem;
-      }
-
-      .debug-info dl {
-          margin: 0;
-          display: grid;
-          grid-template-columns: auto 1fr;
-          gap: 0.5rem 1rem;
-      }
-
-      .debug-info dt {
-          font-weight: bold;
-          color: #666;
-      }
-
-      .debug-info dd {
-          margin: 0;
-          word-break: break-all;
-      }
-
-      .candidate-header {
-          border: 1px solid #ddd;
-          border-radius: 4px;
-          padding: 1rem;
-          margin-bottom: 1rem;
-          background-color: #f8f8f8;
-      }
-
-      .candidate-header h3 {
-          margin: 0 0 0.5rem 0;
-      }
-
-      .candidate-meta {
-          color: #666;
-          font-size: 0.9em;
-          display: flex;
-          flex-wrap: wrap;
-          gap: 1rem;
-      }
-
-      .candidate-meta-item::after {
-          content: "•";
-          margin-left: 1rem;
-          color: #ccc;
-      }
-
-      .candidate-meta-item:last-child::after {
-          content: none;
-      }
-
-      pre.stderr {
-          background: #f8f9fa;
-          border-radius: 2px;
-          overflow-x: auto;
-          margin: 0.5rem 0;
-          white-space: pre-wrap;
-      }
-  </style>
-{% endblock stylesheets %}
-
-{% block content %}
-  <h1>Verify release signatures</h1>
-
-  <div class="candidate-header">
-    <h3>{{ release.pmc.display_name }}</h3>
-    <div class="candidate-meta">
-      <span class="candidate-meta-item">Version: {{ release.version }}</span>
-      <span class="candidate-meta-item">Stage: {{ release.stage.value }}</span>
-      <span class="candidate-meta-item">Phase: {{ release.phase.value }}</span>
-      <span class="candidate-meta-item">Created: {{ 
release.created.strftime("%Y-%m-%d %H:%M UTC") }}</span>
-    </div>
-  </div>
-
-  <div class="package-list">
-    {% for result in verification_results %}
-      <div class="package">
-        <div class="package-info">
-          <div>
-            <strong>File:</strong> {{ result.filename }}
-          </div>
-        </div>
-
-        <div class="verification-status">
-          {% if result.error %}
-            <p class="error">Error: {{ result.error }}</p>
-          {% else %}
-            <p class="status {% if result.verified %}success{% else 
%}failure{% endif %}">Status: {{ result.status }}</p>
-            {% if result.verified %}
-              <div class="signature-details">
-                <p>
-                  <strong>Key ID:</strong> {{ result.key_id }}
-                </p>
-                <p>
-                  <strong>Signed by:</strong> {{ result.username }} &lt;{{ 
result.email }}&gt;
-                </p>
-                <p>
-                  <strong>Timestamp:</strong> {{ result.timestamp }}
-                </p>
-              </div>
-            {% endif %}
-          {% endif %}
-
-          {% if result.debug_info %}
-            <details class="debug-info">
-              <summary>Debug Information</summary>
-              <dl>
-                {% for key, value in result.debug_info.items() %}
-                  <dt>{{ key }}</dt>
-                  <dd>
-                    {% if key == 'stderr' and value != 'Not available' %}
-                      <pre class="stderr">{{ value }}</pre>
-                    {% else %}
-                      {{ value }}
-                    {% endif %}
-                  </dd>
-                {% endfor %}
-              </dl>
-            </details>
-          {% endif %}
-        </div>
-      </div>
-    {% endfor %}
-  </div>
-{% endblock content %}
diff --git a/atr/templates/dev-send-email.html 
b/atr/templates/dev-send-email.html
index eaaff3f..886d25a 100644
--- a/atr/templates/dev-send-email.html
+++ b/atr/templates/dev-send-email.html
@@ -8,79 +8,32 @@
   Test email sending functionality.
 {% endblock description %}
 
+{% block theme_css %}
+  <link rel="stylesheet"
+        href="{{ url_for('static', filename='css/atr-small.css') }}" />
+{% endblock theme_css %}
+
 {% block stylesheets %}
   {{ super() }}
-  <style>
-      .form-table {
-          width: 100%;
-      }
-
-      .form-table th {
-          width: 200px;
-          text-align: right;
-          padding-right: 1rem;
-          vertical-align: top;
-          font-weight: 500;
-      }
-
-      .form-table td {
-          vertical-align: top;
-      }
-
-      .form-table label {
-          border-bottom: none;
-          padding-bottom: 0;
-      }
-
-      input[type="text"],
-      input[type="email"] {
-          width: 100%;
-          max-width: 600px;
-          padding: 0.375rem;
-          border: 1px solid #ced4da;
-          border-radius: 0.25rem;
-      }
-
-      .help-text {
-          color: #666;
-          font-size: 0.9em;
-          display: block;
-          margin-top: 0.25rem;
-      }
-
-      .error-message {
-          color: #dc3545;
-          margin-top: 0.25rem;
-      }
-
-      .success-message {
-          color: #28a745;
-          margin-top: 0.25rem;
-      }
-
-      button {
-          margin-top: 1rem;
-      }
-  </style>
 {% endblock stylesheets %}
 
 {% block content %}
   <h1>Test email sending</h1>
-  <p class="intro">
+  <p>
     Welcome, <strong>{{ asf_id }}</strong>! Use this form to test the email 
sending functionality.
   </p>
 
   {% if error %}
-    <div class="error-message">
-      <p>
+    <div class="alert alert-danger">
+      <p class="mb-0">
         <strong>Error:</strong> {{ error }}
       </p>
     </div>
   {% endif %}
 
   {% if success %}
-    <div class="success-message">
-      <p>
+    <div class="alert alert-success">
+      <p class="mb-0">
         <strong>Success!</strong>
         {% if message %}
           {{ message }}
@@ -91,63 +44,55 @@
     </div>
   {% endif %}
 
-  <form method="post" class="striking">
-    <table class="form-table">
-      <tbody>
-        <tr>
-          <th>
-            <label for="email_recipient">Recipient email:</label>
-          </th>
-          <td>
-            <input type="email"
-                   id="email_recipient"
-                   name="email_recipient"
-                   required
-                   value="{{ email_recipient or '' }}"
-                   placeholder="recipi...@example.com"
-                   aria-describedby="email-help" />
-            <span id="email-help" class="help-text">Enter the email address to 
send the test email to</span>
-          </td>
-        </tr>
+  <form method="post" class="striking py-4 px-5">
+    <div class="mb-3 pb-3 row border-bottom">
+      <label for="email_recipient" class="col-sm-3 col-form-label 
text-sm-end">Recipient email:</label>
+      <div class="col-sm-8">
+        <input type="email"
+               id="email_recipient"
+               name="email_recipient"
+               class="form-control"
+               required
+               value="{{ email_recipient or '' }}"
+               placeholder="recipi...@example.com"
+               aria-describedby="email-help" />
+        <code id="email-help" class="form-text text-muted d-block mt-2">Enter 
the email address to send the test email to</code>
+      </div>
+    </div>
 
-        <tr>
-          <th>
-            <label for="artifact_name">Artifact name:</label>
-          </th>
-          <td>
-            <input type="text"
-                   id="artifact_name"
-                   name="artifact_name"
-                   required
-                   value="{{ artifact_name or '' }}"
-                   placeholder="my-artifact-1.0.0"
-                   aria-describedby="artifact-help" />
-            <span id="artifact-help" class="help-text">Enter a name for the 
artifact</span>
-          </td>
-        </tr>
+    <div class="mb-3 pb-3 row border-bottom">
+      <label for="artifact_name" class="col-sm-3 col-form-label 
text-sm-end">Artifact name:</label>
+      <div class="col-sm-8">
+        <input type="text"
+               id="artifact_name"
+               name="artifact_name"
+               class="form-control"
+               required
+               value="{{ artifact_name or '' }}"
+               placeholder="my-artifact-1.0.0"
+               aria-describedby="artifact-help" />
+        <code id="artifact-help" class="form-text text-muted d-block 
mt-2">Enter a name for the artifact</code>
+      </div>
+    </div>
 
-        <tr>
-          <th>
-            <label for="token">Token (optional):</label>
-          </th>
-          <td>
-            <input type="text"
-                   id="token"
-                   name="token"
-                   value="{{ token or '' }}"
-                   placeholder="Optional token"
-                   aria-describedby="token-help" />
-            <span id="token-help" class="help-text">Optional token to include 
in the email</span>
-          </td>
-        </tr>
+    <div class="mb-3 pb-3 row border-bottom">
+      <label for="token" class="col-sm-3 col-form-label text-sm-end">Token 
(optional):</label>
+      <div class="col-sm-8">
+        <input type="text"
+               id="token"
+               name="token"
+               class="form-control"
+               value="{{ token or '' }}"
+               placeholder="Optional token"
+               aria-describedby="token-help" />
+        <code id="token-help" class="form-text text-muted d-block 
mt-2">Optional token to include in the email</code>
+      </div>
+    </div>
 
-        <tr>
-          <td></td>
-          <td>
-            <button type="submit">Send test email</button>
-          </td>
-        </tr>
-      </tbody>
-    </table>
+    <div class="row">
+      <div class="col-sm-9 offset-sm-3">
+        <button type="submit" class="btn btn-primary mt-2">Send test 
email</button>
+      </div>
+    </div>
   </form>
 {% endblock content %}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@tooling.apache.org
For additional commands, e-mail: commits-h...@tooling.apache.org

Reply via email to