def leaderboards_map(map, page=1): if map: stats_page = DBScore.query.filter_by( id=DBMap.get_id_for_game_map(map)).order_by( DBScore.tick_time * DBScore.tick_rate).paginate(page) if stats_page is not None: for stat in stats_page.items: try: stat.timeconverted = float( stat.tick_time) * time_convert[str(stat.tick_rate)] stat.timeconverted = str( datetime.timedelta(seconds=stat.timeconverted)) if "." in stat.timeconverted: stat.timeconverted = stat.timeconverted[:-4] except: print 'Exception caught on leaderboards main page while trying to query it.' continue return render_template('leaderboards/index.html', stats_page=stats_page, map=map, qtype='map') else: flash('No runs recorded for ' + str(map)) return redirect(url_for('leaderboards_main', page=page)) else: flash('An error ocurred when trying to access runs for ' + str(map)) return redirect(url_for('leaderboards_main', page=page))
def leaderboars_me_friendsruns(map=None, page=1,): try: idlist = current_user.get_friendslist() if idlist is not None: stats_page = DBScore.query.filter(DBScore.steamid.in_(idlist)) if map is not None: stats_page = stats_page.filter_by(id=DBMap.get_id_for_game_map(map)) stats_page = stats_page.order_by(DBScore.tick_time * DBScore.tick_rate).order_by(DBScore.mapid).paginate(page) if stats_page is not None: for stat in stats_page.items: try: stat.timeconverted = float(stat.tick_time) * time_convert[str(stat.tick_rate)] stat.timeconverted = str(datetime.timedelta(seconds=stat.timeconverted)) if "." in stat.timeconverted: stat.timeconverted = stat.timeconverted[:-4] except: print 'Exception caught on leaderboards main page while trying to query it.' continue return render_template('leaderboards/index.html', stats_page=stats_page, map=map, qtype='myfriends') else: flash('No runs friend runs recorded') return redirect(url_for('leaderboards_main')) else: flash('You need some friends first :)') return redirect(url_for('leaderboards_main')) except: flash('An error ocurred when trying to access runs for ' + str(current_user.steamid)) return redirect(url_for('leaderboards_main'))
def leaderboards_player(steamid,map=None,page=1): try: info = get_steam_userinfo(steamid) if info is not None: stats_page = DBScore.query.filter_by(steamid=steamid) if map is not None: stats_page = stats_page.filter_by(id=DBMap.get_id_for_game_map(map)) stats_page = stats_page.order_by(DBScore.tick_time * DBScore.tick_rate).paginate(page) if stats_page is not None: for stat in stats_page.items: try: stat.timeconverted = float(stat.tick_time) * time_convert[str(stat.tick_rate)] stat.timeconverted = str(datetime.timedelta(seconds=stat.timeconverted)) if "." in stat.timeconverted: stat.timeconverted = stat.timeconverted[:-4] except: print 'Exception caught on leaderboards main page while trying to query it.' continue return render_template('leaderboards/index.html', stats_page=stats_page, pinfo=info,map=map, qtype='player') else: flash('No runs recorded for ' + str(steamid)) return redirect(url_for('leaderboards_main')) else: flash('Wrong steamid') return redirect(url_for('leaderboards_main')) except: flash('An error ocurred when trying to access runs for ' + str(steamid)) return redirect(url_for('leaderboards_main'))
def dashboard_maps(): if request.method == 'GET': mform = MapsForm() return render_template('dashboard/maps.html', destination='maps', form=mform, editing=False) else: mfrom = MapsForm() try: mfrom.mapname.data = request.form.get('mapname') mfrom.filepath.data = request.form.get('filepath') mfrom.thumbnail.data = request.form.get('thumbnail') mfrom.difficulty.data = request.form.get('difficulty') mfrom.stages.data = request.form.get('stages') if mfrom.validate(): if DBMap.query.filter_by(stylized_mapname=str( request.form.get('mapname'))).count() != 0: flash('There is already a map called ' + str(request.form.get('mapname')) + '.') else: mapfile = os.path.basename(mfrom.filepath.data) thumbnail = mfrom.thumbnail.data if mapfile.endswith('.bsp') and thumbnail.endswith('.jpg'): gamemode = -1 if mapfile.startswith('bhop_'): gamemode = 2 elif mapfile.startswith('surf_'): gamemode = 1 else: gamemode = 3 if thumbnail is not None and imagevalidation_soft( thumbnail): mapo = DBMap( os.path.splitext(mapfile)[0], mfrom.mapname.data, mfrom.filepath.data, mfrom.thumbnail.data, gamemode, mfrom.difficulty.data, mfrom.stages.data) db.session.add(mapo) db.session.commit() flash('Map ' + str(mapo.game_map) + ' added successfully.') else: flash('Could not fetch thumbnail ' + str(thumbnail) + str(thumbnailcode) + '. Check the path to the image') else: flash('Check file extensions.') else: flash('Form could not be validated. Check the errors') except: flash('Error while querying.') return render_template('dashboard/maps.html', destination='maps', form=mfrom, editing=False)
def api_post_score(steamid, map, ticks, tickrate): response = {} if str(tickrate) not in time_convert: response['result'] = 'false' response['status'] = 'error' response['message'] = '#MOM_WebMsg_RunNotSaved_WrongTickrate' response['PBdiff'] = None return jsonify(json_list=[response]) else: try: # takes 64-bit steamid mapid = DBMap.get_id_for_game_map(map) if mapid == -1: response['result'] = 'false' response['status'] = 'MissingMap' response['message'] = '#MOM_WebMsg_RunNotSaved_MapNotFound' response['PBdiff'] = None return jsonify(json_list=[response]) personalbest = DBScore.query.filter_by(steamid=steamid).filter_by( mapid=mapid).order_by(DBScore.tick_time * DBScore.tick_rate).first() if personalbest is not None: if personalbest.tick_time * personalbest.tick_rate > tickrate * ticks: response['message'] = '#MOM_WebMsg_RunSaved_NewPB' else: response['message'] = '#MOM_WebMsg_RunSaved' response['PBdiff'] = float( (time_convert[str(tickrate)] * ticks) - (personalbest.tick_time * time_convert[str(personalbest.tick_rate)])) else: response['message'] = '#MOM_WebMsg_FirstRunSaved' response['PBdiff'] = None score = DBScore(steamid, mapid, ticks, tickrate, 0) db.session.add(score) db.session.commit() response['result'] = 'true' response['status'] = 'submitted' except OperationalError as e: response['result'] = 'false' response['status'] = 'error' response[ 'message'] = '#MOM_WebMsg_RunNotSaved_InternalServerErrors' response['PBdiff'] = None return jsonify(json_list=[response])
def leaderboars_me_friendsruns( map=None, page=1, ): try: idlist = current_user.get_friendslist() if idlist is not None: stats_page = DBScore.query.filter(DBScore.steamid.in_(idlist)) if map is not None: stats_page = stats_page.filter_by( id=DBMap.get_id_for_game_map(map)) stats_page = stats_page.order_by(DBScore.tick_time * DBScore.tick_rate).order_by( DBScore.mapid).paginate(page) if stats_page is not None: for stat in stats_page.items: try: stat.timeconverted = float( stat.tick_time) * time_convert[str(stat.tick_rate)] stat.timeconverted = str( datetime.timedelta(seconds=stat.timeconverted)) if "." in stat.timeconverted: stat.timeconverted = stat.timeconverted[:-4] except: print 'Exception caught on leaderboards main page while trying to query it.' continue return render_template('leaderboards/index.html', stats_page=stats_page, map=map, qtype='myfriends') else: flash('No runs friend runs recorded') return redirect(url_for('leaderboards_main')) else: flash('You need some friends first :)') return redirect(url_for('leaderboards_main')) except: flash('An error ocurred when trying to access runs for ' + str(current_user.steamid)) return redirect(url_for('leaderboards_main'))
def api_post_score(steamid, map, ticks, tickrate): response = {} if str(tickrate) not in time_convert: response['result'] = 'false' response['status'] = 'error' response['message'] = '#MOM_WebMsg_RunNotSaved_WrongTickrate' response['PBdiff'] = None return jsonify(json_list=[response]) else: try: # takes 64-bit steamid mapid = DBMap.get_id_for_game_map(map) if mapid == -1: response['result'] = 'false' response['status'] = 'MissingMap' response['message'] = '#MOM_WebMsg_RunNotSaved_MapNotFound' response['PBdiff'] = None return jsonify(json_list=[response]) personalbest = DBScore.query.filter_by(steamid=steamid).filter_by(mapid=mapid).order_by(DBScore.tick_time * DBScore.tick_rate).first() if personalbest is not None: if personalbest.tick_time * personalbest.tick_rate > tickrate * ticks: response['message'] = '#MOM_WebMsg_RunSaved_NewPB' else: response['message'] = '#MOM_WebMsg_RunSaved' response['PBdiff'] = float((time_convert[str(tickrate)] * ticks) - (personalbest.tick_time * time_convert[str(personalbest.tick_rate)])) else: response['message'] = '#MOM_WebMsg_FirstRunSaved' response['PBdiff'] = None score = DBScore(steamid, mapid, ticks, tickrate, 0) db.session.add(score) db.session.commit() response['result'] = 'true' response['status'] = 'submitted' except OperationalError as e: response['result'] = 'false' response['status'] = 'error' response['message'] = '#MOM_WebMsg_RunNotSaved_InternalServerErrors' response['PBdiff'] = None return jsonify(json_list=[response])