Example #1
0
def complete_donation(id):
    amount = request.form['amount']
    payment_method_nonce = request.form['payment_method_nonce']
    image = Image.get_by_id(id)
    user = current_user
    result = transact({
        'amount': amount,
        'payment_method_nonce': payment_method_nonce,
        'options': {
            'submit_for_settlement': True
        }
    })

    if result.is_success or result.transaction:
        donation = Donation(amount=int(amount),
                            image_id=image.id,
                            user_id=user.id,
                            payment_status=True)
        donation.save()
        flash('Donation Successfully created!')
        image_user = User.get_by_id(image.user_id)
        send_email()
        return redirect(url_for('users.show', username_id=image_user.id))
    else:
        for x in result.errors.deep_errors:
            flash('Error: %s: %s' % (x.code, x.message))
        return render_template('donations/new.html',
                               img_id=image.id,
                               client_token=client_token)
Example #2
0
def payment():
    image = Image.get_by_id(request.form.get('image'))
    user = User.get_by_id(image.user_id)
    amount = request.form.get('amount')
    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": request.form.get('payment_method_nonce'),
        "options":{
            "submit_for_settlement": True
        }
    })
    message = Mail(
        from_email='*****@*****.**',
        to_emails=f'{user.email}',
        subject=f'{current_user.username} has donated to your photo',
        html_content=f'<strong>Congratulations!</strong><br>{current_user.username} has donated ${amount} to your photo. />')

    if result.is_success:
        donation = Donation(amount=amount, user_id=current_user.id, image_id=image.id)
        donation.save()
        try:
            sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
            sg.send(message)
            flash(f"Thank you for your donation", 'success')
        except Exception as e:
            flash(f"Thank you for your donation - email failure", "info")
            flash(e, "danger")
        return redirect(url_for('images.show', id=image.id))
    else:
        flash("Payment fail", "danger")
        return redirect(url_for('payments.new', id=image.id))
Example #3
0
def create_purchase():
    nonce_from_the_client = request.form["payment_method_nonce"]
    amount_paid = request.form['amount_paid']
    s = Donation(amount=amount_paid,
                 user=current_user.id,
                 image=request.form["image_id"])
    s.save()

    result = gateway.transaction.sale({
        "amount": amount_paid,
        "payment_method_nonce": nonce_from_the_client,
        "options": {
            "submit_for_settlement": True
        }
    })

    message = Mail(
        from_email='*****@*****.**',
        to_emails='*****@*****.**',
        subject='Sending with SendGrid is Fun',
        html_content=
        f'<strong>you donate{amount_paid}to nextagram.Thank you !</strong>')
    try:
        sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
        response = sg.send(message)
        print(response.status_code)
        print(response.body)
        print(response.headers)
    except Exception as e:
        print(e.message)
    return redirect(url_for('users.index'))
Example #4
0
def create_checkout(id):
    # receiver = Image.get(Image.id==id).user_id
    # image_name = Image.get(Image.id==id).image_name
    image = Image.get_by_id(id)
    receiver = User.get_by_id(image.user_id)
    amount = request.form.get('amount')
    nonce_from_the_client = request.form["payment_method_nonce"]
    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce_from_the_client,
        "options": {
            "submit_for_settlement": True
        }
    })

    if result.is_success and result.transaction:
        new_donation = Donation(amount=amount,
                                image_id=id,
                                donor_user_id=current_user.id)
        new_donation.save()
        email_notification(amount=amount,
                           receiver=receiver,
                           image_name=image.image_name)
        return redirect(
            url_for('donations.show_checkout',
                    transaction_id=result.transaction.id))
    else:
        for x in result.errors.deep_errors:
            flash('Error: %s: %s' % (x.code, x.message))
        return redirect(url_for('users.show', username=receiver.username))
