예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
 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
예제 #4
0
 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
예제 #5
0
 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
예제 #6
0
    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
예제 #7
0
 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