def create(self, data):
     """
     Tao nguoi dung moi
     :param data:
     :return:
     """
     if not isinstance(data, dict):
         return
     if not 'email' in data and not 'password' in data:
         return
     try:
         print("first===========>")
         exist_user = User.query.filter_by(email=data['email']).first()
         print("second===========>")
         if not exist_user:
             user = self._parse_user(data=data, user=None)
             db.session.add(user)
             db.session.commit()
             return result(
                 message='Create user successfully',
                 data=marshal(user, UserDto.model)
             )  # True, user  # send_result(message='Create user successfully', data=marshal(user, UserDto.model_auth))
         else:
             return error(
                 message='User exists'
             )  # False, None  # send_error(message='User already exists')
     except Exception as e:
         print(e.__str__())
         return error(message='Could not create user. Check again.'
                      )  # False, None  # send_error(message=e)
예제 #2
0
def default_error_handler(e):
    message = "An unhandled exception occured."
    logger.exception(message)
    print("=== Error: {}".format(e))

    if app.config.get("DEBUG", False):
        return error(e, status=status.ERROR_SERVER)
    else:
        return error(message, status=status.ERROR_SERVER)
예제 #3
0
 def delete(self, data):
     try:
         comment = Comment.query.filter_by(commentID=data['commentID']).first()
         if not comment:
             return error(message='Comment not found')
         else:
             db.session.delete(comment)
             db.session.commit()
             return result(message='Delete comment successfully')
     except Exception as e:
         return error(message=e)
 def logout_user(data):
     if data:
         auth_token = data.split(" ")[1]
     else:
         auth_token = ''
     if auth_token:
         resp = User.decode_auth_token(auth_token)
         if not isinstance(resp, str):
             return save_token(token=auth_token)
         else:
             return error(message=resp)
     else:
         return error(message='Provide a valid auth token')
예제 #5
0
 def create(self, data):
     if not isinstance(data, dict):
         return error(message='Check data format!')
     if not 'order_id' in data:
         return error(message="Data does not consist information of buyer.")
     try:
         product = self._parse_product(data=data)
         db.session.add(product)
         db.session.commit()
         return product
         # return send_result(message="Create products successfully!")
     except Exception as e:
         # return send_error(message="Could not create product!")
         print(e.__str__())
         return None
 def search(self, args):
     if args is None or not isinstance(args, dict):
         return error(
             data=None,
             message=
             'Could not search over your criteria. Please check again.')
     geo_long, geo_lat, country, city, street, max_distance, mode = None, None, None, None, None, None, None
     if 'geo_long' in args:
         geo_long = args['geo_long']
     if 'geo_lat' in args:
         geo_lat = args['geo_lat']
     if 'country' in args:
         country = args['country']
     if 'city' in args:
         city = args['city']
     if 'street' in args:
         street = args['street']
     if 'max_distance' in args:
         max_distance = args['max_distance']
     if 'mode' in args:
         mode = args['mode']
     if geo_long is not None and geo_lat is not None and max_distance is not None:
         users = self._get_by_geo(geo_long=geo_long,
                                  geo_lat=geo_lat,
                                  max_distance=max_distance,
                                  mode=mode)
     else:
         users = self._get_by_address(country=country,
                                      city=city,
                                      street=street)
     return result(data=marshal(users, UserDto.model))  # users
 def delete(self, user_id):
     try:
         user = User.query.filter_by(user_id=user_id).first()
         if not user:
             return error(message='User not found'
                          )  # False  # send_error(message='User not found')
         else:
             db.session.delete(user)
             db.session.commit()
             return result(
                 message='User was deleted'
             )  # True  # send_result(message='Delete user successfully')
     except Exception as e:
         print(e.__str__())
         return error(message='Could not delete user'
                      )  # False  # send_error(message=e)
 def get_list_blocked_user(self):
     try:
         list_blocked_user = User.query.filter_by(isblocked=True).all()
         return result(data=marshal(list_blocked_user, UserDto.model))
     except Exception as e:
         print(e.__str__())
         return error(message='Could not load list blocked users')
 def update(self, object_id, data):
     try:
         user = User.query.filter_by(user_id=object_id).first()
         if not user:
             return error(message='User not found'
                          )  # False  # send_error(message='User not found')
         else:
             user = self._parse_user(data=data, user=user)
             db.session.commit()
             return result(
                 message='Update successfully',
                 data=marshal(user, UserDto.model)
             )  # True  # send_result(message='Update user successfully', data=marshal(user, UserDto.model_auth))
     except Exception as e:
         print(e.__str__())
         return error(message='Could not update user'
                      )  # False  # send_error(message=e)
