Beispiel #1
0
    def saveparticipant(self,new,eid,player,pseudonym="",id=0,submit=""):
         if(new):
	     try:
	         for q in Event.get(eid).participants:
	             if(q.player.user_name==player):
		         flash("Error: %s is already a participant in this event"%player)
		         raise redirect(url("/editevent/"+str(eid)))
	         p=Participant(event=Event.get(eid),player=User.by_user_name(player),pseudonym=Pseudonym.byName(player))
             except SQLObjectNotFound:
	         flash("Error: Tried to add a participant to a nonexistent event")
		 raise redirect(url("/news"))
	 else:
	     try:
	         p=Participant.get(id)
             except SQLObjectNotFound:
	         flash("Error: Tried to edit a nonexistent participant")
		 raise redirect(url("/news"))
	     try:
	         p.player=User.by_user_name(player)
  	         p.pseudonym=Pseudonym.byName(pseudonym)
	     except SQLObjectNotFound:
	         flash("Error: Tried to change pseudonym to one that doesn't exist, or change pseudonym for a player that doesn't exist")
		 raise redirect(url("/news"))
	 flash("Participant updated!")
	 raise redirect(url("/editevent/"+str(eid)))
Beispiel #2
0
 def saveparticipant(self, new, eid, player, pseudonym="", id=0, submit=""):
     if (new):
         try:
             for q in Event.get(eid).participants:
                 if (q.player.user_name == player):
                     flash(
                         "Error: %s is already a participant in this event"
                         % player)
                     raise redirect(url("/editevent/" + str(eid)))
             p = Participant(event=Event.get(eid),
                             player=User.by_user_name(player),
                             pseudonym=Pseudonym.byName(player))
         except SQLObjectNotFound:
             flash(
                 "Error: Tried to add a participant to a nonexistent event")
             raise redirect(url("/news"))
     else:
         try:
             p = Participant.get(id)
         except SQLObjectNotFound:
             flash("Error: Tried to edit a nonexistent participant")
             raise redirect(url("/news"))
         try:
             p.player = User.by_user_name(player)
             p.pseudonym = Pseudonym.byName(pseudonym)
         except SQLObjectNotFound:
             flash(
                 "Error: Tried to change pseudonym to one that doesn't exist, or change pseudonym for a player that doesn't exist"
             )
             raise redirect(url("/news"))
     flash("Participant updated!")
     raise redirect(url("/editevent/" + str(eid)))
Beispiel #3
0
 def savereport(self, new, eid, player, text, id=0):
     if (new):
         try:
             r = Report(speaker=User.by_user_name(player),
                        event=Event.get(eid),
                        content=text)
         except SQLObjectNotFound:
             flash(
                 "Error: Tried to add report by a nonexistent player, or to a nonexistent event"
             )
             raise redirect(url("/news"))
     else:
         try:
             r = Report.get(id)
             r.content = text
             #nothing else really should be being edited, but will update it all for future compatibility
             r.speaker = User.by_user_name(player)
             r.event = Event.get(eid)
         except SQLObjectNotFound:
             flash(
                 "Error: Tried to edit a nonexistent report, or a report for a nonexistent event, or write a report as a nonexistent player."
             )
             raise redirect(url("/news"))
     flash("Report updated!")
     raise redirect(url("/news"))
Beispiel #4
0
    def saveuser(self,oldname,name,address,college,water,notes,password,email,adjustment):
        if(oldname):
		try:
			u=User.by_user_name(oldname)
		except SQLObjectNotFound:
			flash("Error: Tried to edit a nonexistent player")
			raise redirect(url("/scoresname"))
		#u.user_name=name #don't give too much opportunity to break things
		u.address=address
		u.college=college
		u.water=water
		u.notes=notes
		if(password):
			u.password=password
		u.email_address=email
		if(adjustment!=u.adjustment and not identity.in_group('admin')):
			flash("Error: Tried to change a score adjustment while not umpire")
			raise redirect(url('/scoresname'))
		u.adjustment=adjustment
	else:
		u=User(user_name=name,address=address,college=college,water=water,notes=notes,password=password,email_address=email,score=0.0,adjustment=adjustment)
		p=Pseudonym(name=name,player=u)
	self.updatescores()
	flash("Player updated!")
	raise redirect(url("/scoresname"))
Beispiel #5
0
    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
