def logout_callback(): BetaUser.logout() login_redirect_url = session.pop('login-redirect-url', None) if login_redirect_url: return redirect(login_redirect_url) else: return redirect('/')
def signup_view(request): if request.method == 'POST': form = NewBetaUserForm(request.POST) if form.is_valid(): data = form.cleaned_data # Hooray! A new email address is collected! b = BetaUser(name=data['name'], email=data['email']) b.save() return HttpResponseRedirect('/thanks/') else: form = NewBetaUserForm() return render(request, 'index.html', {'form' : form, 'noun': "sample Bootstrap form "})
def beta_remove(): key = request.values.get('key', None) if key is None: abort(404) user = BetaUser.get(key) user.inbeta = False user.save() if user.emailnotify: taskqueue.add(url=url_for('user_beta_status_change'), params={ 'user-key': user.key(), }) return redirect(url_for('view_profile', key=key))
def beta_participants_csv(): sep = ',' if request.values.get('excel', None) is not None: sep = ';' bu = BetaUser.all() bu.filter('participate =', True) testers = [u for u in bu if u.inbeta] buf = cStringIO.StringIO() buf.write('# name, email, udid, devtype\n') for u in testers: s = sep.join((u.name, u.email, u.udid, u.devtype))+'\n' buf.write(s.encode('utf-8')) return Response(buf.getvalue(), mimetype='text/csv')
def participant_queue(): fetch = request.values.get('fetch', 'all') bu = BetaUser.all() bu.filter('participate =', True) users = bu.fetch(100) queue = [] if fetch == 'all': queue = users elif fetch == 'notinbeta': queue = [u for u in users if not u.inbeta] elif fetch == 'inbeta': queue = [u for u in users if u.inbeta] return render_template('profile-list.html', queue=queue)
def beta_participants_csv(): sep = ',' if request.values.get('excel', None) is not None: sep = ';' notprov = request.values.get('notprovisioned', None) is not None bu = BetaUser.all() bu.filter('participate =', True) testers = [u for u in bu if u.inbeta] buf = cStringIO.StringIO() buf.write('# name, email, udid, devtype\n') for u in testers: br = BetaRelease.get_latest_release() if notprov and br.udids is not None and u.udid in br.udids: continue s = sep.join((u.name, u.email, u.udid, u.devtype))+'\n' buf.write(s.encode('utf-8')) return Response(buf.getvalue(), mimetype='text/csv')
def finish_login(): # Get the token from the request itself (although we've stored it in a session variable) code = request.args.get("oauth_token", None) if code: # Make sure the passed-in code and our session-stored code match up. if session["twitter-req-token"]["oauth_token"] != code: session.pop("twitter-req-token", None) # fixme(mkrautz): Show a page explaining what went wrong, instead. abort(404) # Set up our client object to fetch our access token token = oauth.Token(code, session["twitter-req-token"]["oauth_token_secret"]) consumer = oauth.Consumer(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET) client = oauth.Client(consumer, token) # Get the access token resp, content = client.request("https://api.twitter.com/oauth/access_token", "GET") data = dict(cgi.parse_qsl(content)) # Get existing or create a new user. bu = BetaUser.get_twitter_user(data["user_id"]) if not bu: bu = BetaUser( sid=data["user_id"], service=BetaUser.SERVICE_TWITTER, name=data["screen_name"], admin=False, lastlogin=datetime.datetime.now(), ) bu.udid = None bu.lastlogin = datetime.datetime.now() bu.put() # Store the key for the currently logged-in betauser. session["betauser"] = bu.key() session.pop("twitter-req-token", None) session.permanent = True # Should we redirect to a specific page? login_redirect_url = session.pop("login-redirect-url", None) if login_redirect_url: return redirect(login_redirect_url) # Redirect to front page else: # fixme(mkrautz): See comment about the same thing in facebook.py. return redirect("http://mumble-ios.appspot.com") session.pop("twitter-req-token", None) abort(404)
def finish_login(): # Fetch the code we've been passed from Facebook code = request.args.get('code', None) if not code: # fixme(mkrautz): Show a nice page here explaining what's wrong. abort(404) # Fetch our access token data = urlfetch.fetch('https://graph.facebook.com/oauth/access_token?' + urllib.urlencode({ 'client_id': settings.FACEBOOK_APP_ID, 'client_secret': settings.FACEBOOK_APP_SECRET, 'code': code, 'redirect_uri': callback_url, })) args = dict(cgi.parse_qsl(data.content)) access_token = args['access_token'] # Fetch data about the user using our acquired access token. data = urlfetch.fetch('https://graph.facebook.com/me?access_token=' + access_token) login_data = json.loads(data.content) # Get existing user, or create a new one. bu = BetaUser.get_facebook_user(login_data['id']) if not bu: bu = BetaUser(sid=login_data['id'], service=BetaUser.SERVICE_FACEBOOK, name=login_data['name'], admin=False, lastlogin=datetime.datetime.now()) bu.udid = None bu.lastlogin=datetime.datetime.now() bu.put() # Set the user's BetaUser key in a cookie, so we know # they're logged in (and which user they're logged in as). session['betauser'] = bu.key() session.permanent = True # Should we redirect to a specific page? login_redirect_url = session.pop('login-redirect-url', None) if login_redirect_url: return redirect(login_redirect_url) # Redirect to front page else: # We force a redirect to http:// (which means that even users on # https:// connections get redirected to the non-TLS version). # The reason for this is that App Engine's OpenID 'federated login' # feature seems to break when using https://. fixme(mkrautz): Look # into why that is. return redirect('http://mumble-ios.appspot.com')
def user_beta_status_change(): key = request.values.get('user-key', None) if key: user = BetaUser.get(key) if user: status = 'Not Participating' if user.inbeta: status = 'Participating' mail.send_mail(sender='*****@*****.**', to=user.email, subject='[Mumble iOS Beta] Beta Status Change', body='''Hello %s! You are receiving this email to notify you that your beta status on the Mumble for iOS Beta Portal has changed. Your new status is '%s' Please visit the portal for further information. Thanks, Mumble for iOS Beta Team''' % (user.name, status)) return ''
def login_openid_callback(): # Convert a logged in GAE OpenID user to a BetaUser... user = gaeusers.get_current_user() if user: # First, check if there's already a BetaUser for this OpenID identity... bu = BetaUser.get_openid_user(user.federated_identity()) if not bu: bu = BetaUser(sid=user.federated_identity(), service=BetaUser.SERVICE_OPENID, name=None, admin=False, lastlogin=datetime.datetime.now()) bu.lastlogin = datetime.datetime.now() bu.put() # Store betauser key in our session cookie session['betauser'] = bu.key() session.permanent = True else: logging.warning('No OpenID user logged in.') # Should we redirect to a specific page? login_redirect_url = session.pop('login-redirect-url', None) if login_redirect_url: return redirect(login_redirect_url) # Redirect to front page else: return redirect('/')
def before_request(): g.betauser = BetaUser.get_current_user()
def view_profile(): key = request.values.get('key', None) if key is None: abort(404) user = BetaUser.get(key) return render_template('viewprofile.html', user=user)
def participant_queue(): bu = BetaUser.all() bu.filter('participate =', True) users = bu.fetch(100) return render_template('profile-list.html', queue=users)
def get_emailable_betausers(): query = BetaUser.all() query.filter('inbeta =', True) query.filter('emailnotify =', True) bu = query.fetch(200) return [ u.email for u in bu ]