Пример #1
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, "")
Пример #2
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,'')
Пример #3
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()
Пример #4
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()
Пример #5
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, "")
Пример #6
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')
Пример #7
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')
Пример #8
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")
Пример #9
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')
Пример #10
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")
Пример #11
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')

        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')
Пример #12
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')    
Пример #13
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')
Пример #14
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')
Пример #15
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")
Пример #16
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')
Пример #17
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
Пример #18
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")
Пример #19
0
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,'')
Пример #20
0
    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."
Пример #21
0
    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')
Пример #22
0
    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")
Пример #23
0
    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')
Пример #24
0
    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')
Пример #25
0
    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')
Пример #26
0
    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')
Пример #27
0
    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))
Пример #28
0
    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")
Пример #29
0
    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')
Пример #30
0
def changePassword(username, password):
    account = Session.query(Account).filter(Account.username == username).first()
    account.passwordinfo.changePassword(password)
    Session.commit()
    return True