Setup a basic flask-admin interface
This commit is contained in:
16
admin/freeposte/__init__.py
Normal file
16
admin/freeposte/__init__.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from flask import Flask
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
|
||||
|
||||
|
||||
# Create application
|
||||
app = Flask(__name__)
|
||||
|
||||
app.config.update({
|
||||
'SQLALCHEMY_DATABASE_URI': 'sqlite:////tmp/freeposte.db'
|
||||
})
|
||||
|
||||
# Create the database
|
||||
db = SQLAlchemy(app)
|
||||
|
||||
from freeposte import views
|
||||
BIN
admin/freeposte/__pycache__/__init__.cpython-35.pyc
Normal file
BIN
admin/freeposte/__pycache__/__init__.cpython-35.pyc
Normal file
Binary file not shown.
BIN
admin/freeposte/__pycache__/models.cpython-35.pyc
Normal file
BIN
admin/freeposte/__pycache__/models.cpython-35.pyc
Normal file
Binary file not shown.
BIN
admin/freeposte/__pycache__/views.cpython-35.pyc
Normal file
BIN
admin/freeposte/__pycache__/views.cpython-35.pyc
Normal file
Binary file not shown.
34
admin/freeposte/models.py
Normal file
34
admin/freeposte/models.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from freeposte import db
|
||||
|
||||
|
||||
class Domain(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(80))
|
||||
max_users = db.Column(db.Integer)
|
||||
max_aliases = db.Column(db.Integer)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class User(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
username = db.Column(db.String(80))
|
||||
domain_id = db.Column(db.Integer, db.ForeignKey(Domain.id))
|
||||
domain = db.relationship(Domain, backref='users')
|
||||
password = db.Column(db.String(255))
|
||||
quota_bytes = db.Column(db.Integer())
|
||||
|
||||
def __str__(self):
|
||||
return '{0}@{1}'.format(self.username, self.domain.name)
|
||||
|
||||
|
||||
class Alias(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
localpart = db.Column(db.String(80))
|
||||
domain_id = db.Column(db.Integer, db.ForeignKey(Domain.id))
|
||||
domain = db.relationship(Domain, backref='aliases')
|
||||
destination = db.Column(db.String())
|
||||
|
||||
def __str__(self):
|
||||
return '{0}@{1}'.format(self.username, self.domain.name)
|
||||
26
admin/freeposte/views.py
Normal file
26
admin/freeposte/views.py
Normal file
@@ -0,0 +1,26 @@
|
||||
import flask_admin as admin
|
||||
from flask_admin.contrib import sqla
|
||||
|
||||
from freeposte import app, db, models
|
||||
|
||||
|
||||
# Flask admin
|
||||
admin = admin.Admin(app, name='Freeposte.io', template_mode='bootstrap3')
|
||||
|
||||
|
||||
class DomainModelView(sqla.ModelView):
|
||||
pass
|
||||
|
||||
|
||||
class UserModelView(sqla.ModelView):
|
||||
pass
|
||||
|
||||
|
||||
class AliasModelView(sqla.ModelView):
|
||||
pass
|
||||
|
||||
|
||||
# Add views
|
||||
admin.add_view(DomainModelView(models.Domain, db.session))
|
||||
admin.add_view(UserModelView(models.User, db.session))
|
||||
admin.add_view(AliasModelView(models.Alias, db.session))
|
||||
Reference in New Issue
Block a user