diff options
-rw-r--r-- | devel/urls.py | 1 | ||||
-rw-r--r-- | devel/views.py | 25 | ||||
-rw-r--r-- | templates/devel/clock.html | 49 |
3 files changed, 74 insertions, 1 deletions
diff --git a/devel/urls.py b/devel/urls.py index 23dd2d9f..0a050a92 100644 --- a/devel/urls.py +++ b/devel/urls.py @@ -2,6 +2,7 @@ from django.conf.urls.defaults import patterns urlpatterns = patterns('devel.views', (r'^$', 'index'), + (r'^clock/$', 'clock'), (r'^notify/$', 'change_notify'), (r'^profile/$', 'change_profile'), (r'^newuser/$', 'new_user_form'), diff --git a/devel/views.py b/devel/views.py index 710bfff5..b26c7af0 100644 --- a/devel/views.py +++ b/devel/views.py @@ -13,6 +13,8 @@ from main.models import UserProfile from packages.models import PackageRelation from .utils import get_annotated_maintainers +import datetime +import pytz import random from string import ascii_letters, digits @@ -38,11 +40,32 @@ def index(request): 'maintainers': maintainers, 'flagged' : flagged, 'todopkgs' : todopkgs, - } + } return direct_to_template(request, 'devel/index.html', page_dict) @login_required +@never_cache +def clock(request): + devs = User.objects.filter(is_active=True).order_by( + 'username').select_related('userprofile') + + # now annotate each dev object with their current time + now = datetime.datetime.now() + utc_now = datetime.datetime.utcnow().replace(tzinfo=pytz.utc) + for dev in devs: + tz = pytz.timezone(dev.userprofile.time_zone) + dev.current_time = utc_now.astimezone(tz) + + page_dict = { + 'developers': devs, + 'now': now, + 'utc_now': utc_now, + } + + return direct_to_template(request, 'devel/clock.html', page_dict) + +@login_required def change_notify(request): maint = User.objects.get(username=request.user.username) notify = request.POST.get('notify', 'no') diff --git a/templates/devel/clock.html b/templates/devel/clock.html new file mode 100644 index 00000000..ec567c2d --- /dev/null +++ b/templates/devel/clock.html @@ -0,0 +1,49 @@ +{% extends "base.html" %} + +{% block title %}Arch Linux - Developer World Clocks{% endblock %} + +{% block content %} +<div id="dev-clocks-box" class="box"> + <h2>Developer World Clocks</h2> + + <p>This page helps prevent you from waking a sleeping developer. It also + depends on developers keeping the time zone information up to date, so if + you see 'UTC' listed, pester them to update their settings.</p> + <p> + Arch Server Time: {{ now|date:"Y-m-d H:i" }}<br/> + UTC Time: {{ utc_now|date:"Y-m-d H:i" }} + </p> + + <table id="clocks-table" class="results dash-stats"> + <thead> + <tr> + <th>Developer</th> + <th>Username</th> + <th>Location</th> + <th>Time Zone</th> + <th>Current Time</th> + </tr> + </thead> + <tbody> + {% for dev in developers %} + <tr class="{% cycle 'odd' 'even' %}"> + <td>{{ dev.get_full_name }}</td> + <td>{{ dev.username }}</td> + <td>{{ dev.userprofile.location }}</td> + <td>{{ dev.userprofile.time_zone }}</td> + <td>{{ dev.current_time|date:"Y-m-d H:i" }}</td> + </tr> + {% endfor %} + </tbody> + </table> +</div> +{% load cdn %}{% jquery %} +<script type="text/javascript" src="/media/jquery.tablesorter.min.js"></script> +<script type="text/javascript" src="/media/archweb.js"></script> +<script type="text/javascript"> +$(document).ready(function() { + $("#clocks-table:has(tbody tr)").tablesorter( + {widgets: ['zebra'], sortList: [[1,0]]}); +}); +</script> +{% endblock %} |