def addmapifdoesntexist(mapname, maparchivechecksum): map = Session.query(Map).filter(Map.map_name == mapname).first() if map == None: try: map = Map(mapname) map.map_archivechecksum = maparchivechecksum Session.add(map) Session.commit() except: return (False, "error adding to db: " + str(sys.exc_value)) return (True, "") if map.map_archivechecksum == None: map.map_archivechecksum = maparchivechecksum try: Session.commit() return (True, "") except: return (False, "error updating db: " + str(sys.exc_value)) if map.map_archivechecksum != maparchivechecksum: return (False, "map archive checksum doesn't match the one already on the website.") return (True, "")
def setbotrunnernotsupportsthisai(botrunnername, ainame, aiversion): botrunner = botrunnerhelper.getBotRunner( botrunnername ) for ai in botrunner.supportedais: if ai.ai_base.ai_base_name == ainame and ai.ai_version == aiversion: botrunner.supportedais.remove( ai ) Session.commit() return (True,'')
def addLeagueMatches(league, matchRequestQueue, matchResults): ais = Session.query(AI).join(LeagueAI).filter(LeagueAI.league_id ==\ league.league_id).all() map = Session.query(Map).filter(Map.map_id == league.map_id).first() mod = Session.query(Mod).filter(Mod.mod_id == league.mod_id).first() playAgainstSelf = league.play_against_self if league.side_modes == "xvsy": sides = [int(i) for i in league.sides.split("vs")] else: sides = [int(league.sides)] matchRequests = [] for i, ai0 in enumerate(ais[:-1]): for j, ai1 in enumerate(ais[i:]): if not playAgainstSelf and ai0.ai_id == ai1.ai_id: continue first = Session.query(ModSide).filter(ModSide.mod_side_id == sides[0]).first() if len(sides) == 2: second = Session.query(ModSide).filter(ModSide.mod_side_id == sides[1]).first() allSides = [(first, second), (second, first)] else: allSides = [(first, first)] for firstSide, secondSide in allSides: for k in xrange(league.matches_per_ai_pair): matchRequest = MatchRequest(ai0, ai1, map, mod,\ league.speed, league.soft_timeout, league.hard_timeout,\ firstSide, secondSide, league.league_id) matchRequests.append(matchRequest) #save all matches to the database Session.add_all(matchRequests) Session.commit()
def storeresult( botrunnername, matchrequest_id, result ): # delete any existing result, saves doing check first... matchrequest = getmatchrequest( matchrequest_id ) if matchrequest == None: return matchrequest.matchresult = MatchResult( result ) Session.commit()
def setbotrunnersupportsthismap(botrunnername, mapname): # Now, register the map as supported map botrunner = botrunnerhelper.getBotRunner(botrunnername) for map in botrunner.supportedmaps: if map.map_name == mapname: return (True, "") map = getMap(mapname) botrunner.supportedmaps.append(map) Session.commit() return (True, "")
def add(self): botrunnerName = self.form_result["botrunnerName"] sharedSecret = self.form_result["sharedSecret"] botrunner = BotRunner(botrunnerName, sharedSecret) Session.add(botrunner) Session.commit() c.message = "Added ok" return render('genericmessage.html')
def remove(self, id): if not roles.isInRole(roles.modadmin): c.message = "You must be logged in as a modadmin, temporary!" return render('genericmessage.html') engine = Session.query(Engine).filter(Engine.engine_id == id).first() if engine == None: c.message = "No such engine" return render('genericmessage.html') Session.delete(engine) Session.commit() c.message = "Deleted ok" return render('genericmessage.html')
def remove(self, id): if not roles.isInRole(roles.modadmin): c.message = "You must be logged in as a modadmin" return render("genericmessage.html") mod = Session.query(Mod).filter(Mod.mod_id == id).first() if mod == None: c.message = "No such mod" return render("genericmessage.html") Session.delete(mod) Session.commit() c.message = "Deleted ok" return render("genericmessage.html")
def remove(self, id): if not roles.isInRole(roles.mapadmin): c.message = "You must be logged in as a mapadmin" return render('genericmessage.html') map = Session.query(Map).filter(Map.map_id == id).first() if map == None: c.message = "No such map" return render('genericmessage.html') Session.delete(map) Session.commit() c.message = "Deleted ok" return render('genericmessage.html')
def remove(self, id): if not roles.isInRole(roles.aiadmin): c.message = "You must be logged in as a aiadmin" return render("genericmessage.html") ai = Session.query(AI).filter(AI.ai_id == id).first() if ai == None: c.message = "No such ai" return render("genericmessage.html") Session.delete(ai) Session.commit() c.message = "Deleted ok" return render("genericmessage.html")
def remove(self, id): if not roles.isInRole(roles.leagueadmin): c.message = "You must be logged in as a leagueadmin" return render('genericmessage.html') league = Session.query(League).filter(League.league_id == id).first() if league == None: c.message = "No such league" return render('genericmessage.html') Session.query(LeagueAI).filter(LeagueAI.league_id == id).delete() Session.delete(league) Session.commit() c.message = "Deleted ok" return render('genericmessage.html')
def remove(self, id): if not roles.isInRole(roles.leagueadmin): c.message = "You must be logged in as a leagueadmin" return render('genericmessage.html') request = Session.query(MatchRequest).filter(MatchRequest.matchrequest_id == id).first() if request == None: c.message = "No such request" return render('genericmessage.html') Session.delete(request) Session.commit() c.message = "Deleted ok" return render('genericmessage.html')
def add(self): if not roles.isInRole(roles.modadmin): c.message = "You must be logged in as a modadmin. Sorry, temporary" return render('genericmessage.html') enginename = self.form_result["engineName"] enginearchivechecksum = self.form_result["engineArchiveChecksum"] engineurl = self.form_result["engineUrl"] engine = Engine(enginename) engine.engine_url = engineurl engine.engine_archivechecksum = enginearchivechecksum Session.add(engine) Session.commit() c.message = "Added ok" return render('genericmessage.html')
def add(self): if not roles.isInRole(roles.mapadmin): c.message = "You must be logged in as a mapadmin" return render('genericmessage.html') mapname = self.form_result["mapName"] maparchivechecksum = self.form_result["mapArchiveChecksum"] mapurl = self.form_result["mapUrl"] map = Map(mapname) map.map_url = mapurl map.map_archivechecksum = maparchivechecksum Session.add(map) Session.commit() c.message = "Added ok" return render('genericmessage.html')
def add(self): if not roles.isInRole(roles.modadmin): c.message = "You must be logged in as a modadmin" return render("genericmessage.html") modname = self.form_result["modName"] modarchivechecksum = self.form_result["modArchiveChecksum"] modurl = self.form_result["modUrl"] mod = Mod(modname) mod.mod_url = modurl mod.mod_archivechecksum = modarchivechecksum Session.add(mod) Session.commit() c.message = "Added ok" return render("genericmessage.html")
def add(self): if not roles.isInRole(roles.accountadmin): c.message = "You must be logged in as a accountadmin" return render('genericmessage.html') username = self.form_result['username'] userfullname = self.form_result['userfullname'] email = self.form_result['email'] password = self.form_result['password'] account = Account(username, userfullname) account.passwordinfo = PasswordInfo(password) account.email = email Session.add(account) Session.commit() c.message = "Added ok" return render('genericmessage.html')
def validatesharedsecret(lbotrunnername, sharedsecret): global botrunnername botrunner = getBotRunner(lbotrunnername) if botrunner == None: # Never seen this botrunner before, just add it botrunner = BotRunner(lbotrunnername, sharedsecret) Session.add(botrunner) Session.commit() # if this fails, return true anyway return True else: if botrunner.botrunner_sharedsecret == sharedsecret: botrunnername = lbotrunnername return True return False
def add(self): if not roles.isInRole(roles.aiadmin): c.message = "You must be logged in as aiadmin" return render("genericmessage.html") aiName = self.form_result["aiName"] aiVersion = self.form_result["aiVersion"] downloadUrl = self.form_result["downloadUrl"] needsCompiling = self.form_result["needsCompiling"] ai = AI(aiName, aiVersion) ai.ai_downloadurl = downloadUrl ai.ai_needscompiling = needsCompiling ai.owneraccount = accounthelper.getAccount(session["user"]) Session.add(ai) Session.commit() c.message = "Added ok" return render("genericmessage.html")
def addaiifdoesntexist(ainame, aiversion): ai = getAI(ainame, aiversion) if ai == None: ai_base = Session.query(AIBase).filter(AIBase.ai_base_name == ainame).first() if ai_base == None: ai_base = AIBase(ainame) Session.add(ai_base) Session.flush() ai_base_id = ai_base.ai_base_id try: ai = AI(ai_base_id, aiversion) Session.add(ai) Session.commit() except: print sys.exc_value return(False, "error adding to db: " + str(sys.exc_value)) return (True,'')
def submit(self): map = Session.query(Map).filter(Map.map_name == self.form_result['mapname']).first() mod = Session.query(Mod).filter(Mod.mod_name == self.form_result['modname']).first() ai0 = Session.query(AI).filter(AI.ai_id == self.form_result['ai0']).first() ai1 = Session.query(AI).filter(AI.ai_id == self.form_result['ai1']).first() ai0side = Session.query(ModSide).filter(ModSide.mod_side_id == self.form_result['ai0side']).first() ai1side = Session.query(ModSide).filter(ModSide.mod_side_id == self.form_result['ai1side']).first() matchrequest = MatchRequest(ai0 = ai0, ai1 = ai1, map = map, mod = mod, speed = self.form_result['speed'], softtimeout = self.form_result['softtimeout'], hardtimeout = self.form_result['hardtimeout'], ai0_side=ai0side, ai1_side=ai1side) Session.add(matchrequest) Session.commit() return "Submitted ok."
def list(self): #FIXME: this should not be a part of a controller request botrunnerhelper.purgeExpiredSessions() Session.commit() botrunners = Session.query(BotRunner) # if you know of a reliable way of just adding #the following two data to the business ojbects, # go ahead: botrunnerdata = {} sessiondata = {} for botrunner in botrunners: rowspan = 1 if len(botrunner.sessions) > 1: rowspan = len(botrunner.sessions) botrunnerdata[botrunner] = {} botrunnerdata[botrunner]['rowspan'] = rowspan for botSession in botrunner.sessions: sessiondata[botSession] = {} sessiondata[botSession]['pingtimestatus'] = 'down' if botSession.lastpingtime != None: secondssincelastping = dates.timedifftototalseconds( datetime.datetime.now() - botSession.lastpingtime) sessiondata[botSession]['lastpingtimestring'] =\ str(botSession.lastpingtime) if secondssincelastping < \ confighelper.getValue('expiresessionminutes') * 60: sessiondata[botSession]['pingtimestatus'] = 'maybeok' if secondssincelastping < confighelper.getValue( 'guimarksessionasmaybedownafterthismanyminutes') \ * 60: sessiondata[botSession]['pingtimestatus'] = 'ok' c.botrunners = botrunners c.isIsLoggedIn = False if 'user' in session: c.isLoggedIn = True c.username = session['user'] c.botrunnerData = botrunnerdata c.sessionData = sessiondata return render('viewbotrunners.html')
def update(self, id): if not roles.isInRole(roles.modadmin): c.message = "You must be logged in as a modadmin" return render("genericmessage.html") modName = self.form_result["modName"] modArchiveChecksum = self.form_result["modArchiveChecksum"] modUrl = self.form_result["modUrl"] mod = Session.query(Mod).filter(Mod.mod_id == id).first() if mod == None: c.message = "No such mod" return render("genericmessage.html") mod.mod_name = modName mod.mod_url = modUrl mod.mod_archivechecksum = modArchiveChecksum Session.commit() c.message = "Updated ok" return render("genericmessage.html")
def update(self, id): if not roles.isInRole(roles.modadmin): c.message = "You must be logged in as a modadmin" return render('genericmessage.html') engineName = self.form_result['engineName'] engineArchiveChecksum = self.form_result["engineArchiveChecksum"] engineUrl = self.form_result["engineUrl"] engine = Session.query(Engine).filter(Engine.engine_id == id).first() if engine == None: c.message = "No such engine" return render('genericmessage.html') engine.engine_name = engineName engine.engine_url = engineUrl engine.engine_archivechecksum = engineArchiveChecksum Session.commit() c.message = "Updated ok" return render('genericmessage.html')
def update(self, id): if not roles.isInRole(roles.leagueadmin): c.message = "You must be logged in as a leagueadmin" return render('genericmessage.html') leagueName = self.form_result['leagueName'] leagueArchiveChecksum = self.form_result["leagueArchiveChecksum"] leagueUrl = self.form_result["leagueUrl"] league = Session.query(League).filter(League.league_id == id).first() if league == None: c.message = "No such league" return render('genericmessage.html') league.league_name = leagueName league.league_url = leagueUrl league.league_archivechecksum = leagueArchiveChecksum Session.commit() c.message = "Updated ok" return render('genericmessage.html')
def update(self, id): if not roles.isInRole(roles.mapadmin): c.message = "You must be logged in as a mapadmin" return render('genericmessage.html') mapName = self.form_result['mapName'] mapArchiveChecksum = self.form_result["mapArchiveChecksum"] mapUrl = self.form_result["mapUrl"] map = Session.query(Map).filter(Map.map_id == id).first() if map == None: c.message = "No such map" return render('genericmessage.html') map.map_name = mapName map.map_url = mapUrl map.map_archivechecksum = mapArchiveChecksum Session.commit() c.message = "Updated ok" return render('genericmessage.html')
def update(self, id): if not roles.isInRole(roles.accountadmin): c.message = "You must be logged in as a accountadmin" return render('genericmessage.html') accountName = self.form_result['accountName'] accountArchiveChecksum = self.form_result["accountArchiveChecksum"] accountUrl = self.form_result["accountUrl"] account = Session.query(Account).filter( Account.account_id == id).first() if account == None: c.message = "No such account" return render('genericmessage.html') account.account_name = accountName account.account_url = accountUrl account.account_archivechecksum = accountArchiveChecksum Session.commit() c.message = "Updated ok" return render('genericmessage.html')
def add(self): if not roles.isInRole(roles.leagueadmin): c.message = "You must be logged in as a leagueadmin" return render('genericmessage.html') leagueName = self.form_result["leagueName"] modId = self.form_result["modId"] mapId = self.form_result["mapId"] speed = self.form_result["speed"] softtimeout = self.form_result["softtimeout"] hardtimeout = self.form_result["hardtimeout"] nummatchesperaipair = self.form_result["nummatchesperaipair"] sides = self.form_result["sides"] sidemodes = self.form_result["sidemodes"] playagainstself = self.form_result["playagainstself"] account = Session.query(Account).filter(Account.username == session['user']).first() ais = [] for i in range(Session.query(AI).count()): ai_i = 'ai_checkbox_' + str(i) if (self.form_result.has_key(ai_i)): ais.append(i) league = League(leagueName, account, modId, mapId, nummatchesperaipair, speed, softtimeout, hardtimeout, sides, sidemodes, playagainstself) leagueais = [LeagueAI(ai, league) for ai in ais] Session.add(league) Session.add_all(leagueais) matchrequests = Session.query(MatchRequest).filter(MatchRequest.league_id ==\ league.league_id) matchresults = [req for req in matchrequests if req.matchresult != None] matchscheduler.addLeagueMatches(league, matchrequests, matchresults) Session.flush() Session.commit() redirect(url(controller='league', action='view', id=league.league_id))
def update(self, id): if not roles.isInRole(roles.aiadmin): c.message = "You must be logged in as a aiadmin" return render("genericmessage.html") aiName = self.form_result["aiName"] aiVersion = self.form_result["aiVersion"] downloadUrl = self.form_result["downloadUrl"] needsCompiling = self.form_result["needsCompiling"] ai = Session.query(AI).filter(AI.ai_id == id).first() if ai == None: c.message = "No such ai" return render("genericmessage.html") ai.ai_name = aiName ai.ai_version = aiVersion ai.ai_downloadurl = downloadUrl ai.ai_needscompiling = needsCompiling Session.commit() c.message = "Updated ok" return render("genericmessage.html")
def remove(self, id): if not roles.isInRole(roles.accountadmin): c.message = "You must be logged in as a accountadmin" return render('genericmessage.html') account = Session.query(Account).filter( Account.account_id == id).first() if account == None: c.message = "No such account" return render('genericmessage.html') if roles.isInRole2(account.username, roles.accountadmin): c.message = "Please drop the accountadmin role from " return render('genericmessage.html') if account.passwordinfo != None: Session.delete(account.passwordinfo) for openid in account.openids: Session.delete(openid) Session.delete(account) Session.commit() c.message = "Deleted ok" return render('genericmessage.html')
def changePassword(username, password): account = Session.query(Account).filter(Account.username == username).first() account.passwordinfo.changePassword(password) Session.commit() return True