def deletekill(self, kid): try: eid = Kill.get(kid).event.id except SQLObjectNotFound: flash("Error: you tried to delete a kill that doesn't exist!") raise redirect(url("/news")) Kill.delete(kid) self.updatescores() flash("Kill removed!") raise redirect(url("/editevent/" + str(eid)))
def deletekill(self,kid): try: eid=Kill.get(kid).event.id except SQLObjectNotFound: flash("Error: you tried to delete a kill that doesn't exist!") raise redirect(url("/news")) Kill.delete(kid) self.updatescores() flash("Kill removed!") raise redirect(url("/editevent/"+str(eid)))
def saveinnocentkill(self,eid,killer,licit): try: k=InnocentKill(event=Event.get(eid),killer=User.by_user_name(killer),licit=licit) self.updatescores() flash("Innocent Kill added!") for l in Kill.select(): if((l.victim == k.killer) and l.event.datetime < k.event.datetime and l.event.datetime >= (k.event.datetime - datetime.timedelta(0,14400))): flash("Warning: %s is listed as being killed in the event %s, which was less than four hours before this event."%(l.victim.user_name,str(l.event))) raise redirect(url("/editevent/"+str(eid))) except SQLObjectNotFound: flash("Error: Tried to add an innocent kill to a nonexistent event.") raise redirect(url("/news"))
def savekill(self, eid, killer, victim): try: for k in Event.get(eid).kills: if (k.victim == User.by_user_name(victim)): flash( "Error: %s is already marked as being killed in this event, by %s. If they didn't kill %s, delete that kill first." % (victim, k.killer, victim)) raise redirect(url("/editevent/" + str(eid))) k = Kill(event=Event.get(eid), killer=User.by_user_name(killer), victim=User.by_user_name(victim)) self.updatescores() flash("Kill added!") for l in Kill.select(): if (l.id != k.id): if ((l.victim == k.victim or l.victim == k.killer) and l.event.datetime < k.event.datetime and l.event.datetime >= (k.event.datetime - datetime.timedelta(0, 14400))): flash( "Warning: %s is listed as being killed in the event %s, which was less than four hours before this event." % (l.victim.user_name, str(l.event))) if (l.victim == k.victim and k.event.datetime <= l.event.datetime and k.event.datetime >= (l.event.datetime - datetime.timedelta(0, 14400))): flash( "Warning: %s is listed as dying again in the event %s, which is less than four hours after this event." % (k.victim.user_name, str(l.event))) if (l.killer == k.victim and k.event.datetime < l.event.datetime and k.event.datetime >= (l.event.datetime - datetime.timedelta(0, 14400))): flash( "Warning: %s is listed as killing someone else in the event %s, which is less than four hours after this event." % (k.victim.user_name, str(l.event))) raise redirect(url("/editevent/" + str(eid))) except SQLObjectNotFound: flash("Error: Tried to add a kill to a nonexistent event.") raise redirect(url("/news"))
def updatescores(self): glicko={} innocent_vector=[0,1,2,4,6,9,13,17,23] for u in User.select(): glicko[u.user_name]=(1500,350,0.06) kills=Kill.select() gamestart=datetime.datetime(2008,6,13,17,0,0) for i in range(42): glicko = glickostep( glicko, [x for x in kills if x.event.datetime >= gamestart + datetime.timedelta(i*14400) and x.event.datetime < gamestart + datetime.timedelta((i+1)*14400)]) for u in glicko: p=User.by_user_name(u) i = 0 for ik in InnocentKill.select(): if(ik.killer==p and not ik.licit): i +=1 p.score=glicko[u][0]-glicko[u][1]+p.adjustment - 35 * innocent_vector[min(i,8)] return
def saveinnocentkill(self, eid, killer, licit): try: k = InnocentKill(event=Event.get(eid), killer=User.by_user_name(killer), licit=licit) self.updatescores() flash("Innocent Kill added!") for l in Kill.select(): if ((l.victim == k.killer) and l.event.datetime < k.event.datetime and l.event.datetime >= (k.event.datetime - datetime.timedelta(0, 14400))): flash( "Warning: %s is listed as being killed in the event %s, which was less than four hours before this event." % (l.victim.user_name, str(l.event))) raise redirect(url("/editevent/" + str(eid))) except SQLObjectNotFound: flash( "Error: Tried to add an innocent kill to a nonexistent event.") raise redirect(url("/news"))
def savekill(self,eid,killer,victim): try: for k in Event.get(eid).kills: if(k.victim==User.by_user_name(victim)): flash("Error: %s is already marked as being killed in this event, by %s. If they didn't kill %s, delete that kill first."%(victim,k.killer,victim)) raise redirect(url("/editevent/"+str(eid))) k=Kill(event=Event.get(eid),killer=User.by_user_name(killer),victim=User.by_user_name(victim)) self.updatescores() flash("Kill added!") for l in Kill.select(): if(l.id!=k.id): if((l.victim == k.victim or l.victim==k.killer) and l.event.datetime < k.event.datetime and l.event.datetime >= (k.event.datetime - datetime.timedelta(0,14400))): flash("Warning: %s is listed as being killed in the event %s, which was less than four hours before this event."%(l.victim.user_name,str(l.event))) if(l.victim == k.victim and k.event.datetime <= l.event.datetime and k.event.datetime >= (l.event.datetime - datetime.timedelta(0,14400))): flash("Warning: %s is listed as dying again in the event %s, which is less than four hours after this event."%(k.victim.user_name,str(l.event))) if(l.killer == k.victim and k.event.datetime < l.event.datetime and k.event.datetime >= (l.event.datetime - datetime.timedelta(0,14400))): flash("Warning: %s is listed as killing someone else in the event %s, which is less than four hours after this event."%(k.victim.user_name,str(l.event))) raise redirect(url("/editevent/"+str(eid))) except SQLObjectNotFound: flash("Error: Tried to add a kill to a nonexistent event.") raise redirect(url("/news"))
def updatescores(self): glicko = {} innocent_vector = [0, 1, 2, 4, 6, 9, 13, 17, 23] for u in User.select(): glicko[u.user_name] = (1500, 350, 0.06) kills = Kill.select() gamestart = datetime.datetime(2008, 6, 13, 17, 0, 0) for i in range(42): glicko = glickostep(glicko, [ x for x in kills if x.event.datetime >= gamestart + datetime.timedelta(i * 14400) and x.event.datetime < gamestart + datetime.timedelta((i + 1) * 14400) ]) for u in glicko: p = User.by_user_name(u) i = 0 for ik in InnocentKill.select(): if (ik.killer == p and not ik.licit): i += 1 p.score = glicko[u][0] - glicko[u][ 1] + p.adjustment - 35 * innocent_vector[min(i, 8)] return