def create_person(self): desc = json.loads(self.Message) globalId = desc['global_id'] data = util.edm.decode_changes('Person', desc['changes']) iso3 = data.pop('_countryIso3', None) if iso3: try: country = m.Country.query.filter(m.Country.iso3 == iso3).one() # country not found - create country from edm except sqlalchemy.orm.exc.NoResultFound: result = util.edm.get_country(iso3) country_data = dict( name=result['name_eng'], iso2=result['iso2'], iso3=iso3, isoNum=result['iso_num'], internet=result['internet'], active=result['active'], ) country = m.Country(**country_data) SS.add(country) data['countryId'] = country.countryId try: user = m.User.query.filter_by(emailAddress=data['emailAddress']).one() # user not found via email address - create user except sqlalchemy.orm.exc.NoResultFound: user = m.User(**data) user.globalId = globalId SS.add(user) current_app.logger.info('user {0} was created using {1}'.format( user.userId, data)) # user found via email address - apply updates else: for k, v in data.items(): if k == 'emailAddress': continue setattr(user, k, v) user.globalId = globalId current_app.logger.info('user {0} was updated using {1}'.format( user.userId, data)) current_app.logger.info("committing create_person changes") try: SS.commit() except (psycopg2.Error, sqlalchemy.exc.IntegrityError), e: current_app.logger.error( "error while committing create_person changes, rolling back: {0}". format(e)) SS.rollback() raise
def make_new_user(self, global_id): result = self.get_user_data(global_id) data = dict( familyName=result['family_name'], givenName=result['given_name'], emailAddress=result['primary_email_email_address'], globalId=result['global_id'], # TODO: add workerPaymentType once it is added to EDM response # workPaymentType=result[''], ) for _d in result.get('jkvp', []): if _d.has_key('worker_payment_type'): data['workerPaymentType'] = _d['worker_payment_type'] user = m.User(**data) return user
def sign_up(): """Makes POST request to create a new user in the db and initiative a new session""" new_email = request.form['email'] new_username = request.form['username'] new_password = request.form['password'] # check if this info matches a username already in the db existing_email = model.session.query( model.User).filter(model.User.email == new_email).count() existing_username = model.session.query( model.User).filter(model.User.username == new_username).count() if (existing_email == 0) and (existing_username == 0): # if the user is new to the db, # 1) add the new user to the db new_user = model.User(username=new_username, email=new_email, password=new_password) model.session.add(new_user) model.session.commit() model.session.refresh(new_user) logged_in_user = model.session.query(model.User).filter( model.User.username == new_username, model.User.password == new_password).one() # 2) add the user's info to the session session['username'] = logged_in_user.username session['user_id'] = logged_in_user.id session['logged_in'] = True return redirect("/welcome") elif existing_email and existing_username: credentials_error = True return render_template("index.html", credentials_error=credentials_error) elif existing_email: email_error = True return render_template("index.html", email_error=email_error) else: username_error = True return render_template("index.html", username_error=username_error)
# current_app.logger.info('retrieved user info {}'.format(userInfo)) email = userInfo['info']['email'] except Exception, e: return make_response( _('error retrieving user info {}').format(e), 500) # # search for user, if found, setup cookie try: me = m.User.query.filter(m.User.emailAddress == email).one() except NoResultFound: SS.rollback() # add user try: me = m.User(emailAddress=email, familyName=userInfo['extra']['last_name'], givenName=userInfo['extra']['first_name'], globalId=userInfo['extra']['global_id']) SS.add(me) SS.flush() except Exception, e: SS.rollback() current_app.logger.error( 'error creating new user: {}'.format(e)) return make_response( _('error creating new user {}').format(email), 500) try: result = util.tiger.get_user_roles(me.globalId) user_type = result['user']['role'] roles = result['project_user_roles'] caps = util.tiger.role2caps(user_type)
def create_user(): data = MyForm().get_data() user = m.User(**data) SS.add(user) SS.commit() return dict(value=m.User.dump(user), )
def add_user(): user = model.User(name='John Snow', password='******') session.add(user) session.commit() print(user.id) # None