예제 #10
0
    def login_user(data, ip):
        print('~~~ [login_user] ip', ip)
        try:
            login_attempt = LoginAttempts.query.filter_by(ip=ip).first()
            if login_attempt is not None:
                # print('\t ******* login_attempt', login_attempt, login_attempt.failed_login_attempts)
                time_delt = delta_time(datetime.datetime.now(),
                                       login_attempt.failed_login_time)
                if login_attempt.failed_login_attempts == 3 and time_delt < 3:
                    print('\t ******* ERROR', login_attempt,
                          login_attempt.failed_login_attempts)
                    return error(
                        message=
                        'You\'ve reached limit tries. Please try again in {} minutes.'
                        .format(round(3 - time_delt, 2)))

            # user = User.query.filter_by(email=cf.sanitize_data(data.get('email'))).first()
            user = User.query.filter_by(email=data.get('email')).first()
            print("data.get('password')", data.get('password'))
            if user and user.check_password(data.get('password')):
                auth_token = User.encode_auth_token(user.user_id)
                if user.blocked:
                    return error(message='User has been blocked')
                if auth_token:
                    return result(message='Successfully logged in',
                                  data={'Authorization': auth_token.decode()})
            else:
                # ControllerUser.update()
                if login_attempt is None:
                    # insert login_attempt of this ip
                    ip_login_attempt = LoginAttempts(ip=ip)
                    db.session.add(ip_login_attempt)
                    db.session.commit()
                else:
                    if delta_time(datetime.datetime.now(),
                                  login_attempt.failed_login_time) > 3:
                        login_attempt.failed_login_attempts = 1
                    else:
                        login_attempt.failed_login_attempts += 1
                        # print('\t ****** modify! login_attempt.failed_login_attempts', login_attempt.failed_login_attempts)
                    login_attempt.failed_login_time = datetime.datetime.now()
                    db.session.commit()
                return error(message='Email or Password does not match')
        except Exception as e:
            return error(message=e)
def save_token(token):
    blacklist_token = BlacklistToken(token=token)
    try:
        # insert token
        db.session.add(blacklist_token)
        db.session.commit()
        return result(message='Successfully logged out.')
    except Exception as e:
        return error(message=e)
예제 #12
0
 def get_logged_user(new_request):
     auth_token = new_request.headers.get('Authorization')
     if auth_token:
         auth_token = auth_token.split(' ')[1]
         resp = User.decode_auth_token(auth_token)
         if not isinstance(resp, str):
             user = User.query.filter_by(user_id=resp).first()
             print(user)
             res = {
                 'user_id': user.user_id,
                 'email': user.email,
                 'role': user.role,
                 'name': user.name
             }
             return result(data=res)
         return error(message=resp)
     else:
         return error(message='Provide a valid auth token')
예제 #13
0
    def decorated(*args, **kwargs):
        print('[admin_token_required] request', request)
        data, status = ControllerAuth.get_logged_user(request)
        token = data.get('data')

        if not token:
            return data, status

        role = token.get('role')
        if role != 3:
            return error('Admin token required')

        return f(*args, **kwargs)