def payment(image_id):
    donation_amount = (request.form.get('donation_amount'))
    payment_nonce = request.form.get('payment_method_nonce')
    image = Image.get_or_none(Image.id == image_id)

    if not donation_amount or int(donation_amount) == 0:
        flash('Please insert whole number')
        return redirect(url_for('donations.new', image_id=image.id))

    if not payment_nonce:
        flash('System Error')
        return redirect(url_for('donations.new', image_id=image.id))

    result = gateway.transaction.sale({
        "amount": donation_amount,
        "payment_method_nonce": payment_nonce,
        "options": {
            "submit_for_settlement": True
        }
    })

    if result.is_success or result.transaction:
        donation = Donation(user=current_user.id,
                            amount=result.transaction.amount,
                            image_id=image.id)

        donation.save()
        flash('Success')
        return redirect(url_for('donations.new', image_id=image.id))
def create(id):
    if current_user.is_authenticated:
        amount = int(request.form.get('amount'))
        result = transact({
            'amount': amount,
            'payment_method_nonce': request.form['payment_method_nonce'],
            'options': {
                "submit_for_settlement": True
            }
        })

        if result.is_success or result.transaction:
            image = Image.get_or_none(Image.id==id)
            receiver = image.user
            donor = User.get_by_id(current_user.id)
            amount = amount*100
            donation = Donation(receiver=receiver, donor_id=donor.id, image=image, amount=amount)
            if donation.save():
                # print(f"donor: {donation.donor.username}")
                # print(f"receiver: {donation.receiver.username}")
                # print(f"amount: {donation.amount}")
                flash('Donation successful', 'alert alert-success')
                return redirect(url_for('home'))
            else:
                flash('Donation unsuccessful', 'alert alert-danger')
                return redirect(url_for('home'))
        else:
            for x in result.errors.deep_errors: flash('Error: %s: %s' % (x.code, x.message))
            return redirect(url_for('payment.new', id=id))
    else:
        flash('Log in required', 'alert alert-danger')
        return redirect(url_for('home'))
Example #7
0
def create_checkout(id):
    image = Image.get_by_id(id)
    donation_amount = request.form.get('amount')
    result = transact({
        'amount':
        request.form['amount'],
        'payment_method_nonce':
        request.form['payment_method_nonce'],
        'options': {
            "submit_for_settlement": True
        }
    })

    if result.is_success or result.transaction:

        new_donation = Donation(image_id=image.id,
                                donor=current_user.id,
                                donation_amount=donation_amount).save()
        return redirect(
            url_for('donations.show_checkout',
                    transaction_id=result.transaction.id,
                    id=image))

    else:
        for x in result.errors.deep_errors:
            flash('Error: %s: %s' % (x.code, x.message))
        return redirect(url_for('users.show', username=image.user.username))
Example #8
0
def user_ballance_changes():
    # TODO check if an ammount can be substracted
    """
   :type notification_data: NotificationUrl
   :rtype: str
    """
    print("received notification2")
    print(request.data[19:-1])
    data = json.loads(request.data[19:-1])
    # print(d)
    # transaction = json.loads(request.data[19:-1])
    # print(transaction.object_.Payment.amount.value)

    amount = decimal.Decimal(data['object']['Payment']['amount']['value'])
    print(amount)
    receiver = data['object']['Payment']['counterparty_alias']['iban']
    print(receiver)
    if amount < 0 and receiver \
            not in charities:
        donation = (5 + ((amount * 100) % 5)) / 100
        print(donation)
        if donation > 0 and donation < 0.05:
            configuration_json = configurationRepository.read()
            configuration = Configuration.build_from_json(configuration_json)
            payment = bunqLib.make_payment(
                str(donation), 'Donation',
                charities_name[configuration.active_charity])
            print(json.dumps(dict(payment.headers)))
            donationsRepository.create(
                Donation(value=float(donation), charity=receiver))
    return ""
Example #9
0
def create_purchase(id):
    nonce_from_the_client = request.form["this-input"]
    amount = request.form.get('this-amount')
    gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce_from_the_client,
        "options": {
            "submit_for_settlement": True
        }
    })
    Donation(amount=amount, image_id=id, donor_id=current_user.id).save()
    pic = Pictures.get_by_id(id)
    user = User.get_or_none(User.id == pic.user_id)
    username = user.username
    message = Mail(
        from_email='*****@*****.**',
        to_emails=user.email,
        subject='Donation Notification',
        html_content='@' + current_user.username + ' donated ' + amount +
        f'$ to the following image below!<br><img src="{ pic.post_image }" />')
    try:
        sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
        response = sg.send(message)
        print(response.status_code)
        print(response.body)
        print(response.headers)
    except Exception as e:
        print(str(e))
    return redirect(url_for('users.show', username=username))
