· 2 years ago · Dec 24, 2022, 02:20 PM
1### entrypoint.py
2import os
3
4from flask import send_from_directory
5
6from app import create_app
7
8settings_module = os.getenv('APP_SETTINGS_MODULE')
9app = create_app(settings_module)
10
11@app.route('/media/posts/<filename>')
12def media_posts(filename):
13 dir_path = os.path.join(
14 app.config['MEDIA_DIR'],
15 app.config['POSTS_IMAGES_DIR'])
16 return send_from_directory(dir_path, filename)
17
18---------------------------------------------------------------------
19###app/__init__.py
20import logging
21from logging.handlers import SMTPHandler
22
23from flask import Flask, render_template
24from flask_login import LoginManager
25from flask_mail import Mail
26from flask_migrate import Migrate
27from flask_sqlalchemy import SQLAlchemy
28
29from app.common.filters import format_datetime
30
31login_manager = LoginManager()
32db = SQLAlchemy()
33migrate = Migrate()
34mail = Mail()
35
36def create_app(settings_module):
37 app = Flask(__name__, instance_relative_config=True)
38 # Load the config file specified by the APP environment variable
39 app.config.from_object(settings_module)
40 # Load the configuration from the instance folder
41 if app.config.get('TESTING', False):
42 app.config.from_pyfile('config-testing.py', silent=True)
43 else:
44 app.config.from_pyfile('config.py', silent=True)
45
46 #configure_logging(app)
47
48 login_manager.init_app(app)
49 login_manager.login_view = "auth.login"
50
51 db.init_app(app)
52 migrate.init_app(app, db)
53 mail.init_app(app)
54
55 # Registro de los filtros
56 register_filters(app)
57
58 # Registro de los Blueprints
59 from .auth import auth_bp
60 app.register_blueprint(auth_bp)
61
62 from .admin import admin_bp
63 app.register_blueprint(admin_bp)
64
65 from .public import public_bp
66 app.register_blueprint(public_bp)
67
68 from .compras import compras_bp
69 app.register_blueprint(compras_bp)
70
71 from .consultas import consultas_bp
72 app.register_blueprint(consultas_bp)
73
74 from .abms import abms_bp
75 app.register_blueprint(abms_bp)
76
77 # Custom error handlers
78 register_error_handlers(app)
79
80 return app
81
82def register_filters(app):
83 app.jinja_env.filters['datetime'] = format_datetime
84
85def register_error_handlers(app):
86
87 @app.errorhandler(500)
88 def base_error_handler(e):
89 #logger.error(e)
90 return render_template('500.html'), 500
91
92 @app.errorhandler(404)
93 def error_404_handler(e):
94 return render_template('404.html'), 404
95
96 @app.errorhandler(401)
97 def error_401_handler(e):
98 return render_template('401.html'), 401
99
100-------------------------------------------------------------------
101### config/default.py
102from os.path import abspath, dirname, join
103
104# Define the application directory
105BASE_DIR = dirname(dirname(abspath(__file__)))
106
107# Media dir
108MEDIA_DIR = join(BASE_DIR, 'media')
109ARCHIVOS_DIR = join(MEDIA_DIR, 'archivos')
110
111SECRET_KEY = '7110c8ae51a4b5af97be6534caef90e4bb9bdcb3380af008f90b23a5d1616bf319bc298105da20fe'
112
113# Database configuration
114SQLALCHEMY_TRACK_MODIFICATIONS = False
115
116# App environments
117APP_ENV_LOCAL = 'local'
118APP_ENV_TESTING = 'testing'
119APP_ENV_DEVELOPMENT = 'development'
120APP_ENV_STAGING = 'staging'
121APP_ENV_PRODUCTION = 'production'
122APP_ENV = ''
123
124# Configuración del email
125MAIL_SERVER = 'smtp.gmail.com'
126MAIL_PORT = 587
127MAIL_USERNAME = ''
128MAIL_PASSWORD = ''
129DONT_REPLY_FROM_EMAIL = '(no responder, @gmail.com)'
130ADMINS = ('@gmail.com', )
131MAIL_USE_TLS = True
132MAIL_DEBUG = False
133
134ITEMS_PER_PAGE = 3
135
136-------------------------------------------------------------------------
137###config/prod.py
138from .default import *
139
140SECRET_KEY = '7110c8ae51a4b5af97be6534caef90e4bb9bdcb3380af008f90b23a5d1616bf319bc298105da20fe'
141
142APP_ENV = APP_ENV_PRODUCTION
143
144SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}?auth_plugin=mysql_native_password".format(
145 username = "root",
146 password = "TESTTEST",
147 hostname = "localhost:3306",
148 databasename = "aicragdb"
149)
150
151DEBUG = False
152