From 9e6cb91da9b1bd42e726be823473284fe6402ef1 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 17 Sep 2021 09:32:13 -0700 Subject: [PATCH] Let's get it started... --- statusforce/__init__.py | 0 statusforce/app.py | 17 +++++++++++++++++ statusforce/db.py | 14 ++++++++++++++ statusforce/models.py | 19 +++++++++++++++++++ 4 files changed, 50 insertions(+) create mode 100644 statusforce/__init__.py create mode 100644 statusforce/app.py create mode 100644 statusforce/db.py create mode 100644 statusforce/models.py diff --git a/statusforce/__init__.py b/statusforce/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statusforce/app.py b/statusforce/app.py new file mode 100644 index 0000000..d6b5cc9 --- /dev/null +++ b/statusforce/app.py @@ -0,0 +1,17 @@ +from flask import Flask +from flask_admin import Admin +from flask_admin.contrib.sqla import ModelView + +from statusforce.db import db +from statusforce.models import Service, Incident + + +# Set up Flask application +app = Flask(__name__) +app.config['FLASK_ADMIN_SWATCH'] = 'materia' +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db' + +db.init_app(app) +admin = Admin(app, name='StatusForce', template_mode='bootstrap4') +admin.add_view(ModelView(Service)) +admin.add_view(ModelView(Incident)) diff --git a/statusforce/db.py b/statusforce/db.py new file mode 100644 index 0000000..5acbaca --- /dev/null +++ b/statusforce/db.py @@ -0,0 +1,14 @@ +from flask_sqlalchemy import SQLAlchemy + +db = SQLAlchemy() + +# Pull out some attributes to make life easier +Model = db.Model +Column = db.Column +ForeignKey = db.ForeignKey +Boolean = db.Boolean +DateTime = db.DateTime +Integer = db.Integer +String = db.String +relationship = db.relationship +backref = db.backref diff --git a/statusforce/models.py b/statusforce/models.py new file mode 100644 index 0000000..928ef52 --- /dev/null +++ b/statusforce/models.py @@ -0,0 +1,19 @@ +from datetime import datetime + +from sqlalchemy.sql.expression import func + +from statusforce.db import Model, Column, ForeignKey, DateTime, Integer, String + + +class Service(Model): + id = Column(Integer, primary_key=True, autoincrement=True) + name = Column(String, nullable=False) + status = Column(String, choices=['operational', 'unclear', 'offline']) + + +class Incident(Model): + id = Column(Integer, primary_key=True, autoincrement=True) + service_id = Column(Integer, ForeignKey('service.id')) + title = Column(String, nullable=False) + created = Column(DateTime, nullable=False, default=datetime.utcnow) + updated = Column(DateTime, unupdate=func.current_timestamp())