Exemple #1
0
def create_race(request, username):
    user = assert_user_logged_in(username, request)
    if request.method == 'POST':
        form = forms.EditRaceForm(request.POST, user=user)
        if form.has_changed():
            if form.is_valid():
                machine = Machine.objects.get(
                    name=form.cleaned_data['machine_name'], user=user)
                config = machine.empty_configuration()

                race = Race()
                race.name = form.cleaned_data['name']
                race.date_time = form.cleaned_data['date_time']
                race.track = Track.objects.get(
                    name=form.cleaned_data['track_name'])
                race.num_laps = form.cleaned_data['num_laps']
                race.organization = form.cleaned_data['organization']
                race.machine_config = config
                race.user = user
                race.is_team = form.cleaned_data['is_team']
                # If user hits back & returns to new race form,
                # help them out by not creating a race twice or
                # failing on uniqueness constraint:
                race, created = Race.objects.get_or_create(
                    name=race.name,
                    date_time=race.date_time,
                    track=race.track,
                    num_laps=race.num_laps,
                    organization=race.organization,
                    machine_config=race.machine_config,
                    user=race.user)
                return HttpResponseRedirect(
                    reverse('laps:edit_race_laps', args=(username, race.id)))
    else:
        form = forms.EditRaceForm(user=user)
    return render(request, 'laps/new_race.html', {
        'form': form,
        'racer': user.username
    })