168 lines
7.9 KiB
Python
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
|
|
)
|