Feat(Project Hub): Apply for Founding Partner Program page created with database structure and methods.
This commit is contained in:
146
controllers/core/apply_founding_partner.py
Normal file
146
controllers/core/apply_founding_partner.py
Normal file
@@ -0,0 +1,146 @@
|
||||
"""
|
||||
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
|
||||
name_company = form.name_company.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_APPLY_FOUNDING_PARTNER_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 = apply_founding_partner_form.message
|
||||
, 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
|
||||
)
|
||||
Reference in New Issue
Block a user