""" Project: PARTS Website Author: Edward Middleton-Smith Precision And Research Technology Systems Limited Technology: App Routing Feature: Core - Apply_Founding_Partner Routes Description: Apply_Founding_Partner Page Controller. """ # IMPORTS # internal from business_objects.api import API from business_objects.project_hub.apply_founding_partner_form import Apply_Founding_Partner_Form from controllers.core.contact import create_altcha_challenge from datastores.datastore_project_hub import DataStore_Project_Hub_Contact_Form from forms.project_hub.apply_founding_partner import Form_Apply_Founding_Partner from helpers.helper_app import Helper_App from models.model_view_apply_founding_partner import Model_View_Apply_Founding_Partner from models.model_view_apply_founding_partner_success import Model_View_Apply_Founding_Partner_Success from models.model_view_home import Model_View_Home import lib.argument_validation as av # external from flask import Flask, render_template, jsonify, request, render_template_string, send_from_directory, redirect, url_for, session, Blueprint, current_app, flash from flask_mail import Mail, Message from extensions import db, oauth, mail from urllib.parse import quote_plus, urlencode from authlib.integrations.flask_client import OAuth from authlib.integrations.base_client import OAuthError from urllib.parse import quote, urlparse, parse_qs import json import base64 import hmac import hashlib import datetime from altcha import ChallengeOptions, create_challenge, verify_solution routes_core_apply_founding_partner = Blueprint('routes_core_apply_founding_partner', __name__) @routes_core_apply_founding_partner.route(Model_View_Apply_Founding_Partner.HASH_PAGE_APPLY_FOUNDING_PARTNER, methods=['GET']) def apply_founding_partner(): try: form = Form_Apply_Founding_Partner() model = Model_View_Apply_Founding_Partner(form) html_body = render_template('pages/core/_apply_founding_partner.html', model = model) return html_body except Exception as e: return API.get_standard_response( success = False, status_code = 500, message = f"Error: {e}", data = None, errors = [str(e)], meta = None ) @routes_core_apply_founding_partner.route(Model_View_Apply_Founding_Partner.HASH_PAGE_APPLY_FOUNDING_PARTNER, methods=['POST']) def apply_founding_partner_post(): try: form = Form_Apply_Founding_Partner() if form.validate_on_submit(): try: # id_apply_founding_partner_form = form.id_apply_founding_partner_form.data contact_name = form.contact_name.data email = form.email.data phone_number = form.phone_number.data company_name = form.company_name.data website = form.website.data # most_valuable_feature = form.most_valuable_feature.data notes = form.notes.data active = True # receive_marketing_text = "I would like to receive marketing emails.\n" if receive_marketing else "" # send email mailItem = Message("Fetch Metrics Website Founding Partner Application", recipients=[current_app.config['MAIL_CONTACT_PUBLIC']]) mailItem.body = '\n'.join([ "Dear Lord Edward Middleton-Smith" , "" , "I would like to be part of your Founding Partner Program." # , f"I currently work with {dog_count} dogs" # , f"I most desire the feature: {most_valuable_feature}" , f"Notes: {notes}" , "" , "Kind regards" , contact_name , company_name , email , phone_number , website ]) # f"Dear Lord Edward Middleton-Smith,\n\n{message}\n{receive_marketing_text}\nKind regards,\n{apply_founding_partner_name}\n{company_name}\n{email}" mail.send(mailItem) # save to database datastore = DataStore_Project_Hub_Contact_Form() apply_founding_partner_form = Apply_Founding_Partner_Form.from_json(form.to_json()) datastore.save_apply_founding_partner_forms( comment = notes , apply_founding_partner_forms = [apply_founding_partner_form] ) return redirect(url_for(Model_View_Apply_Founding_Partner.ENDPOINT_PAGE_APPLY_FOUNDING_PARTNER_SUCCESS)) except Exception as e: return API.get_standard_response( success = False, status_code = 500, message = f"Error: {e}", data = None, errors = [str(e)], meta = None ) return API.get_standard_response( success = False, status_code = 500, message = f"Error: {form.errors}", data = None, errors = [str(form.errors)], meta = None ) # html_body = render_template('pages/core/_apply_founding_partner.html', model = model) except Exception as e: return API.get_standard_response( success = False, status_code = 500, message = f"Error: {e}", data = None, errors = [str(e)], meta = None ) @routes_core_apply_founding_partner.route(Model_View_Apply_Founding_Partner.HASH_PAGE_APPLY_FOUNDING_PARTNER_SUCCESS, methods=['GET']) def apply_founding_partner_success(): try: model = Model_View_Apply_Founding_Partner_Success() html_body = render_template('pages/core/_apply_founding_partner_success.html', model = model) return html_body except Exception as e: return API.get_standard_response( success = False, status_code = 500, message = f"Error: {e}", data = None, errors = [str(e)], meta = None )