Example #1
0
def user_info():
    email, api_key, err_response = auth_request_get_single_param(db, "email")
    if err_response:
        return err_response
    if not email:
        email = api_key.user.email
    else:
        email = email.lower()
    user = User.from_email(db.session, email)
    if not user:
        time.sleep(5)
        return bad_request(web_utils.AUTH_FAILED)
    if user == api_key.user:
        balance = paydb_core.user_balance(db.session, api_key)
        roles = [role.name for role in api_key.user.roles]
        perms = [perm.name for perm in api_key.permissions]
        return jsonify(
            dict(email=user.email,
                 balance=balance,
                 photo=user.photo,
                 photo_type=user.photo_type,
                 roles=roles,
                 permissions=perms))
    return jsonify(
        dict(email=user.email,
             balance=-1,
             photo=user.photo,
             photo_type=user.photo_type,
             roles=[],
             permissions=[]))
def referral_claim():
    if not use_referrals:
        return bad_request(web_utils.NOT_AVAILABLE)
    token, api_key, err_response = auth_request_get_single_param(db, "token")
    if err_response:
        return err_response
    if not api_key.user.has_role(
            Role.ROLE_ADMIN) and not api_key.user.has_role(
                Role.ROLE_REFERRAL_CLAIMER):
        return bad_request(web_utils.UNAUTHORIZED)
    ref = Referral.from_token(db.session, token)
    if not ref:
        return bad_request(web_utils.NOT_FOUND)
    if ref.status != ref.STATUS_CREATED:
        return bad_request(web_utils.NOT_FOUND)
    # send referral rewards
    category = Category.from_name(db.session, Category.CATEGORY_REFERRAL)
    if not category:
        return bad_request(web_utils.INVALID_CATEGORY)
    if ref.reward_sender <= 0:
        return bad_request(web_utils.INVALID_AMOUNT)
    if ref.reward_recipient_type == ref.REWARD_TYPE_FIXED and ref.reward_recipient <= 0:
        return bad_request(web_utils.INVALID_AMOUNT)
    reason = f'{ref.token}: reward for referral'
    _reward_create(api_key.user, reason, category, ref.recipient,
                   ref.reward_sender, 'Thank you for referring a friend')
    if ref.reward_recipient_type == ref.REWARD_TYPE_FIXED:
        _reward_create(api_key.user, reason, category, ref.recipient,
                       ref.reward_recipient, 'Thank you for using our service')
    ref.status = ref.STATUS_CLAIMED
    db.session.add(ref)
    db.session.commit()
    return jsonify(dict(referral=ref.to_json()))
def referral_create():
    if not use_referrals:
        return bad_request(web_utils.NOT_AVAILABLE)
    recipient, api_key, err_response = auth_request_get_single_param(
        db, "recipient")
    if err_response:
        return err_response
    if not utils.is_email(recipient):
        return bad_request(web_utils.INVALID_EMAIL)
    recipient = recipient.lower()
    user = User.from_email(db.session, recipient)
    if user:
        time.sleep(5)
        return bad_request(web_utils.USER_EXISTS)
    reward_sender_type = app.config["REFERRAL_REWARD_TYPE_SENDER"]
    reward_sender = app.config["REFERRAL_REWARD_SENDER"]
    reward_recipient_type = app.config["REFERRAL_REWARD_TYPE_RECIPIENT"]
    reward_recipient = app.config["REFERRAL_REWARD_RECIPIENT"]
    recipient_min_spend = app.config["REFERRAL_RECIPIENT_MIN_SPEND"]
    ref = Referral(api_key.user, recipient, reward_sender_type, reward_sender,
                   reward_recipient_type, reward_recipient,
                   recipient_min_spend)
    utils.email_referral(logger, ref)
    db.session.add(ref)
    db.session.commit()
    return 'ok'
Example #4
0
def transaction_info():
    token, api_key, err_response = auth_request_get_single_param(db, "token")
    if err_response:
        return err_response
    tx = PayDbTransaction.from_token(db.session, token)
    if not tx:
        return bad_request(web_utils.INVALID_TX)
    if tx.sender != api_key.user and tx.recipient != api_key.user:
        return bad_request(web_utils.UNAUTHORIZED)
    return jsonify(dict(tx=tx.to_json()))
def referral_remind():
    if not use_referrals:
        return bad_request(web_utils.NOT_AVAILABLE)
    token, api_key, err_response = auth_request_get_single_param(db, "token")
    if err_response:
        return err_response
    ref = Referral.from_token_user(db.session, token, api_key.user)
    if not ref:
        return bad_request(web_utils.NOT_FOUND)
    if ref.status != ref.STATUS_CREATED:
        return bad_request(web_utils.NOT_FOUND)
    utils.email_referral(logger, ref)
    return 'ok'
Example #6
0
def user_update_email():
    email, api_key, err_response = auth_request_get_single_param(db, "email")
    if err_response:
        return err_response
    if not email:
        return bad_request(web_utils.INVALID_EMAIL)
    email = email.lower()
    user = User.from_email(db.session, email)
    if user:
        time.sleep(5)
        return bad_request(web_utils.USER_EXISTS)
    req = UserUpdateEmailRequest(api_key.user, email)
    utils.email_user_update_email_request(logger, req, req.MINUTES_EXPIRY)
    db.session.add(req)
    db.session.commit()
    return 'ok'
def referral_validate():
    if not use_referrals:
        return bad_request(web_utils.NOT_AVAILABLE)
    token, api_key, err_response = auth_request_get_single_param(db, "token")
    if err_response:
        return err_response
    if not api_key.user.has_role(
            Role.ROLE_ADMIN) and not api_key.user.has_role(
                Role.ROLE_REFERRAL_CLAIMER):
        return bad_request(web_utils.UNAUTHORIZED)
    ref = Referral.from_token(db.session, token)
    if not ref:
        return bad_request(web_utils.NOT_FOUND)
    if ref.status != ref.STATUS_CREATED:
        return bad_request(web_utils.NOT_FOUND)
    return jsonify(dict(referral=ref.to_json()))