def sprintAvailabilityPost(handler, id, p_hours): def die(msg): print msg done() handler.wrappers = False id = int(id) if not handler.session['user']: die("You must be logged in to modify sprint info") sprint = Sprint.load(id) if not sprint or sprint.isHidden(handler.session['user']): die("There is no sprint with ID %d" % id) if not (sprint.isActive() or sprint.isPlanning()): die("Unable to modify inactive sprint") elif not sprint.canEdit(handler.session['user']): die("You don't have permission to modify this sprint") avail = Availability(sprint) for k, hours in p_hours.items(): userid, timestamp = map(int, k.split(',', 1)) hours = int(hours) user = User.load(userid) if not user in sprint.members: die("Trying to set availability of non-member %s" % user.safe.username) time = tsToDate(timestamp) if not sprint.start <= timestamp <= sprint.end: die("Trying to set availability outside of sprint window") avail.set(user, time, hours) handler.responseCode = 299 delay(handler, SuccessBox("Updated availability", close = 3, fixed = True)) Event.sprintAvailUpdate(handler, sprint)