def chat(chat=None): if chat is None: chat_meta = { 'type': 'unsaved' } existing_lines = [] latest_num = -1 else: if g.redis.zrank('ip-bans', chat+'/'+request.environ['HTTP_X_REAL_IP']) is not None: chat = OUBLIETTE_ID # Check if chat exists chat_meta = g.redis.hgetall('chat.'+chat+'.meta') # Convert topic to unicode. if 'topic' in chat_meta.keys(): chat_meta['topic'] = unicode(chat_meta['topic'], encoding='utf8') if len(chat_meta)==0: # XXX CREATE abort(404) # Load chat-based session data. g.user.set_chat(chat) existing_lines = [parse_line(line, 0) for line in g.redis.lrange('chat.'+chat, 0, -1)] latest_num = len(existing_lines)-1 return render_template( 'chat.html', user=g.user, character_dict=g.user.json_info(), case_options=CASE_OPTIONS, groups=CHARACTER_GROUPS, characters=CHARACTERS, chat=chat, chat_meta=chat_meta, lines=existing_lines, latest_num=latest_num )
def view_log(chat=None): try: log = g.mysql.query(Log).filter(Log.url == chat).one() except NoResultFound: abort(404) current_page = request.args.get('page') or log.page_count mode = request.args.get('mode') or 'normal' try: log_page = g.mysql.query(LogPage).filter( and_(LogPage.log_id == log.id, LogPage.number == current_page)).one() except NoResultFound: abort(404) url_generator = paginate.PageURL(url_for('view_log', chat=chat), {'page': current_page}) # It's only one row per page and we want to fetch them via both log id and # page number rather than slicing, so we'll just give it an empty list and # override the count. paginator = paginate.Page([], page=current_page, items_per_page=1, item_count=log.page_count, url=url_generator) # Pages end with a line break, so the last line is blank. lines = log_page.content.split('\n')[0:-1] lines = filter(lambda x: x is not None, map(lambda _: parse_line(_, 0), lines)) for line in lines: line['datetime'] = datetime.datetime.fromtimestamp(line['timestamp']) return render_template( 'log.html', chat=chat, lines=lines, current_page=current_page, mode=mode, paginator=paginator, )
def chat(chat=None): if chat is None: chat_meta = { 'type': 'unsaved' } existing_lines = [] latest_num = -1 else: if g.redis.hexists("global-bans", request.headers['CF-Connecting-IP']): return redirect("http://erigam.tk/") if g.redis.zrank('ip-bans', chat+'/'+request.headers['CF-Connecting-IP']) is not None: return redirect("http://help.msparp.com/kb/faq.php?id=21") # Check if chat exists chat_meta = g.redis.hgetall('chat.'+chat+'.meta') # Convert topic to unicode. if 'topic' in chat_meta.keys(): chat_meta['topic'] = unicode(chat_meta['topic'], encoding='utf8') if len(chat_meta)==0: # XXX CREATE abort(404) # Load chat-based session data. g.user.set_chat(chat) existing_lines = [parse_line(line, 0) for line in g.redis.lrange('chat.'+chat, 0, -1)] latest_num = len(existing_lines)-1 # *music* DUCT TAPE... if g.user.meta['counter'] == "Redis is loading the dataset in memory": abort(500) return render_template( 'chat.html', user=g.user, character_dict=g.user.json_info(), case_options=CASE_OPTIONS, groups=CHARACTER_GROUPS, characters=CHARACTERS, chat=chat, chat_meta=chat_meta, lines=existing_lines, latest_num=latest_num, chat_links=g.redis.get('chat_links'), )
def view_log(chat=None): # Decide whether or not to put a continue link in. continuable = g.redis.hget('chat.'+chat+'.meta', 'type') is not None try: log = g.mysql.query(Log).filter(Log.url==chat).one() except: abort(404) current_page = request.args.get('page') or log.page_count mode = request.args.get('mode') or 'normal' try: log_page = g.mysql.query(LogPage).filter(and_(LogPage.log_id==log.id, LogPage.number==current_page)).one() except NoResultFound: abort(404) url_generator = paginate.PageURL(url_for('view_log', chat=chat), {'page': current_page}) # It's only one row per page and we want to fetch them via both log id and # page number rather than slicing, so we'll just give it an empty list and # override the count. paginator = paginate.Page([], page=current_page, items_per_page=1, item_count=log.page_count, url=url_generator) # Pages end with a line break, so the last line is blank. lines = log_page.content.split('\n')[0:-1] lines = map(lambda _: parse_line(_, 0), lines) for line in lines: line['datetime'] = datetime.datetime.fromtimestamp(line['timestamp']) return render_template('log.html', chat=chat, lines=lines, continuable=continuable, current_page=current_page, mode=mode, paginator=paginator )
brokenChats = set() fixedLines = 0 fixedCounters = 0 a = redis.keys("chat.*.meta") for x in a: split = x.split(".") chats.add(split[1]) pbar = ProgressBar(widgets=[Percentage(), Bar()], maxval=len(chats)).start() i = 0 for chat in chats: i += 1 for line in redis.lrange('chat.'+chat, 0, -1): try: l = parse_line(line, 0) except ValueError: brokenChats.add(chat) fixedLines += 1 redis.lrem('chat.' + chat, line, 0) for counter in redis.hgetall('chat.' + chat + '.counters'): if counter.isdigit(): pass else: fixedCounters += 1 cookie = redis.hget('chat.' + chat + '.counters',counter) #print cookie redis.hdel('chat.'+chat+'.counters',counter) redis.delete('session.' + cookie + '.chat.' + chat) redis.delete('session.' + cookie + '.meta.' + chat) pbar.update(i)
brokenChats = set() fixedLines = 0 fixedCounters = 0 a = redis.keys("chat.*.meta") for x in a: split = x.split(".") chats.add(split[1]) pbar = ProgressBar(widgets=[Percentage(), Bar()], maxval=len(chats)).start() i = 0 for chat in chats: i += 1 for line in redis.lrange('chat.' + chat, 0, -1): try: l = parse_line(line, 0) except ValueError: brokenChats.add(chat) fixedLines += 1 redis.lrem('chat.' + chat, line, 0) for counter in redis.hgetall('chat.' + chat + '.counters'): if counter.isdigit(): pass else: fixedCounters += 1 cookie = redis.hget('chat.' + chat + '.counters', counter) #print cookie redis.hdel('chat.' + chat + '.counters', counter) redis.delete('session.' + cookie + '.chat.' + chat) redis.delete('session.' + cookie + '.meta.' + chat) pbar.update(i)