def create(image_id):
    nonce = request.form["nonce"]
    amount = request.form["amount"]
    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce,
        "options": {
            "submit_for_settlement": True
        }
    })
    if result.is_success:
        image = Image.get_by_id(image_id)
        donation = Donation(image=image, amount=Decimal(amount))
        donation.save()
        requests.post(
            f"https://api.mailgun.net/v3/{os.environ['MAILGUN_DOMAIN']}/messages",
            auth=("api", os.environ["MAILGUN_API"]),
            data={
                "from": f"Me <mailgun@{os.environ['MAILGUN_DOMAIN']}>",
                "to": ["*****@*****.**"],
                "subject": "Donated",
                "text": f"You have donated ${amount}!"
            }
        )
        flash("Payment successful")
    else:
        flash("Payment not successful")
    return redirect(url_for("users.show", username=current_user.username))
def create(image_id):
    image = Image.get_or_none(Image.id == image_id)
    nonce = request.form.get("payment_method_nonce")
    amount = request.form.get("amount")
    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce,
        "options": {
            "submit_for_settlement": True
        }
    })
    if result.is_success:
        donation = Donation(amount=amount,
                            image_id=image.id,
                            user_id=current_user.id)
        donation.save()
        sender = current_user.username
        receiver = User.get_or_none(User.id == image.user_id)
        amount = float(amount)
        amount = "{:.2f}".format(amount)
        receiver_email = receiver.email
        image_url = image.user_images_url
        send_email(sender, receiver_email, amount, image_url)
        flash(u"Thank you for your donation", 'success')
        flash(u"The owner of the photo has been notified", 'success')
        return redirect(url_for('home'))
    else:
        flash(u"An error has occurred", 'warning')
        return redirect(url_for('home'))
Example #12
0
def create(image_id):

    # Get form info
    payment_method_nonce = request.form['payment_method_nonce']
    amount = request.form['amount']
    donor_id = request.form['donor_id']
    receiver_username = request.form['receiver_username']
    image_id = image_id

    # Get donor_id details
    donor = User.get_by_id(donor_id)
    sender = donor.email

    # Create a transactionr
    result = gateway.transaction.sale({
        # Need to amend amount
        'amount': amount,
        'payment_method_nonce': payment_method_nonce,
        'options': {
            "submit_for_settlement": True
        }
    })

    if result.is_success:
        transaction_id = result.transaction.id
        # Add row in Donation model
        donation = Donation(image=image_id,
                            amount=amount,
                            donor=donor_id,
                            currency="USD",
                            transaction_id=result.transaction.id)

        if donation.save():
            flash(
                f'Your {result.transaction.currency_iso_code}{amount} donation to {receiver_username} was successful. The receipt number is {result.transaction.id}'
            )
            email = send_donation_email(receiver_email="*****@*****.**",
                                        receiver_username=receiver_username,
                                        amount=amount,
                                        sender_email=sender)
            return redirect(
                url_for('donations.show', transaction_id=transaction_id))
        else:
            flash(
                'Your donation could not save to the database. Data validation failed?'
            )
            return redirect(
                url_for('users.show', username=current_user.username))

    else:

        flash(f'Donation failed: {result.transaction.status}')
        return redirect(url_for('users.show', username=current_user.username))
def create_purchase():
    nonce_from_the_client = request.form["payment_method_nonce"]
    amount = request.form["amount"]
    donor = current_user.id
    image = request.form['image']

    i = Image.get(id=image)

    m = Money(amount, Currency.USD)

    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce_from_the_client,
        "options": {
            "submit_for_settlement": True
        }
    })

    if result.is_success or result.transaction:
        d = Donation(amount=amount,
                     txs_id=result.transaction.id,
                     image=image,
                     donor=donor)
        if d.save():
            flash(
                f"Thanks {current_user.username}! Your donation of {m} has been successfully sent to {i.user.username}! \nTransaction_ID: {result.transaction.id}",
                'success')

            message = Mail(
                from_email='*****@*****.**',
                to_emails=i.user.email,
                subject="Donation received for your Image",
                html_content=
                f"Hi, {i.user.username}! <br /><br /> Your image as shown below has received a donation of {m} from {current_user.username}. <br /><br /> <img src={os.environ.get('S3_LOCATION')}user_images/{i.image_name} />"
            )
            try:
                sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
                response = sg.send(message)
                print(response.status_code)
                print(response.body)
                print(response.headers)
            except Exception as e:
                print(str(e))

            return redirect(url_for('users.show', username=i.user.username))
        else:
            flash("Something went wrong, it's not saved to the database",
                  'danger')
            return render_template('donations/new.html')
    else:
        for x in result.errors.deep_errors:
            flash(f"Erorr: {x.code}: {x.message} ")
            return redirect(url_for('users.show', username=i.user.username))
