1
0
Fork 0
mirror of https://codeberg.org/Mo8it/AdvLabDB.git synced 2024-12-20 23:41:20 +00:00
AdvLabDB/advlabdb/__init__.py

72 lines
1.8 KiB
Python
Raw Normal View History

2022-04-18 16:04:48 +00:00
from os import environ
2021-03-18 13:53:55 +00:00
from flask import Flask
2021-06-02 21:43:41 +00:00
from flask_admin import Admin
2021-04-03 00:11:26 +00:00
from flask_security import Security, SQLAlchemyUserDatastore
from flask_security.models import fsqla_v2 as fsqla
2021-06-02 21:43:41 +00:00
from flask_sqlalchemy import SQLAlchemy
2021-03-18 13:53:55 +00:00
2022-04-18 16:04:48 +00:00
from dotenv import load_dotenv
from advlabdb.independent_funs import parse_bool
2021-06-28 16:43:13 +00:00
2022-04-18 16:04:48 +00:00
def set_from_env(app, var):
app.config[var] = environ[var]
load_dotenv(".env")
app = Flask(__name__)
2021-04-03 00:11:26 +00:00
2021-06-28 16:43:13 +00:00
app.config["SECURITY_EMAIL_VALIDATOR_ARGS"] = {
2022-04-18 16:04:48 +00:00
"check_deliverability": parse_bool(environ["CHECK_EMAIL_DELIVERABILITY"])
}
2021-06-28 16:43:13 +00:00
2022-04-18 16:04:48 +00:00
set_from_env(app, "SERVER_NAME")
2022-04-18 16:04:48 +00:00
set_from_env(app, "SECRET_KEY")
set_from_env(app, "SECURITY_PASSWORD_SALT")
2021-04-03 00:11:26 +00:00
2022-04-18 16:04:48 +00:00
set_from_env(app, "SQLALCHEMY_DATABASE_URI")
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
2022-03-02 22:35:38 +00:00
app.config["FLASK_ADMIN_FLUID_LAYOUT"] = True
2021-03-18 13:53:55 +00:00
db = SQLAlchemy(app)
2021-04-03 00:11:26 +00:00
fsqla.FsModels.set_db_info(db)
from advlabdb import customClasses
2021-06-02 21:43:41 +00:00
2021-07-30 00:03:44 +00:00
adminSpace = Admin(
2021-06-02 21:43:41 +00:00
app,
name="Admin@AdvLabDB",
2021-07-30 00:03:44 +00:00
url="/admin",
endpoint="adminSpace",
2021-06-02 21:43:41 +00:00
template_mode="bootstrap3",
index_view=customClasses.SecureAdminIndexView(name="Admin", url="/admin", endpoint="adminSpace"),
2021-07-30 00:03:44 +00:00
)
assistantSpace = Admin(
app,
name="Assistant@AdvLabDB",
url="/assistant",
endpoint="assistantSpace",
template_mode="bootstrap3",
index_view=customClasses.SecureAssistantIndexView(name="Assistant", url="/assistant", endpoint="assistantSpace"),
2021-06-02 21:43:41 +00:00
)
2021-03-18 13:53:55 +00:00
from advlabdb import models
2021-04-03 00:11:26 +00:00
# Setup Flask-Security
user_datastore = SQLAlchemyUserDatastore(db, models.User, models.Role)
Security(app, user_datastore)
2021-04-03 00:11:26 +00:00
try:
2021-07-30 00:50:49 +00:00
from advlabdb import routes, adminModelViews, assistantModelViews
except Exception as ex:
print(
"\nYou are probably initializing the database with a script. If not, then you have to worry about not being able to import in __init__.py!\n"
)
2021-07-29 18:03:41 +00:00
print(str(ex))