1 from __future__
import unicode_literals
2 from pyramid.httpexceptions
import HTTPFound, HTTPNotFound
3 from pyramid.view
import view_config, view_defaults
5 AcceptDenyChallengeForm, CreateBenchPressChallengeForm, CreateEnduranceChallengeForm,
6 CreateSpeedChallengeForm, CreateSquatChallengeForm, UploadBenchPressWorkoutForm,
7 UploadEnduranceWorkoutForm, UploadSpeedWorkoutForm, UploadSquatWorkoutForm)
12 create_challenge_forms = {
'challenge.create.speed': CreateSpeedChallengeForm,
13 'challenge.create.endurance': CreateEnduranceChallengeForm,
14 'challenge.create.bench': CreateBenchPressChallengeForm,
15 'challenge.create.squat': CreateSquatChallengeForm}
18 @view_defaults(route_name=
'challenge.view', permission=
'member')
21 @view_config(renderer=
'challenge/view.html')
23 challenge = Challenge.get_by_id(self.request.matchdict[
'id'])
26 accept_deny_challenge_form =
None
27 upload_workout_form =
None
28 if self.request.user.in_challenge(challenge):
29 if not (self.request.user.accepted_challenge(challenge)
or self.request.user.denied_challenge(challenge)):
30 accept_deny_challenge_form = AcceptDenyChallengeForm(self.request.POST)
31 if 'accept' in self.request.POST:
32 accept_deny_challenge_form.accept_challenge(self.request.user, challenge)
33 return HTTPFound(location=self.request.path)
34 elif 'deny' in self.request.POST:
35 accept_deny_challenge_form.deny_challenge(self.request.user, challenge)
36 return HTTPFound(location=self.request.path)
37 elif self.request.user.accepted_challenge(challenge):
38 if challenge.is_speed_challenge():
39 upload_workout_form = UploadSpeedWorkoutForm(self.request.POST)
40 elif challenge.is_endurance_challenge():
41 upload_workout_form = UploadEnduranceWorkoutForm(self.request.POST)
42 elif challenge.is_bench_press_challenge():
43 upload_workout_form = UploadBenchPressWorkoutForm(self.request.POST)
44 elif challenge.is_squat_challenge():
45 upload_workout_form = UploadSquatWorkoutForm(self.request.POST)
46 if upload_workout_form
and 'upload_workout' in self.request.POST
and upload_workout_form.validate():
47 upload_workout_form.upload_workout(self.request.user, challenge)
48 return HTTPFound(location=self.request.path)
49 return dict(challenge=challenge,
50 accept_deny_challenge_form=accept_deny_challenge_form,
51 upload_workout_form=upload_workout_form)
54 @view_defaults(permission=
'member')
57 @view_config(route_name=
'challenge.create.speed', renderer=
'challenge/create/speed.html')
58 @view_config(route_name=
'challenge.create.endurance', renderer=
'challenge/create/endurance.html')
59 @view_config(route_name=
'challenge.create.bench', renderer=
'challenge/create/bench.html')
60 @view_config(route_name=
'challenge.create.squat', renderer=
'challenge/create/squat.html')
62 form = create_challenge_forms[self.request.matched_route.name](self.request.POST)
63 if 'create_challenge' in self.request.POST
and form.validate():
64 challenge = form.create_challenge(self.request.user)
65 self.request.session.flash(
'%s has been notified of this challenge.' % form.competitor.data, self.consts.SUCCESS)
66 return HTTPFound(location=self.request.route_url(
'challenge.view', id=challenge.id))
67 return dict(form=form)