Feat(UI): Blog with article page and Newsletter signup form.
This commit is contained in:
@@ -12,9 +12,15 @@ Home Page Controller.
|
||||
|
||||
# internal
|
||||
from business_objects.api import API
|
||||
from business_objects.project_hub.contact_form import Contact_Form
|
||||
from datastores.datastore_project_hub import DataStore_Project_Hub_Contact_Form
|
||||
from extensions import db, oauth, mail
|
||||
from forms.project_hub.contact import Form_Contact
|
||||
from forms.project_hub.newsletter import Form_Newsletter
|
||||
from models.model_view_blog_home import Model_View_Blog_Home
|
||||
# external
|
||||
from flask import render_template, jsonify, Blueprint, send_from_directory
|
||||
from flask import render_template, jsonify, Blueprint, send_from_directory, current_app, redirect, url_for
|
||||
from flask_mail import Mail, Message
|
||||
|
||||
|
||||
routes_blog = Blueprint('routes_blog', __name__)
|
||||
@@ -23,9 +29,128 @@ routes_blog = Blueprint('routes_blog', __name__)
|
||||
@routes_blog.route(Model_View_Blog_Home.HASH_PAGE_BLOG_HOME, methods=['GET'])
|
||||
def blog_home():
|
||||
try:
|
||||
model = Model_View_Blog_Home()
|
||||
html_body = render_template('layouts/layout_blog.html', model = model) # 'pages/blog/_home.html'
|
||||
form = Form_Newsletter()
|
||||
model = Model_View_Blog_Home(form)
|
||||
html_body = render_template('pages/blog/_home.html', model = model) # 'pages/blog/_home.html'
|
||||
except Exception as e:
|
||||
return jsonify(error=str(e)), 403
|
||||
return html_body
|
||||
|
||||
|
||||
@routes_blog.route(Model_View_Blog_Home.HASH_PAGE_BLOG_ARTICLE_HOW_TO_SCALE_YOUR_DOG_TRAINING_BUSINESS_FROM_25_TO_100_PLUS_CLIENTS, methods=['GET'])
|
||||
def blog_article_how_to_scale_your_dog_training_business_from_25_to_100_plus_clients():
|
||||
try:
|
||||
form = Form_Newsletter()
|
||||
model = Model_View_Blog_Home(form_newsletter = form, hash_page_current = Model_View_Blog_Home.HASH_PAGE_BLOG_ARTICLE_HOW_TO_SCALE_YOUR_DOG_TRAINING_BUSINESS_FROM_25_TO_100_PLUS_CLIENTS)
|
||||
model._title = 'Blog Article'
|
||||
html_body = render_template('pages/blog/_article_how_to_scale_your_dog_training_business_from_25_to_100_plus_clients.html', model = model)
|
||||
except Exception as e:
|
||||
return jsonify(error=str(e)), 403
|
||||
return html_body
|
||||
|
||||
@routes_blog.route(Model_View_Blog_Home.HASH_PAGE_BLOG_ARTICLE_HOW_TO_SCALE_YOUR_DOG_TRAINING_BUSINESS_FROM_SOLO_TO_MULTI_TRAINER_SUCCESS, methods=['GET'])
|
||||
def blog_article_how_to_scale_your_dog_training_business_from_solo_to_multi_trainer_success():
|
||||
try:
|
||||
form = Form_Newsletter()
|
||||
model = Model_View_Blog_Home(form_newsletter = form, hash_page_current = Model_View_Blog_Home.HASH_PAGE_BLOG_ARTICLE_HOW_TO_SCALE_YOUR_DOG_TRAINING_BUSINESS_FROM_SOLO_TO_MULTI_TRAINER_SUCCESS)
|
||||
model._title = 'Blog Article'
|
||||
html_body = render_template('pages/blog/_article_how_to_scale_your_dog_training_business_from_solo_to_multi_trainer_success.html', model = model)
|
||||
except Exception as e:
|
||||
return jsonify(error=str(e)), 403
|
||||
return html_body
|
||||
|
||||
@routes_blog.route(Model_View_Blog_Home.HASH_PAGE_BLOG_ARTICLE_THE_SCIENCE_BEHIND_DOG_TRAINING_ASSESSMENTS_HOW_TRACK_REAL_PROGRESS, methods=['GET'])
|
||||
def blog_article_the_science_behind_dog_training_assessments_how_to_track_real_progress():
|
||||
try:
|
||||
form = Form_Newsletter()
|
||||
model = Model_View_Blog_Home(form_newsletter = form, hash_page_current = Model_View_Blog_Home.HASH_PAGE_BLOG_ARTICLE_THE_SCIENCE_BEHIND_DOG_TRAINING_ASSESSMENTS_HOW_TRACK_REAL_PROGRESS)
|
||||
model._title = 'Blog Article'
|
||||
html_body = render_template('pages/blog/_article_the_science_behind_dog_training_assessments_how_to_track_real_progress.html', model = model)
|
||||
except Exception as e:
|
||||
return jsonify(error=str(e)), 403
|
||||
return html_body
|
||||
|
||||
@routes_blog.route(Model_View_Blog_Home.HASH_PAGE_BLOG_ARTICLE_WHY_EVERY_PROFESSIONAL_TRAINER_NEEDS_A_COMMAND_DICTIONARY_IN_2025, methods=['GET'])
|
||||
def blog_article_why_every_professional_trainer_needs_a_command_dictionary_in_2025():
|
||||
try:
|
||||
form = Form_Newsletter()
|
||||
model = Model_View_Blog_Home(form_newsletter = form, hash_page_current = Model_View_Blog_Home.HASH_PAGE_BLOG_ARTICLE_WHY_EVERY_PROFESSIONAL_TRAINER_NEEDS_A_COMMAND_DICTIONARY_IN_2025)
|
||||
model._title = 'Blog Article'
|
||||
html_body = render_template('pages/blog/_article_why_every_professional_trainer_needs_a_command_dictionary_in_2025.html', model = model)
|
||||
except Exception as e:
|
||||
return jsonify(error=str(e)), 403
|
||||
return html_body
|
||||
|
||||
@routes_blog.route(Model_View_Blog_Home.HASH_POST_BLOG_NEWSLETTER, methods=['POST'])
|
||||
def blog_newsletter_post():
|
||||
try:
|
||||
form = Form_Newsletter()
|
||||
if form.validate_on_submit():
|
||||
try:
|
||||
email = form.email.data
|
||||
# send email
|
||||
mailItem = Message("PARTS Website Contact Us Message", recipients=[current_app.config['MAIL_CONTACT_PUBLIC']])
|
||||
mailItem.body = f"Dear Lord Edward Middleton-Smith,\n\nI would like to receive marketing emails.\n\nKind regards,\n{email}"
|
||||
mail.send(mailItem)
|
||||
# save to database
|
||||
datastore = DataStore_Project_Hub_Contact_Form()
|
||||
contact_form = Contact_Form.from_json(form.to_json())
|
||||
datastore.save_contact_forms(
|
||||
comment = f'Email joining newsletter: {email}'
|
||||
, contact_forms = [contact_form]
|
||||
)
|
||||
return redirect(url_for(Model_View_Blog_Home.ENDPOINT_PAGE_BLOG_NEWSLETTER_SUCCESS))
|
||||
"""
|
||||
return API.get_standard_response(
|
||||
success = True,
|
||||
status_code = 200,
|
||||
message = f"Email subscribed to newsletter.",
|
||||
data = None,
|
||||
errors = [],
|
||||
meta = None
|
||||
)
|
||||
"""
|
||||
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/_contact.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_blog.route(Model_View_Blog_Home.HASH_PAGE_BLOG_NEWSLETTER_SUCCESS, methods=['GET'])
|
||||
def blog_newsletter_success():
|
||||
try:
|
||||
form = Form_Newsletter()
|
||||
model = Model_View_Blog_Home(form_newsletter = form, hash_page_current = Model_View_Blog_Home.HASH_PAGE_BLOG_NEWSLETTER_SUCCESS)
|
||||
html_body = render_template('pages/blog/_newsletter_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
|
||||
)
|
||||
|
||||
@@ -15,6 +15,7 @@ Contact Page Controller.
|
||||
from business_objects.api import API
|
||||
from business_objects.project_hub.contact_form import Contact_Form
|
||||
from datastores.datastore_project_hub import DataStore_Project_Hub_Contact_Form
|
||||
from extensions import db, oauth, mail
|
||||
from forms.project_hub.contact import Form_Contact
|
||||
from helpers.helper_app import Helper_App
|
||||
from models.model_view_contact import Model_View_Contact
|
||||
@@ -24,7 +25,6 @@ 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
|
||||
|
||||
Reference in New Issue
Block a user