def put(self, name): portfolio = PortfolioModel.find_by_name(name, get_jwt_identity()) if portfolio: # cache.delete_memoized(create_portfolio_tearsheet) try: data = self.get_data(additional_reqs={"name": str}) original_create_date = portfolio.date_created portfolio.delete_from_db() portfolio = self.create_portfolio(data['name'], data) portfolio.date_created = original_create_date except ValueError as e: return {"message": str(e)}, 500 except Exception as e: traceback.print_exc() return { "message": "An error occurred when updating the portfolio" }, 500 else: try: data = self.get_data() portfolio = self.create_portfolio(name, data) except: traceback.print_exc() return { "message": "An error occurred creating the portfolio" }, 500 portfolio.save_to_db() return portfolio.json(), 200
def post(self): data_parser = reqparse.RequestParser() data_parser.add_argument('compPortfolios', action='append', required=True, help="You must provide a list of portfolios") data_parser.add_argument("end") data_parser.add_argument("start") data = data_parser.parse_args() start = data['start'][:10] if data["start"] else None end = data['end'][:10] if data["end"] else None portfolios = [] for portfolio_name in data['compPortfolios']: portfolio = PortfolioModel.find_by_name(portfolio_name, get_jwt_identity()) if not portfolio: return { "message": "Portfolio by the name {} was not found".format( portfolio_name) }, 404 else: portfolios.append(portfolio) try: return create_comparison_tearsheet(portfolios, start, end) except Exception as e: traceback.print_exc() return {"message": "Oops, an error occurred on our end"}, 500
def get(self, name): portfolio = PortfolioModel.find_by_name(name, get_jwt_identity()) if portfolio: return portfolio.json(), 200 else: return { 'message': "Could not fund a portfolio with name '{}'".format(name) }, 404
def post(self, name): if PortfolioModel.find_by_name(name, get_jwt_identity()): return { 'message': "A portfolio with name '{}' already exists.".format(name) }, 400 try: data = self.get_data() portfolio = self.create_portfolio(name, data) except ValueError as e: return {"message": str(e)}, 500 except: traceback.print_exc() return { "message": "An error occurred when inserting a portfolio" }, 500 return portfolio.json(), 201
def post(self, portfolio_name): data_parser = reqparse.RequestParser() data_parser.add_argument("end") data_parser.add_argument("start") data = data_parser.parse_args() start = data['start'][:10] if data["start"] else None end = data['end'][:10] if data["end"] else None portfolio = PortfolioModel.find_by_name(portfolio_name, get_jwt_identity()) if portfolio: try: return create_portfolio_tearsheet(portfolio, start, end), 200 except Exception as e: traceback.print_exc() # return {"message": e}, 500 return {"message": "Oops, an error occurred on our end"}, 500 else: return { "message": "Portfolio by the name {} was not found".format(portfolio_name) }, 404
def post(self): """POST request that creates a new portfolio provided the correct data""" # if already exists if PortfolioModel.find_by_name(data['name']): return {'message': "An portfolio with name '{}' already exists.".format(data['name'])}, 400 # Parse the application/json data data = Portfolio.parser.parse_args() # We create the portfolio portfolio = PortfolioModel(**data) # we try to save and commit try: portfolio.save_to_db() except: # in case of error return {"message": "An error occurred inserting the portfolio."}, 500 # return a json return portfolio.json(), 201
def delete(self, name): portfolio = PortfolioModel.find_by_name(name, get_jwt_identity()) if portfolio: portfolio.delete_from_db() return {'message': 'Successfully deleted {}'.format(name)}, 200