Example #14
0
def create(image_id):
    nonce = request.form.get('payment_method_nonce')

    if not nonce:
        flash("invalid cred card deets")
        return redirect(url_for('users.index'))

    image = Image.get_or_none(Image.id == image_id)

    # image could have been deleted, so double check first
    if not image:
        flash("no image found with ID provided")
        return redirect(url_for('users.index'))

    amount = request.form.get('amount')

    if not amount:
        flash("no amount provided")
        return redirect(url_for('users.index'))

    # make sure sale goes through
    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce,
        "options": {
            "submit_for_settlement": True
        }
    })

    # amounts more than 1000 WONT BE ACCEPTED
    # can check result
    # result.is_success
    # should return True

    if not result.is_success:
        flash("unable to complete transaction")
        return redirect(request.referrer)
        # redirect to where they came from

    donation = Donation(amount=amount,
                        image_id=image.id,
                        user_id=current_user.id)

    if not donation.save():
        flash('donation successful but error creating record')
        return redirect(url_for('users.index'))

    flash(f"successfully donated RM{amount} thankiu C:")
    user = User.select().join(Image).where(Image.id == image_id)
    send_simple_message(user[0].email)
    return redirect(url_for('users.index'))
def create(photo_id):
    nonce = request.form.get('payment_method_nonce')

    if not nonce:
        flash(f"Error with payment method nonce", 'warning')
        return redirect(url_for('users.show'))

    image = Photos.get_or_none(Photos.id == photo_id)

    if not image:
        flash(f"Could not find image with provided ID", 'warning')
        return redirect(url_for('users.show'))

    amount = request.form.get("amount")

    if not amount:
        flash(f"No donation provided", 'warning')
        return redirect(url_for('users.show'))

    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce,
        "options": {
            "submit_for_settlement": True
        }
    })

    if not result.is_success:
        flash('Unable to complete transaction', 'warning')

        return redirect(request.referrer)

    donation = Donation(amount=amount,
                        photo_id=photo_id,
                        user_id=current_user.id)

    if not donation.save():
        flash('Dono successful but error recording', 'warning')
        return redirect(url_for('users.show'))
    # breakpoint()

    receiving_name = donation.photo.user.name
    name = User.get_or_none(User.id == current_user.id).name
    flash(f'{name} successfully donated ${amount} to {receiving_name} ')

    send_simple_message(amount=amount,
                        receiving_name=receiving_name,
                        name=name)
    return redirect(url_for('users.show'))
Example #16
0
def create_checkout(img_id):
    result = transact({
        'amount': request.form['amount'],
        'payment_method_nonce': request.form['payment_method_nonce'],
        'options': {
            "submit_for_settlement": True
        }
    })

    if result.is_success or result.transaction:
        d = Donation(value=request.form['amount'],img_id=img_id)
        d.save()
        return redirect(url_for('users_api.send_email' ,img_id=img_id))
    else:
        return 'failed'
