Esempio n. 1
0
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,'')
Esempio n. 2
0
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()
Esempio n. 3
0
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, "")
Esempio n. 4
0
    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')
Esempio n. 5
0
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()
Esempio n. 6
0
def addstaticdata():
    rolerows = Session.query(Role).all()
    for rolename in [ 'accountadmin', 'aiadmin', 'mapadmin', 'modadmin', 'leagueadmin', 'botrunneradmin', 'requestadmin', 'apiclient' ]:
        rolefound = False
        for rolerow in rolerows:
            if rolerow.role_name == rolename:
                rolefound = True
        if not rolefound:
            role = Role(rolename)
            Session.add(role)
            Session.flush()
Esempio n. 7
0
def setValue(key_name, key_value):
    global defaults

    if not defaults.has_key(key_name):
        raise Exception("confighelper.setvalue, no such key_name: " + key_name)

    configrow = Session.query(Config).filter(Config.config_key == key_name).first()
    if configrow == None:
        config = Config(key_name, key_value)
        Session.add(config)
    else:
        configrow.setValue(key_value)
Esempio n. 8
0
    def view(self, id):
        account = Session.query(Account).filter(
                Account.account_id == id).first()

        showform = roles.isInRole(roles.accountadmin)

        potentialroles = [i[0] for i in Session.query(Role.role_name)]
        for role in account.roles:
            potentialroles.remove(role.role_name)

        c.account = account
        c.showForm = showform
        return render('viewaccount.html')
Esempio n. 9
0
def logonUserWithAuthenticatedOpenID(openidurl):
    account = None
    # note: this could be optimized a little...
    for thisaccount in Session.query(Account):
        for openid in thisaccount.openids:
            if openid.openid == openidurl:
                account = thisaccount
    if account == None:
        # create new account
        account = Account(openidurl, openidurl)
        account.openids.append(OpenID(openidurl))
        Session.add(account)

    session['username'] = openidurl
Esempio n. 10
0
    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')
Esempio n. 11
0
    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")
Esempio n. 12
0
    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')
Esempio n. 13
0
    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")
Esempio n. 14
0
    def list(self):
        maps = Session.query(Map)
        showForm = roles.isInRole(roles.mapadmin)

        c.showForm = showForm
        c.maps = maps
        return render('viewmaps.html')
Esempio n. 15
0
    def list(self):
        mods = Session.query(Mod)
        showForm = roles.isInRole(roles.modadmin)

        c.showForm = showForm
        c.mods = mods
        return render("viewmods.html")
Esempio n. 16
0
    def requests(self):
        c.requests = Session.query(MatchRequest).filter(
                MatchRequest.matchresult == None)

        try:
            league_id = int(request.params['league'])
            c.requests = c.requests.filter(MatchRequest.league_id == league_id)
        except:
            pass

        page = 1
        try:
            page = int(request.params['page'])
        except:
            pass
        c.requests = paginate.Page(
            c.requests,
            page=page,
            items_per_page=20)

        c.datetimeassignedbyrequest = {}
        for req in c.requests:
            if req.matchrequestinprogress != None:
                c.datetimeassignedbyrequest[req] = \
                        req.matchrequestinprogress.datetimeassigned

        return render('viewrequests.html')
Esempio n. 17
0
    def results(self):
        c.requests = Session.query(MatchRequest).filter(
                MatchRequest.matchresult != None)

        try:
            league_id = int(request.params['league'])
            c.requests = c.requests.filter(MatchRequest.league_id == league_id)
        except:
            pass

        page = 1
        try:
            page = int(request.params['page'])
        except:
            pass
        c.requests = paginate.Page(
            c.requests,
            page=page,
            items_per_page=20)

        c.replayPaths = {}
        c.infologPaths = {}
        for req in c.requests:
            replayPath = replaycontroller.getReplayPath(req.matchrequest_id)
            if os.path.isfile(replayPath):
                c.replayPaths[req] = replaycontroller.getReplayWebRelativePath(
                        req.matchrequest_id)
            if os.path.isfile(
                    replaycontroller.getInfologPath(req.matchrequest_id)):
                c.infologPaths[req] = replaycontroller.\
                        getInfologWebRelativePath(req.matchrequest_id)

        return render('viewresults.html')
Esempio n. 18
0
    def list(self):
        ais = Session.query(AI)
        showForm = roles.isInRole(roles.aiadmin)

        c.ais = ais
        c.showForm = showForm
        return render("viewais.html")
Esempio n. 19
0
    def list(self):
        engines = Session.query(Engine)
        showForm = roles.isInRole(roles.modadmin)

        c.showForm = showForm
        c.engines = engines
        return render('viewengines.html')
Esempio n. 20
0
def getcompatibleitemfromqueue(botrunnername, sessionid):
    archiveoldrequests()

    botrunner = botrunnerhelper.getBotRunner( botrunnername )
    botrunnersession = botrunnerhelper.getBotRunnerSession( botrunnername, sessionid )
    # now we've archived the old requests, we just pick a request
    # in the future, we'll pick a compatible request.  In the future ;-)
    # also, we need to handle options.  In the future ;-)
    matchrequests = Session.query(MatchRequest).filter(MatchRequest.matchrequestinprogress == None).filter(MatchRequest.matchresult == None).all()
    for matchrequest in matchrequests:
        mapok = False
        modok = False
        ai0ok = False
        ai1ok = False
        for map in botrunner.supportedmaps:
            if map.map_name == matchrequest.map.map_name:
                mapok = True
        for mod in botrunner.supportedmods:
            if mod.mod_name == matchrequest.mod.mod_name:
                modok = True
        for ai in botrunner.supportedais:
            if ai.ai_base.ai_base_name == matchrequest.ai0.ai_base.ai_base_name and ai.ai_version == matchrequest.ai0.ai_version:
                ai0ok = True
            if ai.ai_base.ai_base_name == matchrequest.ai1.ai_base.ai_base_name and ai.ai_version == matchrequest.ai1.ai_version:
                ai1ok = True
        if mapok and modok and ai0ok and ai1ok:
            # mark request in progress:
            matchrequest.matchrequestinprogress = MatchRequestInProgress(botrunner, botrunnersession, datetime.datetime.now())

            return matchrequest

    # didn't find any compatible match
    return None
Esempio n. 21
0
 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')    
Esempio n. 22
0
    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')
Esempio n. 23
0
def purgeExpiredSessions():
    botrunners = Session.query(BotRunner)
    for botrunner in botrunners:
        for session in botrunner.sessions:
            if session.lastpingtime != None:
                secondssincelastping = dates.timedifftototalseconds(datetime.datetime.now() - session.lastpingtime)
                if secondssincelastping > confighelper.getValue("expiresessionminutes") * 60:
                    expireBotRunnerSession(botrunner, session)
Esempio n. 24
0
    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")
Esempio n. 25
0
    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')
Esempio n. 26
0
def validateUsernamePassword(username, password):
    account = Session.query(Account).filter(Account.username == username).first()
    if account == None:
        return False
    if account.passwordinfo == None:
        return False
    result = account.passwordinfo.checkPassword(password)
    return result
Esempio n. 27
0
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, "")
Esempio n. 28
0
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
Esempio n. 29
0
    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')
Esempio n. 30
0
    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")