""" 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 )