def get(self): self.response.headers['Content-Type'] = 'text/plain' asa_number_str = self.request.get('asa_number') if asa_number_str == '': self.response.out.write( "Missing asa_number" ) self.response.set_status( 400 ) return stroke_code_str = self.request.get('stroke_code') if stroke_code_str == '': # If there's no stroke code, then we assume that we want the entire swim history swimlist = SwimList.get( int(asa_number_str) ) if swimlist is not None: self.response.out.write( str( swimlist ) ) else: distance_str = self.request.get('distance') if distance_str == '': self.response.out.write( "Missing distance" ) self.response.set_status( 400 ) return asa_number = int(asa_number_str) stroke_code = int(stroke_code_str) distance = int(distance_str) swims = Swim.fetch_all( asa_number, Event.create( stroke_code, distance, "S" ) ) swims.extend( Swim.fetch_all( asa_number, Event.create( stroke_code, distance, "L" ) ) ) swims.extend( UnofficialSwim.fetch_all( asa_number, Event.create( stroke_code, distance, "S" ) ) ) swims.extend( UnofficialSwim.fetch_all( asa_number, Event.create( stroke_code, distance, "L" ) ) ) for swim in swims: self.response.out.write( str( swim ) + "\n" )
def GetCandidates(relay, stroke, swimmers): candidates = [] shortCourseEvent = Event.create(stroke, relay.distance, "S") longCourseEvent = Event.create(stroke, relay.distance, "L") for swimmer in swimmers: if swimmer.is_male == relay.is_male: age_on_day = helpers.CalcAge(swimmer.date_of_birth, relay.date) if (age_on_day >= relay.min_age) and (age_on_day <= relay.max_age): # Get this swimmer's PB scPbSwim = Swim.fetch_pb(swimmer, shortCourseEvent) lcPbSwim = Swim.fetch_pb(swimmer, longCourseEvent) pbRaceTime = None if scPbSwim is None: if lcPbSwim is not None: pbRaceTime = longCourseEvent.convertTime( lcPbSwim.race_time) else: pbRaceTime = scPbSwim.race_time #logging.info( swimmer.full_name() + str( scPbSwim.race_time ) + " " + str( pbRaceTime ) ) if lcPbSwim is not None: lcConvertedRaceTime = longCourseEvent.convertTime( lcPbSwim.race_time) if lcConvertedRaceTime < pbRaceTime: pbRaceTime = lcConvertedRaceTime #logging.info( swimmer.full_name() + " Age: " + str( age_on_day ) ) if pbRaceTime is not None: #logging.info( swimmer.full_name() + " PB: " + str( age_on_day ) ) swimmer.relay_time = pbRaceTime swimmer.age_on_day = age_on_day candidates.append(swimmer) candidates.sort(key=lambda swimmer: swimmer.relay_time) return candidates
def GetCandidates( relay, stroke, swimmers ): candidates = [] shortCourseEvent = Event.create( stroke, relay.distance, "S" ) longCourseEvent = Event.create( stroke, relay.distance, "L" ) for swimmer in swimmers: if swimmer.is_male == relay.is_male: age_on_day = helpers.CalcAge( swimmer.date_of_birth, relay.date ) if (age_on_day >= relay.min_age) and (age_on_day <= relay.max_age): # Get this swimmer's PB scPbSwim = Swim.fetch_pb( swimmer, shortCourseEvent ) lcPbSwim = Swim.fetch_pb( swimmer, longCourseEvent ) pbRaceTime = None if scPbSwim is None: if lcPbSwim is not None: pbRaceTime = longCourseEvent.convertTime( lcPbSwim.race_time ) else: pbRaceTime = scPbSwim.race_time #logging.info( swimmer.full_name() + str( scPbSwim.race_time ) + " " + str( pbRaceTime ) ) if lcPbSwim is not None: lcConvertedRaceTime = longCourseEvent.convertTime( lcPbSwim.race_time ) if lcConvertedRaceTime < pbRaceTime: pbRaceTime = lcConvertedRaceTime #logging.info( swimmer.full_name() + " Age: " + str( age_on_day ) ) if pbRaceTime is not None: #logging.info( swimmer.full_name() + " PB: " + str( age_on_day ) ) swimmer.relay_time = pbRaceTime swimmer.age_on_day = age_on_day candidates.append( swimmer ) candidates.sort( key = lambda swimmer: swimmer.relay_time ) return candidates;
def parse_results(hy3_parsed_lines): swimmers_by_id = {} swimmers = [] swimmer = None event = None meet = None meet_date = None course_code = None for line in hy3_parsed_lines: if line.line_code == "D1": # Swimmer information swimmer = Hy3Swimmer(line.first_name, line.last_name, line.date_of_birth) swimmers_by_id[line.swimmer_id] = swimmer swimmers.append(swimmer) elif line.line_code == "B1": # Meet information meet = line.meet_name meet_date = line.start_date elif line.line_code == "B2": # More meet information course_code = line.course_code elif line.line_code == "E1": # Individual entry event = Event.create(hytek_stroke_code_to_stroke_id[line.stroke], line.distance, course_code) elif line.line_code == "E2": # Individual result date = line.date if date is None: # The HY3 documentation says there should be a date here, but there doesn't appear to be date = meet_date swim = Hy3Swim(event, meet, date, line.time) swimmer.swims.append(swim) return swimmers