Skip to content

Commit

Permalink
Added filters for details and prettify for timestamp/second values.
Browse files Browse the repository at this point in the history
  • Loading branch information
ionelmc committed Nov 1, 2011
1 parent 0ac0e1e commit b7e1194
Showing 1 changed file with 30 additions and 2 deletions.
32 changes: 30 additions & 2 deletions src/redisboard/admin.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,33 @@
from django.contrib import admin
from django.conf import settings
from .models import RedisServer

import re
from datetime import datetime, timedelta

REDISBOARD_DETAIL_FILTERS = [re.compile(name) for name in getattr(settings, 'REDISBOARD_DETAIL_FILTERS', (
'aof_enabled', 'bgrewriteaof_in_progress', 'bgsave_in_progress',
'changes_since_last_save', 'db.*', 'db1', 'last_save_time',
'multiplexing_api', 'total_commands_processed',
'total_connections_received', 'uptime_in_days', 'uptime_in_seconds',
'vm_enabled'
))]
REDISBOARD_DETAIL_TIMESTAMP_KEYS = getattr(settings, 'REDISBOARD_DETAIL_TIMESTAMP_KEYS', (
'last_save_time',
))
REDISBOARD_DETAIL_SECONDS_KEYS = getattr(settings, 'REDISBOARD_DETAIL_SECONDS_KEYS', (
'uptime_in_seconds',
))


def prettify(key, value):
if key in REDISBOARD_DETAIL_SECONDS_KEYS:
return key, timedelta(seconds=value)
elif key in REDISBOARD_DETAIL_TIMESTAMP_KEYS:
return key, datetime.fromtimestamp(value)
else:
return key, value

class RedisServerAdmin(admin.ModelAdmin):
list_display = (
'__unicode__', 'status', 'memory', 'clients', 'details'
Expand All @@ -16,8 +43,9 @@ def clients(self, obj):

def details(self, obj):
return "<table>%s</table>" % ''.join(
"<tr><td>%s</td><td>%s</td></tr>" % i
for i in sorted(obj.stats['details'].items(), key=lambda (k,v): k)
"<tr><td>%s</td><td>%s</td></tr>" % prettify(k, v)
for k, v in sorted(obj.stats['details'].items(), key=lambda (k,v): k)
if any(name.match(k) for name in REDISBOARD_DETAIL_FILTERS)
)

details.allow_tags = True
Expand Down

0 comments on commit b7e1194

Please sign in to comment.