From: Ant Zucaro Date: Tue, 13 Dec 2011 03:12:51 +0000 (-0500) Subject: Add server and map search options. X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=7bc6c1cc2454ff7618edc772444bce875d7a81e3;p=xonotic%2Fxonstat.git Add server and map search options. --- diff --git a/xonstat/static/css/style.css b/xonstat/static/css/style.css index a5b3e6c..2dde72c 100755 --- a/xonstat/static/css/style.css +++ b/xonstat/static/css/style.css @@ -101,7 +101,7 @@ code { margin:12px 15px; white-space: pre; } -table { width:100%; } +/*table { width:100%; }*/ input { font-family: 'Xolonium', 'Arial', 'Helvetica'; } /* helpers */ .clearfix:after { @@ -415,6 +415,9 @@ tr.odd.blue { tr.even.blue { background-color:#000F4C; } +#search_form td { + border: none; +} /* column-specific table widths */ .create-dt{ diff --git a/xonstat/templates/search.mako b/xonstat/templates/search.mako index 7520caa..c364c74 100644 --- a/xonstat/templates/search.mako +++ b/xonstat/templates/search.mako @@ -1,11 +1,30 @@ +<%inherit file="base.mako"/> + % if results == None:
- - Nick:
- -
+ + + + + + + + + + + + + + + + + + +
Nick:
Server:
Map:
+ % endif +##### player-only results ##### % if result_type == "player": @@ -14,9 +33,41 @@ % for player in results: - + % endfor
${player.nick_html_colors()|n}${player.nick_html_colors()|n} ${player.joined_pretty_date()}
% endif + +##### server-only results ##### +% if result_type == "server": + + + + + + % for server in results: + + + + + % endfor +
ServerCreated
${server.name}${server.create_dt.strftime('%m/%d/%Y at %I:%M %p')}
+% endif + +##### map-only results ##### +% if result_type == "map": + + + + + + % for map in results: + + + + + % endfor +
MapCreated
${map.name}${map.create_dt.strftime('%m/%d/%Y at %I:%M %p')}
+% endif diff --git a/xonstat/views/search.py b/xonstat/views/search.py index 1b3263e..b8b3ab5 100644 --- a/xonstat/views/search.py +++ b/xonstat/views/search.py @@ -8,6 +8,8 @@ from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound from sqlalchemy.sql import func from xonstat.models import * from xonstat.util import strip_colors, qfont_decode +from xonstat.util import page_url, html_colors +from webhelpers.paginate import Page, PageURL log = logging.getLogger(__name__) @@ -15,7 +17,7 @@ def search_q(player_id=None, nick=None, server_id=None, server_name=None, map_id=None, map_name=None, game_id=None, create_dt=None): session = DBSession() result_type = None - results = None + q = None # player-only searches if ((player_id or nick) and not server_id and not server_name and not @@ -26,22 +28,52 @@ def search_q(player_id=None, nick=None, server_id=None, server_name=None, q = q.filter(func.upper(Player.stripped_nick).like('%'+nick.upper()+'%')) if player_id: q = q.filter(Player.player_id==player_id) + # server-only searches + elif ((server_id or server_name) and not player_id and not nick and not + map_id and not map_name and not game_id and not create_dt): + result_type = "server" + q = session.query(Server) + if server_name: + q = q.filter(func.upper(Server.name).\ + like('%'+server_name.upper()+'%')) + if server_id: + q = q.filter(Server.server_id==server_id) + # map-only searches + elif ((map_id or map_name) and not player_id and not nick and not + server_id and not server_name and not game_id and not create_dt): + result_type = "map" + q = session.query(Map) + if map_name: + q = q.filter(func.upper(Map.name).\ + like('%'+map_name.upper()+'%')) + if map_id: + q = q.filter(Map.map_id==map_id) - try: - results = q.all() - except: - result_type = None - results = None - - return (result_type, results) + return (result_type, q) def search(request): + form_submitted = None + nick = None + server_name = None + map_name = None result_type = None results = None - if request.params.has_key('form.submitted'): + if request.params.has_key('form_submitted'): nick = request.params['nick'] - (result_type, results) = search_q(nick=nick) + server_name = request.params['server_name'] + map_name = request.params['map_name'] + (result_type, q) = search_q(nick=nick, server_name=server_name, + map_name=map_name) + log.debug(q) + + try: + if q != None: + results = q.all() + except Exception as e: + raise e + result_type = None + results = None return {'result_type':result_type, 'results':results,