Files

168 lines
7.9 KiB
Python

"""
Project: PARTS Website
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Technology: App Routing
Feature: Blog - Home Routes
Description:
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, current_app, redirect, url_for
from flask_mail import Mail, Message
routes_blog = Blueprint('routes_blog', __name__)
@routes_blog.route(Model_View_Blog_Home.HASH_PAGE_BLOG_HOME, methods=['GET'])
def blog_home():
try:
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_HIDDEN_COSTS_OF_SPREADSHEET_DOG_TRAINING_WHY_UK_TRAINERS_ARE_LOSING_2000_PLUS_POUNDS_PER_YEAR, methods=['GET'])
def blog_article_the_hidden_costs_of_spreadsheet_dog_training_why_uk_trainers_are_losing_2000_plus_pounds_per_year():
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_hidden_costs_of_spreadsheet_dog_training_why_uk_trainers_are_losing_2000_plus_pounds_per_year.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
)