-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
79 lines (61 loc) · 2.46 KB
/
main.py
File metadata and controls
79 lines (61 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
"""СКРИПТ: Файл запуска"""
# - импортирование модулей
from flask import Flask
from markupsafe import Markup
import markdown
from config import *
from models import db, User
import models
from blueprints.registration.validation import hash_password
from flask_socketio import SocketIO
# - инициализация приложения
def create_app(config_name='default') -> Flask:
app = Flask(__name__)
config_class = CONFIGS.get(config_name)
app.config.from_object(config_class)
db.init_app(app)
socketio = SocketIO(app)
models.socketio = socketio
with app.app_context():
from blueprints.main.routes import bp as main_bp
from blueprints.registration.routes import bp as registration_bp
from blueprints.admin.routes import bp as admin_bp
from blueprints.fight.routes import bp as fight_bp
from blueprints.problems.routes import bp as problems_bp
from blueprints.users.routes import bp as users_bp
from blueprints.registration.routes import inject_user, load_user
app.context_processor(inject_user)
app.before_request(load_user)
app.register_blueprint(main_bp)
app.register_blueprint(registration_bp, url_prefix='/registration')
app.register_blueprint(admin_bp, url_prefix='/admin')
app.register_blueprint(fight_bp, url_prefix='/fight')
app.register_blueprint(problems_bp, url_prefix='/problems')
app.register_blueprint(users_bp, url_prefix='/users')
db.create_all()
if not User.query.filter_by(username=app.config['DEFAULT_ADMIN_USERNAME']).first():
admin_user = User(
username=app.config['DEFAULT_ADMIN_USERNAME'],
password_sha256=hash_password(app.config['DEFAULT_ADMIN_PASSWORD']),
privileges=1,
elo=app.config['DEFAULT_ELO']
)
db.session.add(admin_user)
db.session.commit()
def render_markdown(text):
html = markdown.markdown(
text,
extensions=[
"fenced_code",
"codehilite",
"tables",
"nl2br",
"sane_lists"
]
)
return Markup(html)
app.jinja_env.filters["markdown"] = render_markdown
return app
app = create_app(config_name=CURRENT_CONFIG_NAME)
if __name__ == '__main__':
app.run(debug=False, host='0.0.0.0', port=50000)