1 from pyramid.httpexceptions
import HTTPFound, HTTPNotFound
2 from pyramid.view
import view_config, view_defaults
4 AddBuddyForm, ConfirmNotificationsForm, LoginForm, RegistrationForm,
5 RemoveBuddyForm, SendInviteForm, AddRemoveBuddyForm)
9 BaseView, get_all_notification_stream, get_buddies_stream,
10 get_challenge_stream, get_unconfirmed_notification_stream)
13 notification_view_streams = {
'user.notifications.unconfirmed': get_unconfirmed_notification_stream,
14 'user.notifications.all': get_all_notification_stream}
16 profile_view_streams = {
'user.view.challenges': get_challenge_stream,
17 'user.view.buddies': get_buddies_stream}
20 @view_defaults(permission=
'member')
23 @view_config(route_name=
'user.notifications.unconfirmed', renderer=
'user/notifications/unconfirmed.html')
24 @view_config(route_name=
'user.notifications.all', renderer=
'user/notifications/all.html')
26 form = ConfirmNotificationsForm(self.request.POST)
27 if 'confirm_notifications' in self.request.POST
and form.validate():
28 form.confirm_notifications(self.request.user)
29 return HTTPFound(location=self.request.route_url(
'user.notifications.unconfirmed'))
30 stream = notification_view_streams[self.request.matched_route.name](self.request.user)
31 return dict(form=form,
35 @view_defaults(permission=
'member')
38 @view_config(route_name=
'user.view.challenges', renderer=
'user/view/challenges.html')
39 @view_config(route_name=
'user.view.buddies', renderer=
'user/view/buddies.html')
41 user = User.get_by_id(self.request.matchdict[
'id'])
44 add_remove_buddy_form =
None
45 if not self.request.user.is_user(user):
46 add_remove_buddy_form = AddRemoveBuddyForm(self.request.POST)
47 if 'add' in self.request.POST:
48 add_remove_buddy_form.add_buddy(self.request.user, user)
49 return HTTPFound(location=self.request.path)
50 elif 'remove' in self.request.POST:
51 add_remove_buddy_form.remove_buddy(self.request.user, user)
52 return HTTPFound(location=self.request.path)
53 stream = profile_view_streams[self.request.matched_route.name](user)
54 return dict(user=user,
55 add_remove_buddy_form=add_remove_buddy_form,
59 @view_defaults(route_name=
'user.logout')
64 headers = Auth.logout()
65 return HTTPFound(location=self.request.route_url(
'user.login'), headers=headers)
68 @view_defaults(route_name=
'user.login', permission=
'guest')
71 @view_config(renderer=
'user/login.html')
73 form = LoginForm(self.request.POST)
74 if 'login' in self.request.POST
and form.validate():
75 headers = form.login_user()
76 location = self.request.GET.get(
77 'return_to', self.request.route_url(
'home'))
78 return HTTPFound(location=location, headers=headers)
79 return dict(form=form)
82 @view_defaults(route_name=
'user.register', permission=
'guest')
85 @view_config(renderer=
'user/register.html')
87 form = RegistrationForm(self.request.POST)
88 if 'registration' in self.request.POST
and form.validate():
89 headers = form.register_user()
90 self.request.session.flash(
"Welcome to Workout With Friends!", self.consts.SUCCESS)
91 return HTTPFound(location=self.request.route_url(
'home'), headers=headers)
92 return dict(form=form)
95 @view_defaults(route_name=
'user.invite', permission=
'member')
98 @view_config(renderer=
'user/invite.html')
100 form = SendInviteForm(self.request.POST)
101 if 'send_invite' in self.request.POST
and form.validate():
102 form.send_invite_email(self.request.user)
103 self.request.session.flash(
'An invitation has been sent out on your behalf.', self.consts.SUCCESS)
104 return HTTPFound(location=self.request.path)
105 return dict(form=form)