def invitation(hash): user = users.get_current_user() invite = Invitation.gql('WHERE hash=:1', hash).get() if not invite: return render_template('invitation_expired.html') # We want the user to be logged out once before coming here so they can choose which account the invite applies to. if not invite.has_been_logged_out: invite.has_been_logged_out = True invite.put() if user: return redirect(users.create_logout_url(request.path)) if not user: return redirect(users.create_login_url(request.path)) site = invite.site if user not in site.users: site.users.append(user) if invite.admin and user not in site.admins: site.admins.append(user) site.put() for invite in Invitation.gql('WHERE email=:1 AND site=:2', invite.email, invite.site): invite.delete() return render_template('invitation.html', site=site)