Beispiel #6
0
    def savereport(self,new,eid,player,text,id=0):
        if(new):
	    try:
    	        r=Report(speaker=User.by_user_name(player),event=Event.get(eid),content=text)
            except SQLObjectNotFound:
	        flash("Error: Tried to add report by a nonexistent player, or to a nonexistent event")
		raise redirect(url("/news"))
	else:
	    try:
                r=Report.get(id)
	        r.content=text
  	        #nothing else really should be being edited, but will update it all for future compatibility
	        r.speaker=User.by_user_name(player)
	        r.event=Event.get(eid)
	    except SQLObjectNotFound:
	        flash("Error: Tried to edit a nonexistent report, or a report for a nonexistent event, or write a report as a nonexistent player.")
		raise redirect(url("/news"))
	flash("Report updated!")
	raise redirect(url("/news"))
Beispiel #7
0
    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"))
Beispiel #8
0
    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"))
Beispiel #9
0
 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"))
Beispiel #10
0
 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
Beispiel #11
0
 def saveuser(self, oldname, name, address, college, water, notes, password,
              email, adjustment):
     if (oldname):
         try:
             u = User.by_user_name(oldname)
         except SQLObjectNotFound:
             flash("Error: Tried to edit a nonexistent player")
             raise redirect(url("/scoresname"))
         #u.user_name=name #don't give too much opportunity to break things
         u.address = address
         u.college = college
         u.water = water
         u.notes = notes
         if (password):
             u.password = password
         u.email_address = email
         if (adjustment != u.adjustment and not identity.in_group('admin')):
             flash(
                 "Error: Tried to change a score adjustment while not umpire"
             )
             raise redirect(url('/scoresname'))
         u.adjustment = adjustment
     else:
         u = User(user_name=name,
                  address=address,
                  college=college,
                  water=water,
                  notes=notes,
                  password=password,
                  email_address=email,
                  score=0.0,
                  adjustment=adjustment)
         p = Pseudonym(name=name, player=u)
     self.updatescores()
     flash("Player updated!")
     raise redirect(url("/scoresname"))
Beispiel #12
0
    def savepseudonym(self,new,name,playerid,id=0,submit=""):
        if(new):
	    try:
                p=Pseudonym(player=User.get(playerid),name=name)
	    except SQLObjectNotFound:
	        flash("Error: Tried to add a pseudonym to a nonexistent user")
		raise redirect(url("/scoresname"))
	else:
	    try:
	        p=Pseudonym.get(id)
	    except SQLObjectNotFound:
	        flash("Error: Tried to edit a nonexistent pseudonym")
		raise redirect(url("/scoresname"))
            p.name=name
	flash("Pseudonym updated!")
	raise redirect(url("/edituser/"+p.player.user_name))
Beispiel #13
0
 def savepseudonym(self, new, name, playerid, id=0, submit=""):
     if (new):
         try:
             p = Pseudonym(player=User.get(playerid), name=name)
         except SQLObjectNotFound:
             flash("Error: Tried to add a pseudonym to a nonexistent user")
             raise redirect(url("/scoresname"))
     else:
         try:
             p = Pseudonym.get(id)
         except SQLObjectNotFound:
             flash("Error: Tried to edit a nonexistent pseudonym")
             raise redirect(url("/scoresname"))
         p.name = name
     flash("Pseudonym updated!")
     raise redirect(url("/edituser/" + p.player.user_name))
Beispiel #14
0
 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"))
Beispiel #15
0
 def scoresrank(self):
     return {'players': User.select(orderBy='score')}
Beispiel #16
0
 def scorescollege(self):
     return {'players': User.select(orderBy='college')}
Beispiel #17
0
 def scoresname(self):
     return {'players': User.select(orderBy='user_name')}
Beispiel #18
0
 def scorescollege(self):
     return {'players': User.select(orderBy='college')}
Beispiel #19
0
 def scoresname(self):
     return {'players': User.select(orderBy='user_name')}
Beispiel #20
0
    def edituser(self,player):
    	try:
	    return {'user':User.by_user_name(player),'new':False}
	except SQLObjectNotFound:
	    flash("Error: Tried to edit a nonexistent user")
	    raise redirect(url("/scoresname"))
Beispiel #21
0
 def scoresrank(self):
     return {'players': User.select(orderBy='score')}
Beispiel #22
0
 def edituser(self, player):
     try:
         return {'user': User.by_user_name(player), 'new': False}
     except SQLObjectNotFound:
         flash("Error: Tried to edit a nonexistent user")
         raise redirect(url("/scoresname"))