-import datetime
import logging
-import pyramid.httpexceptions
-import re
-import time
-from pyramid.response import Response
-from sqlalchemy import desc
-from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound
+
from sqlalchemy 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
+from webhelpers.paginate import Page
+from xonstat.models import DBSession, Server, Map, Game, PlayerGameStat, Player
+from xonstat.util import page_url
log = logging.getLogger(__name__)
q = q.filter(
func.upper(Player.stripped_nick).like('%'+nick.upper()+'%')).\
filter(Player.player_id > 2).\
+ filter(Player.active_ind == True).\
order_by(Player.player_id)
# server-only searches
- elif server_name and not nick and not map_name and not create_dt \
- and len(gametypes) < 1:
+ elif server_name and not nick and not map_name and not create_dt and len(gametypes) < 1:
result_type = "server"
q = session.query(Server)
if server_name:
- q = q.filter(func.upper(Server.name).\
- like('%'+server_name.upper()+'%')).\
- order_by(Server.server_id)
+ q = q.filter(func.upper(Server.name).like('%'+server_name.upper()+'%'))\
+ .filter(Server.active_ind)\
+ .order_by(Server.server_id)
# map-only searches
elif map_name and not nick and not server_name and not create_dt \
result_type = "game"
q = session.query(Game, Server, Map).\
filter(Game.server_id == Server.server_id).\
+ filter(Server.active_ind).\
filter(Game.map_id == Map.map_id).\
order_by(Game.game_id.desc())
if len(gametypes) > 0:
return (result_type, q)
-def search(request):
+def _search_data(request):
fs = None
nick = None
server_name = None
result_type = None
results = None
query = None
+ _query = {}
+
- if 'page' in request.matchdict:
- current_page = request.matchdict['page']
+ if request.params.has_key('page'):
+ current_page = request.params['page']
else:
current_page = 1
stype = request.params['stype']
sval = request.params['sval']
if stype == "players":
+ query['nick'] = sval
nick = sval
if stype == "servers":
+ query['server_name'] = sval
server_name = sval
if stype == "maps":
+ query['map_name'] = sval
map_name = sval
(result_type, q) = search_q(nick=nick, server_name=server_name,
try:
if q != None:
- results = Page(q, current_page, url=page_url)
+ results = Page(q, current_page, items_per_page=10, url=page_url)
except Exception as e:
raise e
result_type = None
'results':results,
'query':query,
}
+
+
+def search(request):
+ return _search_data(request)
+
+
+def search_json(request):
+ return [{'status':'not implemented'}]