def get(self, server_key=None): server = self.get_server_by_key(server_key, abort=False) if server is None: self.redirect_to_server('chats') return self.request.user.record_chat_view() query_string = self.request.get('q', None) # Search if query_string: page = 0 cursor = self.request.get('cursor', None) if cursor and cursor.startswith('PAGE_'): page = int(cursor.strip()[5:]) offset = page*RESULTS_PER_PAGE results, number_found, _ = search.search_log_lines( 'chat:{0}'.format(query_string), server_key=server.key, limit=RESULTS_PER_PAGE, offset=offset ) previous_cursor = next_cursor = None if page > 0: previous_cursor = u'PAGE_{0}&q={1}'.format(page - 1 if page > 0 else 0, query_string) if number_found > offset + RESULTS_PER_PAGE: next_cursor = u'PAGE_{0}&q={1}'.format(page + 1, query_string) # Latest else: results, previous_cursor, next_cursor = self.get_results_with_cursors( LogLine.query_latest_events(server.key), LogLine.query_oldest_events(server.key), RESULTS_PER_PAGE ) context = {'chats': results, 'query_string': query_string or ''} if self.request.is_xhr: self.render_xhr_response(server.key, context, next_cursor) else: self.render_html_response(server.key, context, next_cursor, previous_cursor)
def LogAccess(username, request, course_id=None): ''' Write a log entry line ''' ll = LogLine(username=username, course_id=course_id, url=request.url, ipaddr=request.remote_addr) ll.put()
def get(self): self.request.user.record_chat_view() results, previous_cursor, next_cursor = self.get_results_with_cursors( LogLine.query_latest_chats(), LogLine.query_oldest_chats(), coal_config.RESULTS_PER_PAGE ) if results: self.request.user.record_chat_view(results[0].timestamp) context = {'chats': results, 'previous_cursor': previous_cursor, 'next_cursor': next_cursor} self.render_template('chats.html', context=context)
def post(self): client = Client.get_by_client_id(self.request.authentication.client_id) server = client.server if not server.active: self.abort(404) status_code = 200 line = self.request.form.line.data zone = self.request.form.zone.data existing_line = LogLine.lookup_line(server.key, line) if existing_line is None: log_line = LogLine.create(server, line, zone) if log_line is not None: status_code = 201 self.json_response({}, status_code=status_code)
def get(self): client = Client.get_by_client_id(self.request.authentication.client_id) server = client.server if not server.active: self.abort(404) last_log_line = LogLine.get_last_line_with_timestamp(server.key) response = { 'lastline': last_log_line.line if last_log_line is not None else None, } self.json_response(response, status_code=200)
def post(self, key): try: server_key = ndb.Key(urlsafe=key) server = server_key.get() if server is None or ON_SERVER: self.abort(404) file = self.request.POST['file'] import StringIO from models import LogLine buf = StringIO.StringIO(file.value) for raw_line in buf.readlines(): line = raw_line.decode('ISO-8859-2', errors='ignore') line = line.strip() existing_line = LogLine.lookup_line(server.key, line) if existing_line is None: log_line = LogLine.create(server, line, 'UTC') logging.info(log_line.line) except Exception, e: logging.error(u"Error POSTing server: {0}".format(e)) self.abort(404)
def get(self, server_key, key_username=None): server_key = self.get_server(server_key).key username = None if key_username: player = self.get_player_by_key_or_username(server_key, key_username) username = player.username since = self.request.form.since.data or None before = self.request.form.before.data or None q = self.request.form.q.data or None tag = self.request.form.tag.data or None if q: query_string = u"line:{0}".format(q) cursor = self.request.form.cursor.data or None results, next_cursor = LogLine.search_api( server_key, query_string, size=self.size, username=username, tag=tag, since=since, before=before, cursor=cursor ) response = {'loglines': results} if next_cursor is not None: results, _ = LogLine.search_api( server_key, query_string, size=self.size, username=username, tag=tag, since=since, before=before, cursor=next_cursor ) if results: response['cursor'] = next_cursor self.json_response(response, LOG_LINE_STRATEGY) else: query = LogLine.query_api(server_key, username=username, tag=tag, since=since, before=before) self.json_response(self.fetch_page(query, results_name='loglines'), LOG_LINE_STRATEGY)
def get(self, server_key=None): server = self.get_server_by_key(server_key, abort=False) if server is None: self.redirect_to_server('chats') return self.request.user.record_chat_view() query_string = self.request.get('q', None) # Search if query_string: page = 0 cursor = self.request.get('cursor', None) if cursor and cursor.startswith('PAGE_'): page = int(cursor.strip()[5:]) offset = page * RESULTS_PER_PAGE results, number_found, _ = search.search_log_lines( 'chat:{0}'.format(query_string), server_key=server.key, limit=RESULTS_PER_PAGE, offset=offset) previous_cursor = next_cursor = None if page > 0: previous_cursor = u'PAGE_{0}&q={1}'.format( page - 1 if page > 0 else 0, query_string) if number_found > offset + RESULTS_PER_PAGE: next_cursor = u'PAGE_{0}&q={1}'.format(page + 1, query_string) # Latest else: results, previous_cursor, next_cursor = self.get_results_with_cursors( LogLine.query_latest_events(server.key), LogLine.query_oldest_events(server.key), RESULTS_PER_PAGE) context = {'chats': results, 'query_string': query_string or ''} if self.request.is_xhr: self.render_xhr_response(server.key, context, next_cursor) else: self.render_html_response(server.key, context, next_cursor, previous_cursor)
def get(self, server_key=None): server = self.get_server_by_key(server_key, abort=False) if server is None: self.redirect_to_server('home') return # Get new chats new_chats_query = LogLine.query_latest_events(server.key) last_chat_view = self.request.user.last_chat_view if last_chat_view is not None: new_chats_query = new_chats_query.filter(LogLine.timestamp > last_chat_view) new_chats, chats_cursor, more = new_chats_query.fetch_page(20) if new_chats: self.request.user.record_chat_view(new_chats[0].timestamp) # Render with context context = { 'open_sessions': server.open_sessions, 'new_chats': new_chats, 'chats_cursor': chats_cursor } self.render_template('home.html', context=context)
def get(self): open_sessions_query = PlaySession.query_latest_open() # Get open sessions playing_usernames = [] open_sessions = [] for open_session in open_sessions_query: if open_session.username and open_session.username not in playing_usernames: playing_usernames.append(open_session.username) open_sessions.append(open_session) # Get new chats new_chats_query = LogLine.query_latest_chats() last_chat_view = self.request.user.last_chat_view if last_chat_view is not None: new_chats_query = new_chats_query.filter(LogLine.timestamp > last_chat_view) new_chats, chats_cursor, more = new_chats_query.fetch_page(20) if new_chats: self.request.user.record_chat_view(new_chats[0].timestamp) # Render with context context = {'open_sessions': open_sessions, 'new_chats': new_chats, 'chats_cursor': chats_cursor} self.render_template('home.html', context=context)
def get(self, server_key=None): server = self.get_server_by_key(server_key, abort=False) if server is None: self.redirect_to_server('home') return # Get new chats new_chats_query = LogLine.query_latest_events(server.key) last_chat_view = self.request.user.last_chat_view if last_chat_view is not None: new_chats_query = new_chats_query.filter( LogLine.timestamp > last_chat_view) new_chats, chats_cursor, more = new_chats_query.fetch_page(20) if new_chats: self.request.user.record_chat_view(new_chats[0].timestamp) # Render with context context = { 'open_sessions': server.open_sessions, 'new_chats': new_chats, 'chats_cursor': chats_cursor } self.render_template('home.html', context=context)
def GetRecentLogLines(nlast=10): ''' Return last nlast entries in access log ''' ret = LogLine.query().order(-LogLine.created).fetch(nlast) return ret