Esempio n. 1
0
 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" )
Esempio n. 2
0
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
Esempio n. 3
0
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;
Esempio n. 4
0
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