Example #1
0
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('/')
Example #2
0
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 "})
Example #3
0
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))
Example #4
0
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')
Example #5
0
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)
Example #6
0
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')
Example #9
0
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 ''
Example #10
0
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('/')
Example #11
0
def before_request():
	g.betauser = BetaUser.get_current_user()
Example #12
0
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)
Example #13
0
def participant_queue():
	bu = BetaUser.all()
	bu.filter('participate =', True)
	users = bu.fetch(100)
	return render_template('profile-list.html', queue=users)
Example #14
0
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 ]