60 lines
2.5 KiB
Python
60 lines
2.5 KiB
Python
from flask import Flask, render_template, request, redirect, jsonify
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
from sqlalchemy.exc import SQLAlchemyError
|
|
from flask_marshmallow import Marshmallow
|
|
from flask_bootstrap import Bootstrap
|
|
from wtforms import SubmitField, StringField, HiddenField, SelectField, IntegerField, TextAreaField, validators
|
|
from flask_wtf import FlaskForm
|
|
from status import st, Status
|
|
import re
|
|
import socket
|
|
|
|
####################################### Flask App globals #######################################
|
|
PROD_HOST="pa_web"
|
|
hostname = socket.gethostname()
|
|
print( "Running on: {}".format( hostname) )
|
|
app = Flask(__name__)
|
|
### what is this value? I gather I should change it?
|
|
|
|
# connection string: pguseraccount, pgpasswd, mara as the host, db port is 55432, dbname
|
|
DB_URL = 'postgresql+psycopg2://pa:for_now_pa@mara.ddp.net:55432/pa'
|
|
|
|
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URL
|
|
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
|
app.config.from_mapping( SECRET_KEY=b'\xd6\x04\xbdj\xfe\xed$c\x1e@\xad\x0f\x13,@G')
|
|
db = SQLAlchemy(app)
|
|
ma = Marshmallow(app)
|
|
Bootstrap(app)
|
|
|
|
################################# Now, import non-book classes ###################################
|
|
from settings import Settings
|
|
from files import Files
|
|
from person import Person
|
|
from refimg import Refimg
|
|
from importlog import Importlog
|
|
from ai import *
|
|
|
|
####################################### CLASSES / DB model #######################################
|
|
class Person_Refimg_Link(db.Model):
|
|
__tablename__ = "person_refimg_link"
|
|
person_id = db.Column(db.Integer, db.ForeignKey('person.id'), unique=True, nullable=False, primary_key=True)
|
|
refimg_id = db.Column(db.Integer, db.ForeignKey('refimg.id'), unique=True, nullable=False, primary_key=True)
|
|
|
|
def __repr__(self):
|
|
return "<person_id: {}, refimg_id>".format(self.person_id, self.refimg_id)
|
|
|
|
####################################### GLOBALS #######################################
|
|
# allow jinja2 to call these python functions directly
|
|
app.jinja_env.globals['ClearStatus'] = st.ClearStatus
|
|
|
|
# default page, just the navbar
|
|
@app.route("/", methods=["GET"])
|
|
def main_page():
|
|
return render_template("base.html", alert=st.GetAlert(), message=st.GetMessage())
|
|
|
|
if __name__ == "__main__":
|
|
if hostname == PROD_HOST:
|
|
app.run(ssl_context=('/etc/letsencrypt/live/book.depaoli.id.au/cert.pem', '/etc/letsencrypt/live/book.depaoli.id.au/privkey.pem'), host="0.0.0.0", debug=False)
|
|
else:
|
|
app.run(host="0.0.0.0", debug=True)
|