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-atr-experiments.git
The following commit(s) were added to refs/heads/main by this push:
new 071d704 Fix linting errors
071d704 is described below
commit 071d704d15e4d4b9c70a4d5a332d20e523ca94bf
Author: Sean B. Palmer <[email protected]>
AuthorDate: Mon Feb 17 14:17:39 2025 +0200
Fix linting errors
---
atr/server.py | 1 +
atr/static/css/bootstrap.min.css | 2 +-
atr/static/css/fontawesome.all.min.css | 2 +-
atr/static/js/bootstrap.bundle.min.js | 2 +-
atr/templates/includes/footer.html | 2 +-
atr/templates/includes/navigation.html | 78 +++++----
atr/templates/index.html | 6 +-
atr/templates/layouts/base.html | 38 +++--
atr/templates/pages.html | 300 +++++++++++++++++----------------
atr/templates/pmc-directory.html | 58 ++++---
10 files changed, 265 insertions(+), 224 deletions(-)
diff --git a/atr/server.py b/atr/server.py
index 13988a9..c2a563f 100644
--- a/atr/server.py
+++ b/atr/server.py
@@ -21,6 +21,7 @@ import os
import asfquart
import asfquart.generics
+import asfquart.session
from asfquart.base import QuartApp
from sqlmodel import SQLModel
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession,
async_sessionmaker
diff --git a/atr/static/css/bootstrap.min.css b/atr/static/css/bootstrap.min.css
index 3993414..46dc7fa 100644
--- a/atr/static/css/bootstrap.min.css
+++ b/atr/static/css/bootstrap.min.css
@@ -3,4 +3,4 @@
* Copyright 2011-2024 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--
[...]
-/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
+/*# sourceMappingURL=bootstrap.min.css.map */
diff --git a/atr/static/css/fontawesome.all.min.css
b/atr/static/css/fontawesome.all.min.css
index 29542ac..a660d56 100644
--- a/atr/static/css/fontawesome.all.min.css
+++ b/atr/static/css/fontawesome.all.min.css
@@ -6,4 +6,4 @@
.fa{font-family:var(--fa-style-family,"Font Awesome 6
Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-regular,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-brands:before,.fa-regular:before,.fa-solid:before,.fa:before,.fab:before,.far:before,.fas:before{content:var(--fa)}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font
[...]
.fa-0{--fa:"\30"}.fa-1{--fa:"\31"}.fa-2{--fa:"\32"}.fa-3{--fa:"\33"}.fa-4{--fa:"\34"}.fa-5{--fa:"\35"}.fa-6{--fa:"\36"}.fa-7{--fa:"\37"}.fa-8{--fa:"\38"}.fa-9{--fa:"\39"}.fa-fill-drip{--fa:"\f576"}.fa-arrows-to-circle{--fa:"\e4bd"}.fa-chevron-circle-right,.fa-circle-chevron-right{--fa:"\f138"}.fa-at{--fa:"\40"}.fa-trash-alt,.fa-trash-can{--fa:"\f2ed"}.fa-text-height{--fa:"\f034"}.fa-user-times,.fa-user-xmark{--fa:"\f235"}.fa-stethoscope{--fa:"\f0f1"}.fa-comment-alt,.fa-message{--fa:"\f27
[...]
-.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font
Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6
Brands"}@font-face{font-family:"Font Awesome 6
Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2)
format("woff2"), [...]
\ No newline at end of file
+.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font
Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6
Brands"}@font-face{font-family:"Font Awesome 6
Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2)
format("woff2"), [...]
diff --git a/atr/static/js/bootstrap.bundle.min.js
b/atr/static/js/bootstrap.bundle.min.js
index 04e9185..d705b8d 100644
--- a/atr/static/js/bootstrap.bundle.min.js
+++ b/atr/static/js/bootstrap.bundle.min.js
@@ -4,4 +4,4 @@
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof
module?module.exports=e():"function"==typeof
define&&define.amd?define(e):(t="undefined"!=typeof
globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use
strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const
s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't
allow more than one instance per element. Bound instance:
${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e). [...]
-//# sourceMappingURL=bootstrap.bundle.min.js.map
\ No newline at end of file
+//# sourceMappingURL=bootstrap.bundle.min.js.map
diff --git a/atr/templates/includes/footer.html
b/atr/templates/includes/footer.html
index 3dc104f..38535c7 100644
--- a/atr/templates/includes/footer.html
+++ b/atr/templates/includes/footer.html
@@ -1,5 +1,5 @@
<footer class="footer mt-auto py-3">
<div class="container">
- <span class="text-muted">Copyright© 2025, The Apache Software
Foundation. Material licensed under the <a
href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, version
2.0</a>. For inquiries, contact [email protected]</span>
+ <span class="text-muted">Copyright © 2025, The Apache Software Foundation.
Material licensed under the <a
href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, version
2.0</a>. For inquiries, contact [email protected]</span>
</div>
</footer>
diff --git a/atr/templates/includes/navigation.html
b/atr/templates/includes/navigation.html
index dfc0c62..f5c2b83 100644
--- a/atr/templates/includes/navigation.html
+++ b/atr/templates/includes/navigation.html
@@ -1,36 +1,56 @@
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
-<div class="container-fluid">
- <a class="navbar-brand" href="#"><img src="{{ url_for('static',
filename='images/feather_small.png') }}" style="height: 32px;"/>Apache Trusted
Release Platform</a>
- <div class="collapse navbar-collapse" id="navbarATR">
- <ul class="navbar-nav me-auto mb-2 mb-lg-0">
- <li class="nav-item">
- <a class="nav-link active" aria-current="page" href="/">Home</a>
- </li>
- <li class="nav-item">
- <a class="nav-link" href="/pages">Pages</a>
- </li>
- <li class="nav-item dropdown">
- <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown"
aria-expanded="false">PMCs</a>
- <ul class="dropdown-menu">
- <li><a class="dropdown-item" href="/pmc/directory">Directory</a></li>
- </ul>
- </li>
- </ul>
-
- <ul class="navbar-nav ml-auto">
- <li class="nav-item dropdown">
- {% if current_user %}
- <a class="nav-link dropdown-toggle" href="#"
data-bs-toggle="dropdown" aria-expanded="false">{{ current_user.uid }} - {{
current_user.fullname }}</a>
+ <div class="container-fluid">
+ <a class="navbar-brand" href="#">
+ <img src="{{ url_for('static', filename='images/feather_small.png') }}"
+ alt="Apache Feather Logo"
+ class="navbar-logo" />
+ Apache Trusted Release Platform</a>
+ <div class="collapse navbar-collapse" id="navbarATR">
+ <ul class="navbar-nav me-auto mb-2 mb-lg-0">
+ <li class="nav-item">
+ <a class="nav-link active"
+ aria-current="page"
+ href="{{ url_for('root') }}">Home</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="{{ url_for('root_pages') }}">Pages</a>
+ </li>
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle"
+ href="#"
+ data-bs-toggle="dropdown"
+ aria-expanded="false">PMCs</a>
<ul class="dropdown-menu">
<li>
- <a class="dropdown-item" href="#"
onclick="location.href='/auth?logout=' + window.location.pathname;">Logout</a>
+ <a class="dropdown-item" href="{{ url_for('root_pmc_directory')
}}">Directory</a>
</li>
</ul>
- {% else %}
- <button class="btn btn-outline-light me-2" type="button"
onclick="location.href='/auth?login=' + window.location.pathname;"><i
class="fas fa-user"></i> Login</button>
- {% endif %}
- </li>
- </ul>
+ </li>
+ </ul>
+
+ <ul class="navbar-nav ml-auto">
+ <li class="nav-item dropdown">
+ {% if current_user %}
+ <a class="nav-link dropdown-toggle"
+ href="#"
+ data-bs-toggle="dropdown"
+ aria-expanded="false">{{ current_user.uid }} - {{
current_user.fullname }}</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a class="dropdown-item"
+ href="#"
+ onclick="location.href='/auth?logout=' +
window.location.pathname;">Logout</a>
+ </li>
+ </ul>
+ {% else %}
+ <button class="btn btn-outline-light me-2"
+ type="button"
+ onclick="location.href='/auth?login=' +
window.location.pathname;">
+ <i class="fas fa-user"></i> Login
+ </button>
+ {% endif %}
+ </li>
+ </ul>
+ </div>
</div>
-</div>
</nav>
diff --git a/atr/templates/index.html b/atr/templates/index.html
index aca8b75..f78df3c 100644
--- a/atr/templates/index.html
+++ b/atr/templates/index.html
@@ -1,7 +1,9 @@
{% extends "layouts/base.html" %}
-{% block title %}Apache Trusted Release Platform{% endblock %}
+{% block title %}
+ Apache Trusted Release Platform
+{% endblock title %}
{% block content %}
-<h1>Apache Trusted Releases</h1>
+ <h1>Apache Trusted Releases</h1>
{% endblock content %}
diff --git a/atr/templates/layouts/base.html b/atr/templates/layouts/base.html
index cbf5f52..7805157 100644
--- a/atr/templates/layouts/base.html
+++ b/atr/templates/layouts/base.html
@@ -3,25 +3,35 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
- <meta name="description" content="{% block description %}{% endblock %}" />
- <title>{% block title %}{% endblock %}</title>
+ <meta name="description"
+ content="{%- block description -%}{%- endblock description -%}" />
+ <title>
+ {% block title %}
+ {% endblock title %}
+ </title>
{% block stylesheets %}
- <link rel="stylesheet" href="{{ url_for('static',
filename='css/bootstrap.min.css') }}" />
- <link rel="stylesheet" href="{{ url_for('static',
filename='css/fontawesome.all.min.css') }}" />
- <link rel="stylesheet" href="{{ url_for('static', filename='css/root.css')
}}" />
+ <link rel="stylesheet"
+ href="{{ url_for('static', filename='css/bootstrap.min.css') }}" />
+ <link rel="stylesheet"
+ href="{{ url_for('static', filename='css/fontawesome.all.min.css')
}}" />
+ <link rel="stylesheet"
+ href="{{ url_for('static', filename='css/root.css') }}" />
{% endblock stylesheets %}
</head>
- <body class="{% block body_class %}{% endblock body_class %}">
- <div class="wrapper">
- {% include 'includes/navigation.html' %}
- {% block content %}{% endblock content %}
- {% include 'includes/footer.html' %}
- </div>
+ <body class="{%- block body_class -%}{%- endblock body_class -%}">
+ <div class="wrapper">
+ {% include "includes/navigation.html" %}
- {% block javascripts %}
- <script src="{{ url_for('static', filename='js/bootstrap.bundle.min.js')
}}"></script>
+ {% block content %}
+ {% endblock content %}
+ {% include "includes/footer.html" %}
- {% endblock javascripts %}
+ </div>
+
+ {% block javascripts %}
+ <script src="{{ url_for('static', filename='js/bootstrap.bundle.min.js')
}}"></script>
+
+ {% endblock javascripts %}
</body>
</html>
diff --git a/atr/templates/pages.html b/atr/templates/pages.html
index f7ced7f..c684377 100644
--- a/atr/templates/pages.html
+++ b/atr/templates/pages.html
@@ -1,7 +1,11 @@
{% extends "layouts/base.html" %}
-{% block title %} ATR | Pages {% endblock %}
-{% block description %}List of all pages and endpoints in ATR.{% endblock %}
+{% block title %}
+ ATR | Pages
+{% endblock title %}
+{% block description %}
+ List of all pages and endpoints in ATR.
+{% endblock description %}
{% block stylesheets %}
{{ super() }}
@@ -68,187 +72,187 @@
{% endblock stylesheets %}
{% block content %}
-<h1>ATR Pages</h1>
-<p class="intro">A complete list of all pages and endpoints available in
ATR.</p>
-
-<div class="endpoint-list">
- <div class="endpoint-group">
- <h2>Main Pages</h2>
-
- <div class="endpoint">
- <h3>
- <a href="{{ url_for('root') }}">/</a>
- </h3>
- <div class="endpoint-description">Simple welcome page with Apache
Trusted Releases title.</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement public">Public</span>
+ <h1>ATR Pages</h1>
+ <p class="intro">A complete list of all pages and endpoints available in
ATR.</p>
+
+ <div class="endpoint-list">
+ <div class="endpoint-group">
+ <h2>Main Pages</h2>
+
+ <div class="endpoint">
+ <h3>
+ <a href="{{ url_for('root') }}">/</a>
+ </h3>
+ <div class="endpoint-description">Simple welcome page with Apache
Trusted Releases title.</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement public">Public</span>
+ </div>
</div>
- </div>
- <div class="endpoint">
- <h3>
- <a href="{{ url_for('root_pages') }}">/pages</a>
- </h3>
- <div class="endpoint-description">List of all pages on the website (this
page).</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement public">Public</span>
+ <div class="endpoint">
+ <h3>
+ <a href="{{ url_for('root_pages') }}">/pages</a>
+ </h3>
+ <div class="endpoint-description">List of all pages on the website
(this page).</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement public">Public</span>
+ </div>
</div>
</div>
- </div>
-
- <div class="endpoint-group">
- <h2>PMC Management</h2>
- <div class="endpoint">
- <h3>
- <a href="{{ url_for('root_pmc_directory') }}">/pmc/directory</a>
- </h3>
- <div class="endpoint-description">Main PMC directory page with all PMCs
and their latest releases.</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement public">Public</span>
+ <div class="endpoint-group">
+ <h2>PMC Management</h2>
+
+ <div class="endpoint">
+ <h3>
+ <a href="{{ url_for('root_pmc_directory') }}">/pmc/directory</a>
+ </h3>
+ <div class="endpoint-description">Main PMC directory page with all
PMCs and their latest releases.</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement public">Public</span>
+ </div>
</div>
- </div>
- <div class="endpoint">
- <h3>
- <a href="{{ url_for('root_pmc_list') }}">/pmc/list</a>
- </h3>
- <div class="endpoint-description">List all PMCs in the database (JSON
format).</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement public">Public</span>
+ <div class="endpoint">
+ <h3>
+ <a href="{{ url_for('root_pmc_list') }}">/pmc/list</a>
+ </h3>
+ <div class="endpoint-description">List all PMCs in the database (JSON
format).</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement public">Public</span>
+ </div>
</div>
- </div>
- <div class="endpoint">
- <h3>/pmc/<project_name></h3>
- <div class="endpoint-description">Get details for a specific PMC (JSON
format).</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement public">Public</span>
+ <div class="endpoint">
+ <h3>/pmc/<project_name></h3>
+ <div class="endpoint-description">Get details for a specific PMC (JSON
format).</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement public">Public</span>
+ </div>
</div>
- </div>
- <div class="endpoint">
- <h3>/pmc/create/<project_name></h3>
- <div class="endpoint-description">Create a new PMC with sample data
(JSON format).</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement public">Public</span>
+ <div class="endpoint">
+ <h3>/pmc/create/<project_name></h3>
+ <div class="endpoint-description">Create a new PMC with sample data
(JSON format).</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement public">Public</span>
+ </div>
</div>
</div>
- </div>
- <div class="endpoint-group">
- <h2>Release Management</h2>
-
- <div class="endpoint">
- <h3>
- <a href="{{ url_for('root_add_release_candidate')
}}">/add-release-candidate</a>
- </h3>
- <div class="endpoint-description">Add a release candidate to the
database.</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement committer">Committer</span>
- <br />
- Additional requirement: Must be PMC member of the target project
+ <div class="endpoint-group">
+ <h2>Release Management</h2>
+
+ <div class="endpoint">
+ <h3>
+ <a href="{{ url_for('root_add_release_candidate')
}}">/add-release-candidate</a>
+ </h3>
+ <div class="endpoint-description">Add a release candidate to the
database.</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement committer">Committer</span>
+ <br />
+ Additional requirement: Must be PMC member of the target project
+ </div>
</div>
- </div>
- <div class="endpoint">
- <h3>
- <a href="{{ url_for('root_user_uploads') }}">/user/uploads</a>
- </h3>
- <div class="endpoint-description">Show all release candidates uploaded
by the current user.</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement committer">Committer</span>
+ <div class="endpoint">
+ <h3>
+ <a href="{{ url_for('root_user_uploads') }}">/user/uploads</a>
+ </h3>
+ <div class="endpoint-description">Show all release candidates uploaded
by the current user.</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement committer">Committer</span>
+ </div>
</div>
- </div>
- <div class="endpoint">
- <h3>/release/signatures/verify/<release_key></h3>
- <div class="endpoint-description">Verify GPG signatures for all packages
in a release candidate.</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement committer">Committer</span>
+ <div class="endpoint">
+ <h3>/release/signatures/verify/<release_key></h3>
+ <div class="endpoint-description">Verify GPG signatures for all
packages in a release candidate.</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement committer">Committer</span>
+ </div>
</div>
</div>
- </div>
-
- <div class="endpoint-group">
- <h2>User Management</h2>
- <div class="endpoint">
- <h3>
- <a href="{{ url_for('root_user_keys_add') }}">/user/keys/add</a>
- </h3>
- <div class="endpoint-description">Add a GPG public key to your account
for signing releases.</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement committer">Committer</span>
+ <div class="endpoint-group">
+ <h2>User Management</h2>
+
+ <div class="endpoint">
+ <h3>
+ <a href="{{ url_for('root_user_keys_add') }}">/user/keys/add</a>
+ </h3>
+ <div class="endpoint-description">Add a GPG public key to your account
for signing releases.</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement committer">Committer</span>
+ </div>
</div>
- </div>
- <div class="endpoint">
- <h3>
- <a href="{{ url_for('root_user_keys_delete') }}">/user/keys/delete</a>
- </h3>
- <div class="endpoint-description">Debug endpoint to delete all GPG keys
associated with your account.</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement committer">Committer</span>
- <br />
- <span class="access-requirement warning">Warning: This is a debug
endpoint that immediately deletes all your keys without confirmation!</span>
+ <div class="endpoint">
+ <h3>
+ <a href="{{ url_for('root_user_keys_delete')
}}">/user/keys/delete</a>
+ </h3>
+ <div class="endpoint-description">Debug endpoint to delete all GPG
keys associated with your account.</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement committer">Committer</span>
+ <br />
+ <span class="access-requirement warning">Warning: This is a debug
endpoint that immediately deletes all your keys without confirmation!</span>
+ </div>
</div>
</div>
- </div>
- <div class="endpoint-group">
- <h2>Administration</h2>
-
- <div class="endpoint">
- <h3>
- <a href="{{ url_for('root_admin_database') }}">/admin/database</a>
- </h3>
- <div class="endpoint-description">Browse all records in the
database.</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement committer">Committer</span>
- <span class="access-requirement admin">Admin</span>
- <br />
- Additional requirement: Must be in ALLOWED_USERS list
+ <div class="endpoint-group">
+ <h2>Administration</h2>
+
+ <div class="endpoint">
+ <h3>
+ <a href="{{ url_for('root_admin_database') }}">/admin/database</a>
+ </h3>
+ <div class="endpoint-description">Browse all records in the
database.</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement committer">Committer</span>
+ <span class="access-requirement admin">Admin</span>
+ <br />
+ Additional requirement: Must be in ALLOWED_USERS list
+ </div>
</div>
- </div>
- <div class="endpoint">
- <h3>
- <a href="{{ url_for('root_admin_update_pmcs')
}}">/admin/update-pmcs</a>
- </h3>
- <div class="endpoint-description">Update PMCs from remote, authoritative
committee-info.json.</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement committer">Committer</span>
- <span class="access-requirement admin">Admin</span>
- <br />
- Additional requirement: Must be in ALLOWED_USERS list
+ <div class="endpoint">
+ <h3>
+ <a href="{{ url_for('root_admin_update_pmcs')
}}">/admin/update-pmcs</a>
+ </h3>
+ <div class="endpoint-description">Update PMCs from remote,
authoritative committee-info.json.</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement committer">Committer</span>
+ <span class="access-requirement admin">Admin</span>
+ <br />
+ Additional requirement: Must be in ALLOWED_USERS list
+ </div>
</div>
</div>
- </div>
- <div class="endpoint-group">
- <h2>Debug/Testing</h2>
-
- <div class="endpoint">
- <h3>
- <a href="{{ url_for('root_secret') }}">/secret</a>
- </h3>
- <div class="endpoint-description">Test endpoint for authentication.</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement committer">Committer</span>
+ <div class="endpoint-group">
+ <h2>Debug/Testing</h2>
+
+ <div class="endpoint">
+ <h3>
+ <a href="{{ url_for('root_secret') }}">/secret</a>
+ </h3>
+ <div class="endpoint-description">Test endpoint for
authentication.</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement committer">Committer</span>
+ </div>
</div>
- </div>
- <div class="endpoint">
- <h3>
- <a href="{{ url_for('root_database_debug') }}">/database/debug</a>
- </h3>
- <div class="endpoint-description">Debug information about the
database.</div>
- <div class="endpoint-meta">
- Access: <span class="access-requirement public">Public</span>
+ <div class="endpoint">
+ <h3>
+ <a href="{{ url_for('root_database_debug') }}">/database/debug</a>
+ </h3>
+ <div class="endpoint-description">Debug information about the
database.</div>
+ <div class="endpoint-meta">
+ Access: <span class="access-requirement public">Public</span>
+ </div>
</div>
</div>
</div>
-</div>
{% endblock content %}
diff --git a/atr/templates/pmc-directory.html b/atr/templates/pmc-directory.html
index 5544d84..14c6587 100644
--- a/atr/templates/pmc-directory.html
+++ b/atr/templates/pmc-directory.html
@@ -1,33 +1,37 @@
{% extends "layouts/base.html" %}
-{% block title %} Apache Trusted Releases | PMC Directory {% endblock %}
-{% block description %}Directory of all PMCs{% endblock %}
+{% block title %}
+ ATR | PMC Directory
+{% endblock title %}
+{% block description %}
+ List of all PMCs and their latest releases.
+{% endblock description %}
{% block content %}
- <h1>Directory of PMCs</h1>
-<p class="intro">
- Welcome to the Apache Trusted Release platform. Below are the current Apache
PMCs and their releases:
-</p>
+ <h1>Directory of PMCs</h1>
+ <p class="intro">
+ Welcome to the Apache Trusted Release platform. Below are the current
Apache PMCs and their releases:
+ </p>
-<ul class="pmc-list">
- {% for pmc in pmcs %}
- <li class="pmc-item">
- <div class="pmc-name">{{ pmc.project_name }}</div>
- <div class="pmc-stats">
- <span class="stat-item">
- <span>PMC Members:</span>
- <strong>{{ pmc.pmc_members|length }}</strong>
- </span>
- <span class="stat-item">
- <span>Committers:</span>
- <strong>{{ pmc.committers|length }}</strong>
- </span>
- <span class="stat-item">
- <span>Release Managers:</span>
- <strong>{{ pmc.release_managers|length }}</strong>
- </span>
- </div>
- </li>
- {% endfor %}
-</ul>
+ <ul class="pmc-list">
+ {% for pmc in pmcs %}
+ <li class="pmc-item">
+ <div class="pmc-name">{{ pmc.project_name }}</div>
+ <div class="pmc-stats">
+ <span class="stat-item">
+ <span>PMC Members:</span>
+ <strong>{{ pmc.pmc_members|length }}</strong>
+ </span>
+ <span class="stat-item">
+ <span>Committers:</span>
+ <strong>{{ pmc.committers|length }}</strong>
+ </span>
+ <span class="stat-item">
+ <span>Release Managers:</span>
+ <strong>{{ pmc.release_managers|length }}</strong>
+ </span>
+ </div>
+ </li>
+ {% endfor %}
+ </ul>
{% endblock content %}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]