diff --git a/ocfweb/main/home.py b/ocfweb/main/home.py index 070382aee..8de6c9e51 100644 --- a/ocfweb/main/home.py +++ b/ocfweb/main/home.py @@ -1,11 +1,16 @@ +import random from datetime import date from datetime import timedelta from operator import attrgetter +from typing import Mapping from django.http import HttpRequest from django.http import HttpResponse +from django.http import HttpResponseRedirect +from django.shortcuts import redirect from django.shortcuts import render from ocflib.lab.staff_hours import get_staff_hours_soonest_first +from ocflib.vhost.web import get_vhosts from ocfweb.api.hours import get_hours_listing from ocfweb.caching import periodic @@ -19,6 +24,20 @@ def get_staff_hours() -> str: return get_staff_hours_soonest_first()[:2] +def hosted_site_urls(vhosts: Mapping[str, object] | None = None) -> list[str]: + if vhosts is None: + vhosts = get_vhosts() + + return sorted( + f'https://{hostname}/' + for hostname in vhosts.keys() + ) + + +def random_hosted_site(request: HttpRequest) -> HttpResponseRedirect: + return redirect(random.choice(hosted_site_urls())) + + def home(request: HttpRequest) -> HttpResponse: hours_listing = get_hours_listing() hours = [ diff --git a/ocfweb/main/templates/main/home.html b/ocfweb/main/templates/main/home.html index 1a914cb3f..7983a797e 100644 --- a/ocfweb/main/templates/main/home.html +++ b/ocfweb/main/templates/main/home.html @@ -33,7 +33,7 @@

Welcome to the Open Computing Facility!

OCF volunteers maintain services for the Berkeley community, including: