canonical-ubuntu-qa team mailing list archive
-
canonical-ubuntu-qa team
-
Mailing list archive
-
Message #03569
[Merge] ~andersson123/autopkgtest-cloud:login-button into autopkgtest-cloud:master
Tim Andersson has proposed merging ~andersson123/autopkgtest-cloud:login-button into autopkgtest-cloud:master.
Requested reviews:
Canonical's Ubuntu QA (canonical-ubuntu-qa)
For more details, see:
https://code.launchpad.net/~andersson123/autopkgtest-cloud/+git/autopkgtest-cloud/+merge/463211
--
Your team Canonical's Ubuntu QA is requested to review the proposed merge of ~andersson123/autopkgtest-cloud:login-button into autopkgtest-cloud:master.
diff --git a/charms/focal/autopkgtest-web/webcontrol/browse.cgi b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
index e9bf6b3..91b020d 100755
--- a/charms/focal/autopkgtest-web/webcontrol/browse.cgi
+++ b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
@@ -13,15 +13,23 @@ from wsgiref.handlers import CGIHandler
import flask
from helpers.admin import select_abnormally_long_jobs
from helpers.exceptions import RunningJSONNotFound
-from helpers.utils import get_all_releases, get_supported_releases
+from helpers.utils import get_all_releases, get_supported_releases, setup_key
from werkzeug.middleware.proxy_fix import ProxyFix
+# Initialize app
+PATH = os.path.join(
+ os.path.sep, os.getenv("XDG_RUNTIME_DIR", "/run"), "autopkgtest_webcontrol"
+)
+os.makedirs(PATH, exist_ok=True)
app = flask.Flask("browse")
-
# we don't want a long cache, as we only serve files that are regularly updated
app.config["SEND_FILE_MAX_AGE_DEFAULT"] = 60
app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1)
+
+secret_path = os.path.join(PATH, "secret_key")
+setup_key(app, secret_path)
+
db_con = None
swift_container_url = None
@@ -153,6 +161,13 @@ def get_release_arches():
return release_arches
+def check_user():
+ user = None
+ if "nickname" in flask.session:
+ user = flask.session["nickname"]
+ return user
+
+
def get_queues_info():
"""Return information about queued tests
@@ -245,6 +260,7 @@ def success_count_for_release_and_arch(db, release, arch, src_versions):
@app.route("/")
def index_root():
+ flask.session.permanent = True
letters = list("abcdefghijklmnopqrstuvwxyz")
indexes = letters + ["lib" + l for l in letters]
indexes.sort()
@@ -260,8 +276,14 @@ def index_root():
hc = human_exitcode(row[0])
res = hc if "code" not in hc else "fail"
recent.append((res, row[1], row[2], row[3], row[4]))
+ user = check_user()
- return render("browse-home.html", indexes=indexes, recent_runs=recent)
+ return render(
+ "browse-home.html",
+ indexes=indexes,
+ recent_runs=recent,
+ user=user,
+ )
# backwards-compatible path with debci that specifies the source hash
@@ -297,6 +319,7 @@ def package_overview(package, _=None):
len(filtered_requests), # update the size too
filtered_requests,
)
+ user = check_user()
return render(
"browse-package.html",
@@ -312,6 +335,7 @@ def package_overview(package, _=None):
title_suffix="- %s" % package,
running=running_info,
queues_info=queues_info,
+ user=user,
)
@@ -419,6 +443,7 @@ def package_release_arch(package, release, arch, _=None):
item_info.get("uuid", ""),
),
)
+ user = check_user()
return render(
"browse-results.html",
@@ -427,6 +452,7 @@ def package_release_arch(package, release, arch, _=None):
arch=arch,
package_results=results,
title_suffix="- %s/%s/%s" % (package, release, arch),
+ user=user,
)
@@ -445,6 +471,7 @@ def running():
] = queue_length
running_info = get_running_jobs()
+ user = check_user()
return render(
"browse-running.html",
@@ -453,6 +480,7 @@ def running():
queues_info=queues_info,
queues_lengths=queues_lengths,
running=running_info,
+ user=user,
)
@@ -462,9 +490,11 @@ def admin():
pruned_running_info = select_abnormally_long_jobs(
running_info, get_test_id=get_test_id, db_con=db_con
)
+ user = check_user()
return render(
"browse-admin.html",
running=pruned_running_info,
+ user=user,
)
@@ -521,7 +551,12 @@ def testlist():
# strip off epoch
v = row[1][row[1].find(":") + 1 :]
indexed_pkgs.setdefault(srchash(row[0]), []).append((row[0], v))
- return render("browse-testlist.html", indexed_pkgs=indexed_pkgs)
+ user = check_user()
+ return render(
+ "browse-testlist.html",
+ indexed_pkgs=indexed_pkgs,
+ user=user,
+ )
@app.route("/statistics")
@@ -572,9 +607,13 @@ def statistics():
] = success_count_for_release_and_arch(
db_con, release, arch, sources
)
+ user = check_user()
return render(
- "browse-statistics.html", release_arches=release_arches, data=data
+ "browse-statistics.html",
+ release_arches=release_arches,
+ data=data,
+ user=user,
)
diff --git a/charms/focal/autopkgtest-web/webcontrol/request/app.py b/charms/focal/autopkgtest-web/webcontrol/request/app.py
index a4a3367..422a40a 100644
--- a/charms/focal/autopkgtest-web/webcontrol/request/app.py
+++ b/charms/focal/autopkgtest-web/webcontrol/request/app.py
@@ -273,6 +273,8 @@ def index_root():
elif nick:
params["requester"] = nick
s = Submit()
+ if list(params.keys()) == ["/login", "requester"]:
+ return redirect("/")
try:
s.validate_args(params)
s.validate_distro_request(**params)
diff --git a/charms/focal/autopkgtest-web/webcontrol/templates/browse-layout.html b/charms/focal/autopkgtest-web/webcontrol/templates/browse-layout.html
index c91457d..acd14ae 100644
--- a/charms/focal/autopkgtest-web/webcontrol/templates/browse-layout.html
+++ b/charms/focal/autopkgtest-web/webcontrol/templates/browse-layout.html
@@ -34,6 +34,9 @@
<li><a href="https://discourse.ubuntu.com/t/autopkgtest-service/34490">Service Status</a></li>
<li><a href="https://autopkgtest-cloud.readthedocs.io/">Docs for admins</a></li>
<li><a href="{{base_url}}admin">Admin</a></li>
+ {% if not user %}
+ <li><a href="{{base_url}}request.cgi?/login">Login</a></li>
+ {% endif %}
</ul>
</div><!--/.nav-collapse -->
</div>
References