def create_users(cls): root = model.User(email_addr=cls.root_addr, name=cls.root_name, passwd_hash=cls.root_password, fullname=cls.fullname, api_key=cls.root_api_key) root.set_password(cls.root_password) user = model.User(email_addr=cls.email_addr, name=cls.name, passwd_hash=cls.password, fullname=cls.fullname, api_key=cls.api_key) user.set_password(cls.password) user2 = model.User(email_addr=cls.email_addr2, name=cls.name2, passwd_hash=cls.password + "2", fullname=cls.fullname2, api_key=cls.api_key_2) user2.set_password(cls.password) return root, user, user2
def create(cls): user = model.User( email_addr = cls.email_addr, name = cls.name, fullname = cls.fullname, api_key = cls.api_key) user2 = model.User( email_addr = cls.email_addr2, name = cls.name2, fullname = cls.fullname2, api_key=cls.api_key_2) info = { 'total': 150, 'long_description': 'hello world' } app = model.App( name = u'My New App', short_name = cls.app_name, description = u'description', hidden = 0, info = info ) app.owner = user task_info = { 'question': 'My random question', 'url': 'my url' } task_run_info = { 'answer': u'annakarenina' } model.Session.add_all([user, user2, app]) # Create the task and taskruns for the first app for i in range (0,10): task = model.Task(app_id = 1, state = '0', info = task_info) task.app = app # Taskruns will be assigned randomly to a signed user or an anonymous one if random.randint(0,1) == 1: task_run = model.TaskRun( app_id = 1, task_id = 1, user_id = 1, info = task_run_info) task_run.user = user else: task_run = model.TaskRun( app_id = 1, task_id = 1, user_ip = '127.0.0.1', info = task_run_info) task_run.task = task model.Session.add_all([task, task_run]) model.Session.commit() model.Session.remove()
def create_users(cls): user = model.User(email_addr=cls.email_addr, name=cls.name, passwd_hash=cls.password, fullname=cls.fullname, api_key=cls.api_key) user2 = model.User(email_addr=cls.email_addr2, name=cls.name2, passwd_hash=cls.password + "2", fullname=cls.fullname2, api_key=cls.api_key_2) return user, user2
def update_profile(): form = UpdateProfileForm(obj=current_user) form.set_locales(current_app.config['LOCALES']) form.populate_obj(current_user) if request.method == 'GET': title_msg = "Update your profile: %s" % current_user.fullname return render_template('account/update.html', title=title_msg, form=form) else: form = UpdateProfileForm(request.form) form.set_locales(current_app.config['LOCALES']) if form.validate(): new_profile = model.User(id=form.id.data, fullname=form.fullname.data, name=form.name.data, email_addr=form.email_addr.data, locale=form.locale.data, ckan_api=form.ckan_api.data) db.session.query(model.User)\ .filter(model.User.id == current_user.id)\ .first() db.session.merge(new_profile) db.session.commit() flash(gettext('Your profile has been updated!'), 'success') return redirect(url_for('.profile')) else: flash(gettext('Please correct the errors'), 'error') title_msg = 'Update your profile: %s' % current_user.fullname return render_template('/account/update.html', form=form, title=title_msg)
def update_profile(): form = UpdateProfileForm(obj=current_user) form.populate_obj(current_user) if request.method == 'GET': return render_template('account/update.html', title="Update your profile: %s" % current_user.fullname, form=form) else: form = UpdateProfileForm(request.form) if form.validate(): new_profile = model.User( id=form.id.data, fullname=form.fullname.data, name=form.name.data, email_addr=form.email_addr.data ) db.session.query(model.User)\ .filter(model.User.id == current_user.id)\ .first() db.session.merge(new_profile) db.session.commit() flash('Your profile has been updated!', 'success') return redirect(url_for('.profile')) else: flash('Please correct the errors', 'error') return render_template('/account/update.html', form=form, title='Update your profile: %s' % current_user.fullname)
def manage_user(access_token, user_data, next_url): """Manage the user after signin""" user = db.session.query(model.User)\ .filter_by(facebook_user_id=user_data['id']).first() if user is None: facebook_token = dict(oauth_token=access_token) info = dict(facebook_token=facebook_token) user = db.session.query(model.User)\ .filter_by(name=user_data['username']).first() # NOTE: Sometimes users at Facebook validate their accounts without # registering an e-mail (see this http://stackoverflow.com/a/17809808) email = None if user_data.get('email'): email = db.session.query(model.User)\ .filter_by(email_addr=user_data['email']).first() if user is None and email is None: if not user_data.get('email'): user_data['email'] = "None" user = model.User(fullname=user_data['name'], name=user_data['username'], email_addr=user_data['email'], facebook_user_id=user_data['id'], info=info) db.session.add(user) db.session.commit() return user else: return None else: return user
def manage_user(access_token, user_data, next_url): """Manage the user after signin""" # Twitter API does not provide a way # to get the e-mail so we will ask for it # only the first time user = db.session.query(model.User)\ .filter_by(twitter_user_id=user_data['user_id'])\ .first() if user is not None: return user twitter_token = dict(oauth_token=access_token['oauth_token'], oauth_token_secret=access_token['oauth_token_secret']) info = dict(twitter_token=twitter_token) user = db.session.query(model.User)\ .filter_by(name=user_data['screen_name'])\ .first() if user is not None: return None user = model.User(fullname=user_data['screen_name'], name=user_data['screen_name'], email_addr=user_data['screen_name'], twitter_user_id=user_data['user_id'], info=info) db.session.add(user) db.session.commit() return user
def manage_user(access_token, user_data, next_url): """Manage the user after signin""" user = db.session.query(model.User)\ .filter_by(facebook_user_id=user_data['id']).first() if user is None: facebook_token = dict(oauth_token=access_token) info = dict(facebook_token=facebook_token) user = db.session.query(model.User)\ .filter_by(name=user_data['username']).first() email = db.session.query(model.User)\ .filter_by(email_addr=user_data['email']).first() if user is None and email is None: user = model.User(fullname=user_data['name'], name=user_data['username'], email_addr=user_data['email'], facebook_user_id=user_data['id'], info=info) db.session.add(user) db.session.commit() return user else: return None else: return user
def manage_user(access_token, user_data, next_url): """Manage the user after signin""" # We have to store the oauth_token in the session to get the USER fields user = db.session.query(model.User)\ .filter_by(google_user_id=user_data['id'])\ .first() # user never signed on if user is None: google_token = dict(oauth_token=access_token) info = dict(google_token=google_token) user = db.session.query(model.User)\ .filter_by(fullname=user_data['name'])\ .first() email = db.session.query(model.User)\ .filter_by(email_addr=user_data['email'])\ .first() if user is None and email is None: user = model.User(fullname=user_data['name'], name=user_data['name'], email_addr=user_data['email'], google_user_id=user_data['id'], info=info) db.session.add(user) db.session.commit() return user else: return None else: return user
def fixtures(): '''Create some fixtures!''' user = model.User(name=u'tester', email_addr=u'*****@*****.**', api_key='tester') user.set_password(u'tester') db.session.add(user) db.session.commit()
def oauth_authorized(resp): next_url = request.args.get('next') or url_for('home') if resp is None: flash(u'You denied the request to sign in.', 'error') flash( u'Reason: ' + request.args['error_reason'] + ' ' + request.arts['error_description'], 'error') return redirect(next_url) # We have to store the oauth_token in the session to get the USER fields session['oauth_token'] = (resp['access_token'], '') me = facebook.oauth.get('/me') user = db.session.query(model.User)\ .filter_by(facebook_user_id=me.data['id']).first() # user never signed on first_login = False if user is None: first_login = True facebook_token = dict(oauth_token=resp['access_token']) info = dict(facebook_token=facebook_token) user = db.session.query(model.User)\ .filter_by(name=me.data['username']).first() email = db.session.query(model.User)\ .filter_by(email_addr=me.data['email']).first() if user is None and email is None: user = model.User(fullname=me.data['name'], name=me.data['username'], email_addr=me.data['email'], facebook_user_id=me.data['id'], info=info) db.session.add(user) db.session.commit() else: flash( u'Sorry, there is already an account with the same user name' 'or email.', 'error') flash(u'You can create a new account and sign in', 'info') return redirect(url_for('account.register')) login_user(user, remember=True) flash("Welcome back %s" % user.fullname, 'success') request_email = False if (user.email_addr == "None"): request_email = True if request_email: if first_login: flash("This is your first login, please add a valid e-mail") else: flash("Please update your e-mail address in your profile page") return redirect(url_for('account.update_profile')) return redirect(next_url)
def fixtures(): '''Create some fixtures!''' dburi = web.app.config['SQLALCHEMY_DATABASE_URI'] engine = model.create_engine(dburi) model.set_engine(engine) user = model.User(name=u'tester', email_addr=u'*****@*****.**', api_key='tester') user.set_password(u'tester') model.Session.add(user) model.Session.commit()
def oauth_authorized(resp): """Called after authorization. After this function finished handling, the OAuth information is removed from the session again. When this happened, the tokengetter from above is used to retrieve the oauth token and secret. Because the remote application could have re-authorized the application it is necessary to update the values in the database. If the application redirected back after denying, the response passed to the function will be `None`. Otherwise a dictionary with the values the application submitted. Note that Twitter itself does not really redirect back unless the user clicks on the application name. """ next_url = request.args.get('next') or url_for('home') if resp is None: flash(u'You denied the request to sign in.', 'error') return redirect(next_url) user = model.Session.query( model.User).filter_by(twitter_user_id=resp['user_id']).first() # user never signed on # Twitter API does not provide a way to get the e-mail so we will ask for it # only the first time request_email = False first_login = False if user is None: request_email = True first_login = True twitter_token = dict(oauth_token=resp['oauth_token'], oauth_token_secret=resp['oauth_token_secret']) info = dict(twitter_token=twitter_token) user = model.User(fullname=resp['screen_name'], name=resp['screen_name'], email_addr='None', twitter_user_id=resp['user_id'], info=info) model.Session.add(user) model.Session.commit() login_user(user, remember=True) flash("Welcome back %s" % user.fullname, 'success') if (user.email_addr == "None"): request_email = True if request_email: if first_login: flash("This is your first login, please add a valid e-mail") else: flash("Please update your e-mail address in your profile page") return redirect(url_for('account.update_profile')) return redirect(next_url)
def register(): # TODO: re-enable csrf form = RegisterForm(request.form, csrf_enabled=False) if request.method == 'POST' and form.validate(): account = model.User(fullname=form.fullname.data, name=form.username.data, email_addr=form.email_addr.data) account.set_password(form.password.data) model.Session.add(account) model.Session.commit() login_user(account, remember=True) flash('Thanks for signing-up', 'success') return redirect(url_for('home')) if request.method == 'POST' and not form.validate(): flash('Please correct the errors', 'error') return render_template('account/register.html', title="Register", form=form)
def manage_user(access_token, user_data, next_url): """Manage the user after signin""" # We have to store the oauth_token in the session to get the USER fields user = db.session.query(model.User)\ .filter_by(google_user_id=user_data['id'])\ .first() # user never signed on if user is None: google_token = dict(oauth_token=access_token) info = dict(google_token=google_token) user = db.session.query(model.User)\ .filter_by(name=user_data['name'].encode('ascii', 'ignore') .lower().replace(" ", ""))\ .first() email = db.session.query(model.User)\ .filter_by(email_addr=user_data['email'])\ .first() if ((user is None) and (email is None)): user = model.User(fullname=user_data['name'], name=user_data['name'].encode( 'ascii', 'ignore').lower().replace(" ", ""), email_addr=user_data['email'], google_user_id=user_data['id'], info=info) db.session.add(user) db.session.commit() return user else: return None else: # Update the name to fit with new paradigm to avoid UTF8 problems if type(user.name) == unicode or ' ' in user.name: user.name = user.name.encode('ascii', 'ignore').lower().replace(" ", "") db.session.add(user) db.session.commit() return user
def register(): """ Register method for creating a PyBossa account. Returns a Jinja2 template """ # TODO: re-enable csrf form = RegisterForm(request.form) if request.method == 'POST' and form.validate(): account = model.User(fullname=form.fullname.data, name=form.username.data, email_addr=form.email_addr.data) account.set_password(form.password.data) account.locale = get_locale() db.session.add(account) db.session.commit() login_user(account, remember=True) flash(gettext('Thanks for signing-up'), 'success') return redirect(url_for('home')) if request.method == 'POST' and not form.validate(): flash(gettext('Please correct the errors'), 'error') return render_template('account/register.html', title=gettext("Register"), form=form)