Example #17
0
def create(image_id):
    payment_nonce = request.form.get("payment_nonce")
    amount = request.form.get("donation_amount")
    image = Image.get_or_none(Image.id == image_id)
    email = image.user.email

    if not image:
        flash("Unable to find image. Please try again.")
        return redirect(url_for("users.index"))

    if not amount or round(int(amount), 2) == 0:
        flash("That is not a proper amount. Please insert a valid amount.")
        return redirect(url_for("donations.new", image_id=image.id))

    if not payment_nonce:
        flash("Error with payment system. Please try again.")
        return redirect(url_for("donations.new", image_id=image.id))

    if not complete_transaction(payment_nonce, amount):
        flash("Something went wrong. Please check your details or the amount and try again")
        return redirect(url_for("donations.new", image_id=image.id))

    # result = gateway.transaction.sale({
    #     "amount": amount,
    #     "payment_method_nonce": nonce,
    #     "options": {
    #         "submit_for_settlement": True
    #     }
    # })

    # if not result.is_success:
    #     flash("Donation was unsuccessful!")
    #     return redirect(request.referrer)

    new_donation = Donation(
        user_id=current_user.id,
        amount=amount,
        image_id=image.id
    )

    if not new_donation.save():
        flash("Unable to complete the transaction. Please try again.")
        return redirect(url_for("donations.new", image_id=image.id))

    send_message(amount, image.image, current_user.username)

    flash("Donation successful!")
    return redirect(url_for("users.show", username=image.user.username))
Example #18
0
def create(image_id):
    nonce = request.form.get('payment_method_nonce')

    if not nonce:
        flash(f"Error with payment method nonce", 'warning')
        return redirect(url_for('users.index'))

    image = UserImage.get_or_none(UserImage.id == image_id)

    if not image:
        flash(f"Could not find image with provided ID", 'warning')
        return redirect(url_for('users.index'))

    amount = request.form.get("amount")

    if not amount:
        flash(f"No donation provided", "warning")
        return redirect(url_for('users.index'))

    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce,
        "options": {
            "submit_for_settlement": True
        }
    })

    if not result.is_success:
        flash(f"Error in gateway transaction", "warning")
        return redirect(request.referrer)

    donation = Donation(amount=amount,
                        image_id=image.id,
                        user_id=current_user.id)
    #    ---- GET DONATOR NAME AND PASS TO EMAIL------
    donator = User.get_or_none(User.id == current_user.id)

    if not donation.save():
        flash(f"Donated succesfully but error creating a record in database",
              'warning')
        return redirect(url_for('users.index'))

    flash(f"Donated: ${amount}", 'success')
    send_simple_message(amount=amount, name=donator.name)
    return redirect(url_for('users.index'))
Example #19
0
def create(image_id):
    nonce = request.form["nonce"]
    result = gateway.transaction.sale({
        "amount": "10.00",
        "payment_method_nonce": nonce,
        "options": {
            "submit_for_settlement": True
        }
    })

    if result.is_success:
        image = Image.get_by_id(image_id)
        donation = Donation(image=image, amount=Decimal(10))
        donation.save()
        flash("Payment Successful")
    else:
        flash("payment not successful")
    return redirect(url_for("users.show", username=current_user.username))
Example #20
0
def create(image_id):
    payload_nonce = request.form.get("payload_nonce")
    payment_amount = request.form.get("payment_amount")
    print(
        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    )
    print(payload_nonce)

    image = Image.get_by_id(int(image_id))
    user = User.get_by_id(current_user.id)

    result = gateway.transaction.sale({
        "amount": payment_amount,
        "payment_method_nonce": payload_nonce,
        "device_data": None,
        "options": {
            "submit_for_settlement": True
        }
    })
    if result.is_success:
        donation = Donation(amount=int(payment_amount),
                            donor=user,
                            image=image)
        donation.save()
        flash(
            f"Thanks you for the RM{payment_amount} donation {current_user.username}",
            "success")

        def send_simple_message():
            return requests.post(
                "https://api.mailgun.net/v3/sandboxeaa30d1922044857bee3122cfe3ac0f9.mailgun.org/messages",
                auth=("api", os.environ.get("MAILGUN_PRIVATE_KEY")),
                data={
                    "from":
                    "Excited User <*****@*****.**>",
                    "to": ["*****@*****.**"],
                    "subject": "Hello hahaha",
                    "text": "changing the textailgun awesomness!",
                    "html": f"<img src={image.full_image_url}> "
                })

        print(send_simple_message())

    return redirect(url_for('images.show', image_id=image.id))
