def post(self): track = self.request.get('track') bestlaps = {} for bl in BestLap.all().filter('track =', track): if bl.isBest is True: bestlaps[bl.raceclass.name] = bl upload_files = self.get_uploads('file')[0] blob_key = upload_files.key() blob_info = upload_files record = Record(csv=str(blob_info)).put() blob_reader = blobstore.BlobReader(blob_key) reader = csv.DictReader(blob_reader) lapsToUpload = [] for row in reader: #row = row.replace('"','').replace(', ', ' ').strip() if 'Best Tm' in row: time = row['Best Tm'] else: time = row['Overall BestTm'] if 'Laps' in row: laps = row['Laps'] else: laps = row['Appeared'] position = row['Pos'] point_in_class = row['PIC'] carnum = row['No.'] racer_name = normalize_string(row['Name']) racer_class = normalize_string(row['Class']) diff = row['Diff'] gap = row['Gap'] points = row['Points'] car_make = normalize_string(row['Make']) car_model = normalize_string(row['Model']) car_year = row['Year'] car_color = row['Color'] city = row['City'] state = row['State'] sponsor = normalize_string(row['Sponsor']) email = row['Email'] if time.count(':') == 0 and time: time = '0:' + time if validLap(racer_class, point_in_class): pt = process_time(time) t = track #Track.get_or_insert(key_name=self.request.get('track'), name=self.request.get('track'), lap_distance=1.02) g = self.request.get('group') sd = self.request.get('date') dt = datetime.strptime(sd, '%Y-%m-%d') tr = Track.get_or_insert(key_name=t, name=t) e = Event.get_or_insert(key_name=g+t+sd, name=g+t, track=tr, date=dt) c = Car.get_or_insert(key_name=carnum+car_make+car_model+car_color+car_year, make=car_make, model=car_model,year=car_year,color=car_color,number=carnum) cl = RaceClass.get_or_insert(key_name=racer_class, name=racer_class) if email: email else: email = racer_name.split()[0].lower() + racer_name.split()[1].lower()+'@gmail.com' r = Racer.get_or_insert(key_name=racer_name.split()[0][0:1].lower() + racer_name.split()[1].lower(), email=email,name=racer_name, driver=users.User(email), points=int(points), car=c, raceclass=cl) if sponsor: r.sponsor=Sponsor.get_or_insert(key_name=sponsor, name=sponsor) r.put() best = BestLap.get_or_insert(key_name=sd+t+g+cl.name+racer_name.replace(' ','.'), driver=r, raceclass=cl, track=t, time=pt, event=e, isBest=False, date=dt) if cl.name in bestlaps: if pt < bestlaps[cl.name].time and pt != 0.0: print str(pt) + ' is better than ' + bestlaps[cl.name].driver.name + 's time of ' + str(bestlaps[cl.name].time) best.isBest = True #Mark current record as best bestlaps[cl.name].isBest = False #Mark old record as not best bestlaps[cl.name].put() #Commit old record to db bestlaps[cl.name] = best #Replace record in local dictionary with new best record for class elif pt != 0.0: best.isBest = True bestlaps[cl.name] = best lapsToUpload.append(best) db.put(lapsToUpload) self.redirect('/')