def form_valid(self, form): data = form.cleaned_data now = timezone.now() tt = TimeTrial(profile=data['profile'], result='', start_time=data['start_time'], creator=self.request.get_or_create_profile(), created_time=now) tt.save() return HttpResponseRedirect( reverse('timetrial_stopwatch', kwargs={'pk': tt.pk}))
def __iter__(self): for tt in self.qs: if tt.created_time > self.now: continue fields = ('pk profile start_time created_time ' + 'result state residue comment ' '').split() kwargs = {f: getattr(tt, f) for f in fields} res = TimeTrial(**kwargs) legs = list(tt.leg_set.all()) legs = [l for l in legs if l.time < self.now] res.leg_count = len(legs) res.duration = sum(l.duration for l in legs) if res.start_time > self.now: res.start_time = None res.leg_count = None res.duration = None res.result = '' res.state = 'initial' elif res.leg_count != tt.leg_count: res.result = '' res.state = 'running' yield res
def form_valid(self, form): data = form.cleaned_data now = timezone.now() stopwatch = False if data['individual_times'] == 'individual': durations = data['durations'] elif data['individual_times'] == 'total': zero = datetime.timedelta(seconds=0) durations = [zero] * (data['legs'] - 1) + [data['total_time']] elif data['individual_times'] == 'stopwatch': stopwatch = True data['result'] = '' else: raise ValueError(data['individual_times']) tt = TimeTrial(profile=data['profile'], result=data['result'], start_time=data['start_time'], creator=self.request.get_or_create_profile(), created_time=now) tt.save() if stopwatch: return HttpResponseRedirect( reverse('timetrial_stopwatch', kwargs={'pk': tt.pk})) for i, duration in enumerate(durations): leg = Leg(timetrial=tt, duration=duration.total_seconds(), order=i + 1) leg.save() logger.info("%s %s created by %s", TimeTrial.objects.get(pk=tt.pk), ' '.join(map(str, durations)), self.request.profile, extra=self.request.log_data) return HttpResponseRedirect( reverse('timetrial_detail', kwargs={'pk': tt.pk}))
def get_context_data(self, **kwargs): kwargs['do_post'] = False kwargs['do_fetch'] = False kwargs['form'] = StopwatchForm(instance=TimeTrial(), initial={}) return super(TimeTrialStopwatchOffline, self).get_context_data( **kwargs)