Example #21
0
def pay(id):
    nonce = request.form["nonce"]
    print(id)
    print("ITSSSSSS HEREEEEEEEEEEEEEE ====> " + nonce)
    result = gateway.transaction.sale({
        "amount": "100.00",
        "payment_method_nonce": nonce,
        "options": {
            "submit_for_settlement": True
        }
    })
    if result.is_success:
        donation = Donation(sender=User.get_by_id(current_user.id),
                            image_id=id,
                            amount=Decimal(100.00))
        donation.save()
        return "Payment Received"
    else:
        return "Payment Failed"
def create():
    nonce_from_the_client = request.form["payment_method_nonce"]
    sender_id = current_user.id or None
    receiver_id = request.form['receiver_id']
    amount = request.form["amount"]
    result = gateway.transaction.sale({
        "amount": request.form["amount"],
        "payment_method_nonce": nonce_from_the_client,
        "options": {
            "submit_for_settlement": True
        }
    })
    if type(result) == SuccessfulResult:
        new_donation = Donation(receiver_id=receiver_id,
                                sender_id=sender_id,
                                amount=amount)
        new_donation.save()
        return redirect(url_for('index'))
    flash('Invalid amount entered!')
    return render_template('donate/new.html', client_token=client_token)
def create(image_id):
    nonce = request.form.get('payment_method_nonce')

    if not nonce:
        flash('Invalid credit card details')
        return redirect(url_for('users.index'))

    image = Image.get_or_none(Image.id == image_id)

    if not image:
        flash('No Image Found with provided id', 'warning')
        return redirect(url_for('users.index'))

    amount = request.form.get('amount')

    if not amount:
        flash('No donation amount provided', 'warning')
        return redirect(url_for('users.index'))

    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce,
        "options": {
            "submit_for_settlement": True
        }
    })

    if not result.is_success:
        flash('Unable to complete transaction', 'warning')
        return redirect(request.referrer)

    donation = Donation(amount=amount,
                        image_id=image.id,
                        user_id=current_user.id)

    if not donation.save():
        flash('Donation successful but error creating record', 'warning')
        return redirect(url_for('users.index'))

    flash(f'Successfully donated RM{amount}', 'success')
    return redirect(url_for('users.index'))
Example #24
0
def create_checkout(id):
    amt = float(request.form['amount'])
    result = transact({
        'amount': ("%.2f" % amt ),
        'payment_method_nonce': request.form['payment_method_nonce'],
        'options': {
            "submit_for_settlement": True
        }
    })

    if result.is_success or result.transaction:
        image = Image.get_by_id(id)
        user = User.get_by_id(image.user)
        donation = Donation(donor=current_user.id,image=id,amount=result.transaction.amount)
        donation.save()
        q.enqueue_call(func=send_pay_email,args=(current_user,result.transaction.amount,),timeout=5)
        q.enqueue_call(func=send_pay_email,args=(user,result.transaction.amount,),timeout=5)
        return redirect(url_for('checkouts.show_checkout',transaction_id=result.transaction.id))
    else:
        for x in result.errors.deep_errors: flash('Error: %s: %s' % (x.code, x.message))
        return redirect(url_for('users.show'))
def create(image_id):
    amount = request.form["amount"]
    result = gateway.transaction.sale({
        "amount":
        amount,
        "payment_method_nonce":
        request.form["payment_method_nonce"],
        "options": {
            "submit_for_settlement": True
        }
    })

    if result.is_success or result.transaction:
        donation = Donation(sender=User.get_by_id(current_user.id),
                            image_id=image_id,
                            amount=amount)
        donation.save()
        return redirect(url_for('images.show', id=image_id))
    else:
        flash("Failed to donate. Please try again", "error")
        return redirect(url_for('donations.new', image_id=image_id))
Example #26
0
def donation(image_id):
    image = Image.get_or_none(Image.id == image_id)
    nonce = request.form.get("payment_method_nonce")
    amount = request.form.get("amount")

    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce,
        "options": {
            "submit_for_settlement": True
        }
    })

    donate = Donation(amount=amount, image_id=image.id,
                      user_id=current_user.id)

    if result:
        donate.save()
        # send_simple_message()
        flash("Donations completed")
        return redirect(url_for('donations.new', image_id=image.id, nonce=nonce, amount=amount))