예제 #14
0
 def get(self):
     try:
         list_comment = Comment.query.all()
         list_comment = marshal(list_comment, DtoComment.comment)
         # shipper = User.query.filter_by(userID=data['userID']).first()
         for x in list_comment:
             shipper = User.query.filter_by(userID=x['shipperID']).first().name
             orderer = User.query.filter_by(userID=x['ordererID']).first().name
             x['shipperName'] = shipper
             x['ordererName'] = orderer
         return result(data=list_comment)
     except Exception as e:
         return error(message=e)
 def get(self):
     """
     Return all users in database
     :return:
     """
     try:
         users = User.query.all()
         return result(data=marshal(users, UserDto.model))
         # return users
     except Exception as e:
         print(e.__str__())
         return error(message='Could not load users.'
                      )  # None  # send_error(message=e)
예제 #16
0
    def post(self, item):
        try:
            parsed = parser.parse_args()
        except:
            return resp.error("model_name, start_date, end_date must be specified")

        print parsed

        if item not in PortfolioPerformance.__available_item_list:
            return resp.error("Invalid item: {} ({})".format(item, PortfolioPerformance.__available_item_list))

        with h5py.File(os.path.join(app.root_path, "tmp/sample.h5")) as h5:
            date_list = h5["date_list"][:].tolist()
            try:
                start_index = date_list.index(parsed.start_date)
                end_index = date_list.index(parsed.end_date)
            except:
                return resp.error("Invalid date: {}, {}".format(parsed.start_date, parsed.end_date))

            date_list = date_list[start_index:end_index+1]
            print start_index, end_index
 
            if item == "return":
                value_list = h5["performance/{}/pnl".format(parsed.model_name)][0][start_index:end_index+1] / 20e6
            elif item == "tvr":
                value_list = h5["performance/{}/tvr".format(parsed.model_name)][start_index:end_index+1]
            elif item == "cum_return":
                value_list = h5["performance/{}/pnl".format(parsed.model_name)][start_index:end_index+1] / 20e6
                value_list[~np.isfinite(value_list)] = 0.0
                value_list[0] = 0.0
                value_list = np.cumsum(value_list)
            else:
                raise NotImplementedError
             
            return resp.sucess({
                "date_list": date_list,
                "value_list": value_list
            })
예제 #17
0
 def create(self, data):
     try:
         comment = Comment(
             content=data['content'],
             rate=data['rate'],
             ordererID=data['ordererID'],
             shipperID=data['shipperID'],
             time=datetime.datetime.utcnow()
         )
         db.session.add(comment)
         db.session.commit()
         return result(message='Create comment successfully', data=marshal(comment, DtoComment.comment))
     except Exception as e:
         return error(message=e)
 def get_by_id(self, user_id):
     user = User.query.filter_by(user_id=user_id).first()
     if user is None:
         return error(data="Could not find user by this id")
     else:
         role = user.role
         if role.__eq__('user'):
             pass
         if role.__eq__('buyer'):
             buyer_id = get_id(user_id=user.user_id, role=role)
             user.buyer_id = buyer_id
         if role.__eq__('supplier'):
             supplier_id = get_id(user_id=user.user_id, role=role)
             user.supplier_id = supplier_id
         return result(data=marshal(user, UserDto.model))  # user
 def login_user(data):
     try:
         user = User.query.filter_by(email=data.get('email')).first()
         if user and user.check_password(data.get('password')):
             auth_token = User.encode_auth_token(user.user_id)
             if user.blocked:
                 return None  # error(message='User has been blocked')
             if auth_token:
                 role = user.role
                 if role.__eq__('user'):
                     pass
                 if role.__eq__('buyer'):
                     buyer_id = get_id(user_id=user.user_id, role=role)
                     print("I am here", buyer_id)
                     user.buyer_id = buyer_id
                 if role.__eq__('supplier'):
                     supplier_id = get_id(user_id=user.user_id, role=role)
                     user.supplier_id = supplier_id
                 return user  # result(message='Successfully logged in', data={'Authorization': auth_token.decode()})
         else:
             return None  # error(message='Email or Password does not match')
     except Exception as e:
         return error(message=e)