def test_create_user_should_return_token(self): resp = self.simulate_post('/user') self.assertIn('token', resp.json) token = resp.json.get('token') hash = UserModel.generate_token_hash(token) user = UserModel.get(UserModel.token_hash == hash) self.assertEqual(user.token_hash, hash)
def get_user_by_id(user_id): """ This method will get a user model by level id, if we don't have this user, it will create one @param user_id: id of the user we are looking for @return: userModel of the model we are looking for """ user = UserModel.query(UserModel.user_id == user_id).get() # if we haven't had this user before, add it if user is None: user = UserModel(user_id=user_id) return user
def save_user(self): user_name = self.request.get('user_name') height = self.request.get('height') birthday = self.request.get('birthday') birthday = datetime.strptime(birthday, '%Y-%m-%d').date() user1 = UserModel.get_by_id('user1') user1.user_name = user_name user1.height = int(height) user1.birthday = birthday user1.put()
def get(self): # ------------------------------------------ # ユーザー1の情報を得る # ------------------------------------------ user1 = UserModel.get_by_id('user1') self.set_template_value('user1', user1) # ------------------------------------------ # Search API検索 # ------------------------------------------ user_name = self.request.get('user_name') height = self.request.get('height') birthday1 = self.request.get('birthday1') birthday2 = self.request.get('birthday2') queries = list() if user_name: queries.append(u"user_name = {0}".format(user_name)) if height: queries.append(u"height = {0}".format(height)) if birthday1: queries.append(u"birthday >= {0}".format(birthday1)) if birthday2: queries.append(u"birthday <= {0}".format(birthday2)) query = '' if queries: query = ' AND '.join(queries) index = search.Index('UserIndex') results = index.search(query) self.set_template_value('results', results) self.draw_template('front/search_api/top.html') return
def delete(cls, user_id): user = UserModel.find_by_id(user_id) if not user: return {'message': 'User not found'}, 404 user.delete_from_db() return {'message': 'User deleted'}
def get(cls, user_id): user = UserModel.find_by_id(user_id) if not user: return {'message': 'User not found'}, 404 return user.json()
def identity(payload): user_id = payload['identity'] return UserModel.find_by_id(user_id)
def authenticate(username, password): user = UserModel.find_by_username(username) if user and check_hashed_password(password, user.password): return user
def authenticate(username, password): user = UserModel.find_by_username(username) if user and safe_str_cmp(user.password, password): return user
def update(event, context): """ userの更新 updateでの更新対象はemail, name, phoneNumberのみ """ try: logger.info(event) if not (event['body'] and event['pathParameters']): raise errors.BadRequest('Bad request') data = json.loads(event['body']) # dataから不要なattributeを削除 data = { k: v for k, v in data.items() if k in ['name', 'email', 'phoneNumber'] } if not data: raise errors.BadRequest('Bad request') user_id = event['pathParameters']['id'] # user_idがauthorized_userのものか検証 if user_id != event['requestContext']['authorizer']['authorizedUserId']: raise errors.ForbiddenError('Access denied') # userが存在するか try: user = UserModel.get(user_id) except UserModel.DoesNotExist as e: raise errors.NotFound('This user does not exist') if 'name' in data: user.name = data['name'] if 'email' in data: user.email = data['email'] if 'phoneNumber' in data: user.phoneNumber = data['phoneNumber'] # userの更新 try: user.save() except InvalidNameError as e: logger.exception(e) raise errors.BadRequest(str(e.with_traceback(sys.exc_info()[2]))) except InvalidPhoneNumberError as e: logger.exception(e) raise errors.BadRequest(str(e.with_traceback(sys.exc_info()[2]))) except InvalidEmailError as e: logger.exception(e) if str(e.with_traceback( sys.exc_info()[2])) == 'This email has been registered': raise errors.UnprocessableEntity( str(e.with_traceback(sys.exc_info()[2]))) else: raise errors.BadRequest( str(e.with_traceback(sys.exc_info()[2]))) except PutError as e: logger.exception(e) raise errors.InternalError('Internal server error') return { 'statusCode': 200, 'headers': { 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json' }, 'body': json.dumps({ 'statusCode': 200, 'user': dict(user) }) } except errors.BadRequest as e: logger.exception(e) return build_response(e, 400) except errors.ForbiddenError as e: logger.exception(e) return build_response(e, 403) except errors.NotFound as e: logger.exception(e) return build_response(e, 404) except errors.UnprocessableEntity as e: logger.exception(e) return build_response(e, 409) except errors.InternalError as e: logger.exception(e) return build_response(e, 500)