Example #27
0
def create():
    image = Image.query.get(request.form['image_id'])

    if not image:
        flash('Invalid image')
        return redirect(request.referrer)

    nonce_from_the_client = request.form["payment_method_nonce"]

    result = gateway.transaction.sale({
        "amount": request.form['amount'],
        "payment_method_nonce": nonce_from_the_client,
        "options": {
            "submit_for_settlement": True
        }
    })

    if result.is_success:
        donation = Donation(donor_id=current_user.id,
                            image_id=request.form['image_id'],
                            amount=request.form['amount'])

        db.session.add(donation)
        db.session.commit()

        send_email(
            from_email="*****@*****.**",
            to_email=image.user.email,
            subject="You've received a donation",
            content=
            f"Someone liked your picture and donated USD {donation.amount} to you."
        )

        flash(
            f"Your donation of {donation.amount} has been successfully sent!")
        return redirect(request.referrer)
    else:
        flash(result.message)

        return redirect(request.referrer)
def create(image_id):
    amount = request.form.get("amount")
    print(amount)
    nonce_from_the_client = request.form.get("payment_method_nonce")
    print(nonce_from_the_client)

    result = gateway.transaction.sale({
        'amount': int(amount),
        'payment_method_nonce': nonce_from_the_client,
        #   "device_data": device_data_from_the_client,
        'options': {
            'submit_for_settlement': True
        }
    })

    if result.is_success:
        # the reason why we have to get the instance for sender and can't use current_user straight away is because current_user itself is not an instance of User class.. its just object/instance from flask_login
        donation = Donation(amount=amount,
                            image=image_id,
                            sender=User.get_by_id(current_user.id))
        print(donation.sender)

        donation.save()
        mailgun_result = requests.post(
            f"https://api.mailgun.net/v3/{os.environ.get('MAILGUN_DOMAIN')}/messages",
            auth=("api", f"{os.environ.get('MAILGUN_API_KEY')}"),
            data={
                "from":
                "Mailgun Sandbox <*****@*****.**>",
                "to":
                "WEI KHANG TAN <*****@*****.**>",
                "subject":
                "Hello WEI KHANG TAN",
                "text":
                "Congratulations WEI KHANG TAN, you just sent an email with Mailgun!  You are truly awesome!"
            })

    print(result)

    return redirect(url_for('donations.index', image_id=image_id))
Example #29
0
def create(image_id):
    nonce = request.form.get('payment_method_nonce')

    if not nonce:
        flash('credit card details are invalid', 'warning')
        return redirect(url_for('home'))

    image = Image.get_or_none(Image.id == image_id)

    if not image:
        flash('image not found', 'warning')
        return redirect(url_for('home'))

    amount = request.form.get('amount')

    if not amount:
        flash('please provide an amount to donate')
        return redirect(url_for('home'))

    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce,
        "options": {
            "submit_for_settlement": True
        }
    })

    if not result.is_success:
        flash('unable to complete donation', 'warning')
        return redirect(request.referrer)

    donation = Donation(amount=amount, image_id=image.id,
                        user_id=current_user.id)

    if not donation.save():
        flash('Donation successfull but could not create record', 'warning')
        return redirect(url_for('home'))

    flash('Successfully donated RM{amount}', 'success')
    return redirect(url_for('home'))
Example #30
0
def create(image_id):

    nonce = request.form.get('payment_method_nonce')
    if not nonce:
        flash(f"Error with payment method nonce", 'warning')
        return redirect(url_for('users.index'))

    image = Image.get_or_none(Image.id == image_id)

    # if not image:
    #     flash('Could not find image with provided ID', 'warning')
    #     return redirect(url_for('users.index'))

    amount = request.form.get('amount')

    if not amount:
        flash('No amount is provided for donation', 'warning')
        return redirect(url_for('users.index'))

    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce,
        "options": {
            "submit_for_settlement": True
        }
    })

    if not result.is_success:
        flash('unable to complete transaction', 'warning')
        return redirect(request.referrer)

    donation = Donation(amount=amount, image=image.id, user=current_user.id)

    if not donation.save():
        ('Donation successfull but error creating record', 'warning')
        return redirect(url_for('users.index'))

    flash('You have successfully donated. Thank you!')
    return redirect(url_for('sessions.show', username=current_user.username))