]> de.git.xonotic.org Git - xonotic/xonstat.git/blob - xonstat/views/search.py
Basic player search functionality.
[xonotic/xonstat.git] / xonstat / views / search.py
1 import datetime
2 import logging
3 import pyramid.httpexceptions
4 import re
5 import time
6 from pyramid.response import Response
7 from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound
8 from sqlalchemy.sql import func
9 from xonstat.models import *
10 from xonstat.util import strip_colors, qfont_decode
11
12 log = logging.getLogger(__name__)
13
14 def search_q(player_id=None, nick=None, server_id=None, server_name=None,
15         map_id=None, map_name=None, game_id=None, create_dt=None):
16     session     = DBSession()
17     result_type = None
18     results     = None
19
20     # player-only searches
21     if ((player_id or nick) and not server_id and not server_name and not
22             map_id and not map_name and not game_id and not create_dt):
23         result_type = "player"
24         q = session.query(Player)
25         if nick:
26             q = q.filter(func.upper(Player.stripped_nick).like('%'+nick.upper()+'%'))
27         if player_id:
28             q = q.filter(Player.player_id==player_id)
29
30     try:
31         results = q.all()
32     except:
33         result_type = None
34         results = None
35
36     return (result_type, results)
37
38 def search(request):
39     result_type = None
40     results = None
41
42     if request.params.has_key('form.submitted'):
43         nick = request.params['nick']
44         (result_type, results) = search_q(nick=nick)
45
46     return {'result_type':result_type,
47             'results':results,
48             }