def online_users(request): suser = request.REQUEST.get('q', "") sort = "" if request.GET.get("sort", None): try: sort = int(request.GET["sort"]) except ValueError: logging.error('Found invalid sort "%s", loading %s, refered by %s' % ( request.GET.get("sort", ''), request.path, request.META.get('HTTP_REFERER', 'UNKNOWN') )) raise Http404() page = 0 if request.GET.get("page", None): try: page = int(request.GET["page"]) except ValueError: logging.error('Found invalid page "%s", loading %s, refered by %s' % ( request.GET.get("page", ''), request.path, request.META.get('HTTP_REFERER', 'UNKNOWN') )) raise Http404() pagesize = 10 if request.GET.get("pagesize", None): try: pagesize = int(request.GET["pagesize"]) except ValueError: logging.error('Found invalid pagesize "%s", loading %s, refered by %s' % ( request.GET.get("pagesize", ''), request.path, request.META.get('HTTP_REFERER', 'UNKNOWN') )) raise Http404() users = None if sort == "reputation": users = sorted(ONLINE_USERS.sets.keys(), key=lambda user: user.reputation) elif sort == "newest" : users = sorted(ONLINE_USERS.sets.keys(), key=lambda user: user.newest) elif sort == "last": users = sorted(ONLINE_USERS.sets.keys(), key=lambda user: user.last) elif sort == "name": users = sorted(ONLINE_USERS.sets.keys(), key=lambda user: user.name) elif sort == "oldest": users = sorted(ONLINE_USERS.sets.keys(), key=lambda user: user.oldest) elif sort == "newest": users = sorted(ONLINE_USERS.sets.keys(), key=lambda user: user.newest) elif sort == "votes": users = sorted(ONLINE_USERS.sets.keys(), key=lambda user: user.votes) else: users = sorted(ONLINE_USERS.iteritems(), key=lambda x: x[1]) return render_to_response('users/online_users.html', { "users" : users, "suser" : suser, "sort" : sort, "page" : page, "pageSize" : pagesize, })