alex-sharoff-website/backend/main.py
phzhik 24ad080a61 Backend
+ Added requirements.txt
* Moved api keys to env
2024-10-09 17:35:59 +04:00

87 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import locale
import logging
from flask import Flask, request
from flask_cors import CORS, cross_origin
from flask_executor import Executor
from flask_wtf import FlaskForm, RecaptchaField
import telegram_send
from wtforms import StringField
from wtforms.validators import DataRequired
from environs import Env
env = Env()
env.read_env()
# Set locale to UTF-8 as server's one is ANSI - this breaks cyrillic logging
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
logging.basicConfig(filename=f'{env.str("DEPLOY_PATH")}/log.log',
filemode='a',
format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.INFO)
logger = logging.getLogger()
app = Flask(__name__)
app.secret_key = env.str("FLASK_APIKEY")
app.config["APPLICATION_ROOT"] = "/api"
app.config["WTF_CSRF_ENABLED"] = False
app.config["RECAPTCHA_PUBLIC_KEY"] = env.str("RECAPTCHA_PUBLIC_KEY")
app.config["RECAPTCHA_PRIVATE_KEY"] = env.str("RECAPTCHA_PRIVATE_KEY")
app.config['EXECUTOR_TYPE'] = 'process'
app.config['EXECUTOR_PROPAGATE_EXCEPTIONS'] = True
executor = Executor(app)
def send_telegram(message, silent=False):
telegram_send.send(messages=[message], conf=f'{env.str("DEPLOY_PATH")}/telegram.conf', silent=silent)
class ContactForm(FlaskForm):
name = StringField('Username', validators=[DataRequired()])
contacts = StringField('Contacts', validators=[DataRequired()])
message = StringField('Message')
recaptcha = RecaptchaField()
@app.route('/contact/', methods=['POST'])
def contact():
form = ContactForm(request.form)
msg_template = """
Обращение через форму обратной связи с сайта alex-sharoff.ru:
Имя: {name}
Контакты: {contacts}
-------
{message}
"""
if form.validate_on_submit():
text = msg_template.format(
name=form.name.data,
contacts=form.contacts.data,
message=form.message.data
)
logger.info(f'{form.name.data} - {form.contacts.data}: [{form.message.data}]')
executor.submit(send_telegram, text)
return '', 200
return '', 400
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()