Пример #1
0
 def post(self):
     post_data = request.get_json()
     if not post_data:
         return UTILS.api_response(msg=UTILS.INVALID_PAYLD,
                                   code=400,
                                   data=self.__name__)
     name = post_data.get('name')
     capital = post_data.get('capital')
     date_str = post_data.get('date')
     date = datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%S.%f%z')
     try:
         call = CapitalCall.query \
             .filter_by(name=name) \
             .first()
         if not call:
             call_i = UTILS.add_capitalcall(name, capital, date=date)
             return UTILS.api_response(msg=UTILS.ADDED(TYPE, name),
                                       code=201,
                                       data=call_i.to_json())
         else:
             return UTILS.api_response(msg=UTILS.EXISTS(TYPE, name),
                                       code=400,
                                       data=call.to_json())
     except exc.IntegrityError as e:
         db.session.rollback()
         return UTILS.api_response(
             msg=f'{UTILS.INTEGRITY_ERR} {self.__name__}',
             code=400,
             data=f'{str(e)}')
Пример #2
0
 def put(self, fund_id):
     put_data = request.get_json()
     if not put_data:
         return UTILS.api_response(msg=UTILS.INVALID_PAYLD, code=400)
     name = put_data.get('name')
     try:
         fund = Fund.query.get(fund_id)
         existingFunds = Fund.query.filter_by(name=name).first()
         if existingFunds:
             return UTILS.api_response(msg=UTILS.EXISTS(TYPE, name),
                                       code=400,
                                       data=existingFunds.to_json())
         if fund:
             fund = UTILS.update(fund, 'name', name)
             return UTILS.api_response(msg=UTILS.UPDATED(TYPE, name),
                                       code=200,
                                       data=fund.to_json())
         else:
             return UTILS.api_response(
                 msg=UTILS.NOT_EXISTS(TYPE, fund_id),
                 code=404,
             )
     except exc.IntegrityError as e:
         db.session.rollback()
         return UTILS.api_response(
             msg=f'{UTILS.INTEGRITY_ERR} {self.__name__}',
             code=400,
             data=f'{str(e)}')
Пример #3
0
 def test_update_fund_no_change(self):
     """Ensure correct response recieved for no change to updated fund"""
     fund = UTILS.add_fund('fund_1')
     with self.client as client:
         response = client.put(
             f'/funds/{fund.id}',
             data=json.dumps({
                 'name': 'fund_1',
             }),
             content_type='application/json',
         )
         data = json.loads(response.data.decode())
         self.assertEqual(response.status_code, 400)
         self.assertIn(UTILS.EXISTS(TYPE, 'fund_1'), data['message'])
Пример #4
0
 def test_update_capitalcall_duplicate_name(self):
     """Ensure error is thrown if the updated capitalcall already exists."""
     capitalcall_1 = UTILS.add_capitalcall('investment_1', 100)
     capitalcall_2 = UTILS.add_capitalcall('investment_2', 100)
     with self.client as client:
         response = client.put(
             f'/capitalcalls/{capitalcall_2.id}',
             data=json.dumps({'name': 'investment_1'}),
             content_type='application/json',
         )
         data = json.loads(response.data.decode())
         self.assertEqual(response.status_code, 400)
         self.assertIn(UTILS.EXISTS(TYPE, 'investment_1'), data['message'])
         self.assertIn('fail', data['status'])
         self.assertEqual(capitalcall_1.id, data["data"]["id"])
Пример #5
0
 def test_update_fund_duplicate_name(self):
     """Ensure error is thrown if the updated fund already exists."""
     fund_1 = UTILS.add_fund("fund_1")
     fund_2 = UTILS.add_fund("fund_!")
     with self.client as client:
         response = client.put(
             f'/funds/{fund_2.id}',
             data=json.dumps({
                 'name': 'fund_1',
             }),
             content_type='application/json',
         )
         data = json.loads(response.data.decode())
         self.assertEqual(response.status_code, 400)
         self.assertIn(UTILS.EXISTS(TYPE, 'fund_1'), data['message'])
         self.assertIn('fail', data['status'])
         self.assertEqual(fund_1.id, data["data"]["id"])
Пример #6
0
 def put(self, capitalcall_id):
     put_data = request.get_json()
     if not put_data:
         return UTILS.api_response(msg=UTILS.INVALID_PAYLD, code=400)
     name = put_data.get('name')
     capital = put_data.get('capital')
     try:
         call = CapitalCall.query.get(capitalcall_id)
         existingCalls = CapitalCall.query \
             .filter_by(name=name).first()
         if existingCalls:
             return UTILS.api_response(msg=UTILS.EXISTS(TYPE, name),
                                       code=400,
                                       data=existingCalls.to_json())
         if call:
             if (capital and (capital == call.capital)):
                 return UTILS.api_response(msg=UTILS.NO_CHANGE(
                     TYPE, f'{call.name}'),
                                           code=400,
                                           data=call.to_json())
             if name:
                 call = UTILS.update(call, 'name', name)
             if capital:
                 call = UTILS.update(call, 'capital', capital)
             return UTILS.api_response(
                 msg=UTILS.UPDATED(TYPE, name),
                 code=200,
                 data=CapitalCall.query.get(capitalcall_id).to_json())
         else:
             return UTILS.api_response(
                 msg=UTILS.NOT_EXISTS(TYPE, capitalcall_id),
                 code=404,
             )
     except exc.IntegrityError as e:
         db.session.rollback()
         return UTILS.api_response(
             msg=f'{UTILS.INTEGRITY_ERR} {self.__name__}',
             code=400,
             data=f'{str(e)}')
Пример #7
0
 def post(self):
     post_data = request.get_json()
     if not post_data:
         return UTILS.api_response(msg=UTILS.INVALID_PAYLD,
                                   code=400,
                                   data=self.__name__)
     name = post_data.get('name')
     try:
         fund = Fund.query.filter_by(name=name).first()
         if not fund:
             fund = UTILS.add_fund(name)
             return UTILS.api_response(msg=UTILS.ADDED(TYPE, name),
                                       code=201,
                                       data=fund.to_json())
         else:
             return UTILS.api_response(msg=UTILS.EXISTS(TYPE, name),
                                       code=400,
                                       data=fund.to_json())
     except exc.IntegrityError as e:
         db.session.rollback()
         return UTILS.api_response(
             msg=f'{UTILS.INTEGRITY_ERR} {self.__name__}',
             code=400,
             data=f'{str(e)}')