diff --git a/__pycache__/__init__.cpython-311.pyc b/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 070ea838..00000000 Binary files a/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/__pycache__/__init__.cpython-312.pyc b/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 83b8f224..00000000 Binary files a/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/__pycache__/__init__.cpython-38.pyc b/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 5f0aeda2..00000000 Binary files a/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/__pycache__/app.cpython-311.pyc b/__pycache__/app.cpython-311.pyc deleted file mode 100644 index f5f005a7..00000000 Binary files a/__pycache__/app.cpython-311.pyc and /dev/null differ diff --git a/__pycache__/app.cpython-312.pyc b/__pycache__/app.cpython-312.pyc deleted file mode 100644 index 5c81800b..00000000 Binary files a/__pycache__/app.cpython-312.pyc and /dev/null differ diff --git a/__pycache__/app.cpython-38.pyc b/__pycache__/app.cpython-38.pyc deleted file mode 100644 index eb2f35a1..00000000 Binary files a/__pycache__/app.cpython-38.pyc and /dev/null differ diff --git a/__pycache__/argument_validation.cpython-311.pyc b/__pycache__/argument_validation.cpython-311.pyc deleted file mode 100644 index 34b94b60..00000000 Binary files a/__pycache__/argument_validation.cpython-311.pyc and /dev/null differ diff --git a/__pycache__/config.cpython-311.pyc b/__pycache__/config.cpython-311.pyc deleted file mode 100644 index 6107299e..00000000 Binary files a/__pycache__/config.cpython-311.pyc and /dev/null differ diff --git a/__pycache__/config.cpython-312.pyc b/__pycache__/config.cpython-312.pyc deleted file mode 100644 index 1e511593..00000000 Binary files a/__pycache__/config.cpython-312.pyc and /dev/null differ diff --git a/__pycache__/config.cpython-38.pyc b/__pycache__/config.cpython-38.pyc deleted file mode 100644 index 2232f3ea..00000000 Binary files a/__pycache__/config.cpython-38.pyc and /dev/null differ diff --git a/__pycache__/extensions.cpython-312.pyc b/__pycache__/extensions.cpython-312.pyc deleted file mode 100644 index 6006f0ab..00000000 Binary files a/__pycache__/extensions.cpython-312.pyc and /dev/null differ diff --git a/__pycache__/forms.cpython-311.pyc b/__pycache__/forms.cpython-311.pyc deleted file mode 100644 index 27d38a73..00000000 Binary files a/__pycache__/forms.cpython-311.pyc and /dev/null differ diff --git a/__pycache__/forms.cpython-312.pyc b/__pycache__/forms.cpython-312.pyc deleted file mode 100644 index e1e1053c..00000000 Binary files a/__pycache__/forms.cpython-312.pyc and /dev/null differ diff --git a/__pycache__/forms.cpython-38.pyc b/__pycache__/forms.cpython-38.pyc deleted file mode 100644 index 111ef585..00000000 Binary files a/__pycache__/forms.cpython-38.pyc and /dev/null differ diff --git a/__pycache__/model_view_base.cpython-311.pyc b/__pycache__/model_view_base.cpython-311.pyc deleted file mode 100644 index c7bbb367..00000000 Binary files a/__pycache__/model_view_base.cpython-311.pyc and /dev/null differ diff --git a/__pycache__/model_view_contact.cpython-311.pyc b/__pycache__/model_view_contact.cpython-311.pyc deleted file mode 100644 index 34085b2e..00000000 Binary files a/__pycache__/model_view_contact.cpython-311.pyc and /dev/null differ diff --git a/__pycache__/model_view_home.cpython-311.pyc b/__pycache__/model_view_home.cpython-311.pyc deleted file mode 100644 index c8aa483d..00000000 Binary files a/__pycache__/model_view_home.cpython-311.pyc and /dev/null differ diff --git a/__pycache__/model_view_store.cpython-311.pyc b/__pycache__/model_view_store.cpython-311.pyc deleted file mode 100644 index d0acdec3..00000000 Binary files a/__pycache__/model_view_store.cpython-311.pyc and /dev/null differ diff --git a/__pycache__/model_view_store_home.cpython-311.pyc b/__pycache__/model_view_store_home.cpython-311.pyc deleted file mode 100644 index 7d9d5d40..00000000 Binary files a/__pycache__/model_view_store_home.cpython-311.pyc and /dev/null differ diff --git a/__pycache__/pay_stripe.cpython-311.pyc b/__pycache__/pay_stripe.cpython-311.pyc deleted file mode 100644 index 6257e563..00000000 Binary files a/__pycache__/pay_stripe.cpython-311.pyc and /dev/null differ diff --git a/__pycache__/product.cpython-311.pyc b/__pycache__/product.cpython-311.pyc deleted file mode 100644 index 78513ec9..00000000 Binary files a/__pycache__/product.cpython-311.pyc and /dev/null differ diff --git a/__pycache__/routes.cpython-311.pyc b/__pycache__/routes.cpython-311.pyc deleted file mode 100644 index 6d33ccde..00000000 Binary files a/__pycache__/routes.cpython-311.pyc and /dev/null differ diff --git a/pay_stripe.py b/pay_stripe.py deleted file mode 100644 index 821e3bde..00000000 --- a/pay_stripe.py +++ /dev/null @@ -1,182 +0,0 @@ -""" -Project: PARTS Website -Author: Edward Middleton-Smith - Precision And Research Technology Systems Limited - -Technology: App General -Feature: App - -Description: -Initializes the Flask application, sets the configuration based on the environment, and defines two routes (/ and /about) that render templates with the specified titles. -""" - -# IMPORTS -# VARIABLE INSTANTIATION -# METHODS - -# IMPORTS -import os -import stripe -import json -from flask import Flask, render_template, render_template_string, jsonify, request, send_from_directory, redirect -from dotenv import load_dotenv, find_dotenv - -from config import app_config - -# VARIABLE INSTANTIATION -key_secret = os.environ.get("KEY_SECRET_STRIPE") -key_public = os.environ.get("KEY_PUBLIC_STRIPE") # 'pk_test_51OGrxlL7BuLKjoMpfpfw7bSmZZK1MhqMoQ5VhW2jUj7YtoEejO4vqnxKPiqTHHuh9U4qqkywbPCSI9TpFKtr4SYH007KHMWs68' - -# METHODS -def create_product_price(): - print(f'stripe.api_key = {stripe.api_key}') - starter_subscription = stripe.Product.create( - name="Starter Subscription", - description="$12/Month subscription", - ) - - starter_subscription_price = stripe.Price.create( - unit_amount=1200, - currency="usd", - recurring={"interval": "month"}, - product=starter_subscription['id'], - ) - - # Save these identifiers - print(f"Success! Here is your starter subscription product id: {starter_subscription.id}") - print(f"Success! Here is your starter subscription price id: {starter_subscription_price.id}") - - return starter_subscription_price.id - -def get_file_str(f_address): - f = open(f_address) - return f.read() - -# Ensure environment variables are set. -price = os.getenv('PRICE') -if price is None or price == 'price_12345' or price == '': - print('You must set a Price ID in .env. Please see the README.') - exit(0) - -# For sample support and debugging, not required for production: -stripe.set_app_info( - 'stripe-samples/checkout-one-time-payments', - version='0.0.1', - url='https://github.com/stripe-samples/checkout-one-time-payments') - -# stripe.api_version = '2020-08-27' -stripe.api_key = key_secret # os.getenv('KEY_SECRET_STRIPE') - -# app_dir = str(os.path.abspath(os.path.join( -# __file__, "..", ".."))) -# static_dir = str(os.path.abspath(os.path.join( -# app_dir, os.getenv("STATIC_DIR")))) -# template_dir = str(os.path.abspath(os.path.join( -# app_dir, os.getenv("TEMPLATE_DIR")))) -app = Flask(__name__) # , static_folder=static_dir, - # static_url_path="", template_folder=template_dir) -app.config.from_object(app_config) - -@app.route('/', methods=['GET']) -def home(): - # return render_template(f'{app_dir}\\templates\\_home.html') # f'{app_dir}\\templates\\layout.html') - # return render_template_string(get_file_str(f'{app_dir}\\templates\\_home.html')) # f'{app_dir}\\templates\\layout.html') - return render_template('_home.html', title='Home') - -@app.route('/store', methods=['GET']) -def store_home(): - return render_template('_store_home.html', title='Store Home') - -@app.route('/contact') -def contact(): - return render_template('_contact.html', title='Contact Us') - - -@app.route('/config', methods=['GET']) -def get_publishable_key(): - price = stripe.Price.retrieve(os.getenv('PRICE')) - return jsonify({ - 'publicKey': key_public, # os.getenv('KEY_PUBLIC_STRIPE'), - 'unitAmount': price['unit_amount'], - 'currency': price['currency'] - }) - -# Fetch the Checkout Session to display the JSON result on the success page -@app.route('/checkout-session', methods=['GET']) -def get_checkout_session(): - id = request.args.get('sessionId') - print(f'checkout session id: {id}') - checkout_session = stripe.checkout.Session.retrieve(id) - return jsonify(checkout_session) - - -@app.route('/create-checkout-session', methods=['POST']) -def create_checkout_session(): - quantity = request.form.get('quantity', 1) - domain_url = os.getenv('DOMAIN') - - try: - # Create new Checkout Session for the order - # Other optional params include: - # [billing_address_collection] - to display billing address details on the page - # [customer] - if you have an existing Stripe Customer ID - # [payment_intent_data] - lets capture the payment later - # [customer_email] - lets you prefill the email input in the form - # [automatic_tax] - to automatically calculate sales tax, VAT and GST in the checkout page - # For full details see https://stripe.com/docs/api/checkout/sessions/create - - # ?session_id={CHECKOUT_SESSION_ID} means the redirect will have the session ID set as a query param - checkout_session = stripe.checkout.Session.create( - success_url=domain_url + '/success.html?session_id={CHECKOUT_SESSION_ID}', - cancel_url=domain_url + '/canceled.html', - mode='subscription', # 'payment', - # automatic_tax={'enabled': True}, - line_items=[{ - 'price': os.getenv('PRICE'), - 'quantity': quantity, - }] - ) - return redirect(checkout_session.url, code=303) - except Exception as e: - return jsonify(error=str(e)), 403 - - -@app.route('/webhook', methods=['POST']) -def webhook_received(): - # You can use webhooks to receive information about asynchronous payment events. - # For more about our webhook events check out https://stripe.com/docs/webhooks. - webhook_secret = os.getenv('STRIPE_WEBHOOK_SECRET') - request_data = json.loads(request.data) - - if webhook_secret: - # Retrieve the event by verifying the signature using the raw body and secret if webhook signing is configured. - signature = request.headers.get('stripe-signature') - try: - event = stripe.Webhook.construct_event( - payload=request.data, sig_header=signature, secret=webhook_secret) - data = event['data'] - except Exception as e: - return e - # Get the type of webhook event sent - used to check the status of PaymentIntents. - event_type = event['type'] - else: - data = request_data['data'] - event_type = request_data['type'] - data_object = data['object'] - - print('event ' + event_type) - - if event_type == 'checkout.session.completed': - print('🔔 Payment succeeded!') - - return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS}) - - -if __name__ == '__main__': - # stripe.api_key = key_secret - - # create_product_price() - - # Setup Stripe python client library. - load_dotenv(find_dotenv()) - app.run(port=4242, debug=True) \ No newline at end of file diff --git a/routes.py b/routes.py deleted file mode 100644 index d93a97ad..00000000 --- a/routes.py +++ /dev/null @@ -1,54 +0,0 @@ -""" -Project: PARTS Website -Author: Edward Middleton-Smith - Precision And Research Technology Systems Limited - -Technology: Backend -Feature: Controller - Webpage routing - -Description: -Defines the routes and view functions for each page. -Manages the interaction between the frontend and backend. -""" - -from flask import render_template, url_for, Blueprint -from app import app -from app.forms import Form_Contact -# from forms import MyForm -# from app import MyForm -from model_view_contact import Model_View_Contact - -""" -@app.route('/', methods=['GET']) -def home(): - return render_template('_home.html', title='Home') - -@app.route('/store', methods=['GET']) -def store_home(): - return render_template('_store_home.html', title='Store Home') - -@app.route('/contact', methods=['GET', 'POST']) -def contact(): - form = Form_Contact() - if form.validate_on_submit(): - # Handle form submission - email = form.sender_email.data - CC = form.sender_CC.data - name = form.sender_name.data - msg = form.sender_message.data - # return render_template('contact.html', form=form) - # return render_template('_contact.html', title='Contact Us') - return render_template('contact.html', model=Model_View_Contact(form)) - -@app.route('/about') -def about(): - return render_template('about.html') - -@app.route('/contact', methods=['GET', 'POST']) -def contact(): - form = MyForm() - if form.validate_on_submit(): - # Handle form submission - pass - return render_template('contact.html', form=form) -""" \ No newline at end of file