def trackdetail(request, track_id): """ This view is the initial page once a track has been selected. """ supported_track = get_object_or_404(SupportedTrackName, pk=track_id) rankedclasses_tuple = get_ranked_classes_by_track(supported_track.trackkey.id) # Format the classes and retrieve the names to display. formated_rankedclasses = [] for rankedclass_id, top_racers in rankedclasses_tuple: rankedclass_obj = RankedClass.objects.get(pk=rankedclass_id) formated_rankedclasses.append({'class': rankedclass_obj, 'top3':top_racers}) # This is done so we can easily display a message indicating there are not rankings. if (formated_rankedclasses == []): formated_rankedclasses = None # Get all of the past race dates to display in the datatable raw_race_dates = _get_Recent_Race_Dates(supported_track) race_dates = [] # Need to keep in mind there may be less races than expected for special events. for racedate, racecount in raw_race_dates: # TODO - clean up the copy or find a better way to get them to click on the row display_string = "{0} Race Results from: {1} - Click Here".format(racecount, _display_Date_User(racedate)) click_url = '/trackdata/' + str(supported_track.id) + '/results-by-day/' + racedate.strftime('%Y-%m-%d') race_dates.append([display_string, click_url]) raceday_jsdata = simplejson.dumps(race_dates) ctx = Context({'trackname':supported_track.trackkey.trackname, 'raceday_jsdata':raceday_jsdata, 'formated_rankedclasses':formated_rankedclasses}) return render_to_response('trackdatadetail.html', ctx, context_instance=RequestContext(request))
def test_multipleraces_upload(self): #===================================================== # Validate Race Details #===================================================== # Validate the race details have been uploaded. raceobj1 = SingleRaceDetails.objects.get(trackkey=self.trackname_obj, racedata="RankingTestClass", racenumber=1, roundnumber=1, racelength=6, winninglapcount=12, mainevent=2) raceobj2 = SingleRaceDetails.objects.get(trackkey=self.trackname_obj, racedata="RankingTestClass", racenumber=2, roundnumber=1, racelength=6, winninglapcount=12, mainevent=1, maineventroundnum=1) raceobj3 = SingleRaceDetails.objects.get(trackkey=self.trackname_obj, racedata="RankingTestClass", racenumber=1, roundnumber=2, racelength=6, winninglapcount=12, mainevent=1, maineventroundnum=2) #===================================================== # Validate Ranking #===================================================== # Create a RankedClass rnk_class = RankedClass(trackkey = self.trackname_obj, raceclass = "RankingTestClass", startdate = '2010-01-01 01:01:01', lastdate = '2010-01-01 01:01:01', experation = 10, requiredraces = 1) rnk_class.save() # Run ranking for that class process_ranking(rnk_class) rnk_event1 = RankEvent.objects.get(rankedclasskey=rnk_class.id, eventcount=1) rnk_event2 = RankEvent.objects.get(rankedclasskey=rnk_class.id, eventcount=2) racer4 = Ranking.objects.get(raceridkey = RacerId.objects.get(racerpreferredname='RankedRacer Four').id, racecount=1, rankeventkey=rnk_event2) # Validate racer five's rank does not change after the first event. racer5 = Ranking.objects.get(raceridkey = RacerId.objects.get(racerpreferredname='RankedRacer Five').id, racecount=1, rankeventkey=rnk_event1) self.assertAlmostEqual(racer5.displayrank, -3.03089030448, places=4) racer5 = Ranking.objects.get(raceridkey = RacerId.objects.get(racerpreferredname='RankedRacer Five').id, racecount=1, rankeventkey=rnk_event2) self.assertAlmostEqual(racer5.displayrank, -3.03089030448, places=4) # Validate racer one's rank before A2 main racer1 = Ranking.objects.get(raceridkey = RacerId.objects.get(racerpreferredname='RankedRacer One').id, racecount=1, rankeventkey=rnk_event1) self.assertAlmostEqual(racer1.displayrank, 15.910124731, places=4) # Validate racer one and three after A2 main. racer1 = Ranking.objects.get(raceridkey = RacerId.objects.get(racerpreferredname='RankedRacer One').id, racecount=2, rankeventkey=rnk_event2) self.assertAlmostEqual(racer1.displayrank, 21.1014540971, places=4) racer3 = Ranking.objects.get(raceridkey = RacerId.objects.get(racerpreferredname='RankedRacer Three').id, racecount=2, rankeventkey=rnk_event2) classes = get_ranked_classes_by_track(self.trackname_obj.id) # There should only be one class, we will take it and the top racer ranked_class_id, top_racers = classes[0] self.assertEqual(ranked_class_id, rnk_class.id) self.assertAlmostEqual(top_racers[0].displayrank, 21.1014540971, places=4) self.assertAlmostEqual(top_racers[2].displayrank, 7.91634267877, places=4)