Initial commit

This commit is contained in:
2018-03-31 18:26:40 +02:00
commit 94f0009144
54 changed files with 9069 additions and 0 deletions

0
flatpages/__init__.py Normal file
View File

22
flatpages/admin.py Normal file
View File

@@ -0,0 +1,22 @@
from flaskbase.admin import ModelView
from flaskbase.extensions import admin, db
from flatpages.models import Page
from flask_pagedown.fields import PageDownField
class PageModelView(ModelView):
roles = ['editor']
column_list = ('slug', 'title', 'updated')
form_columns = ('title', 'slug', 'content')
form_extra_fields = {
'content': PageDownField('Content'),
}
form_widget_args = {
'content': {
'rows': 10,
}
}
admin.add_view(PageModelView(Page, db.session))

22
flatpages/models.py Normal file
View File

@@ -0,0 +1,22 @@
from flaskbase.extensions import db
from datetime import datetime
from sqlalchemy.orm import foreign, remote
class Page(db.Model):
__tablename__ = 'pages'
id = db.Column(db.Integer, primary_key=True)
slug = db.Column(db.String(64), unique=True)
title = db.Column(db.String(256))
content = db.Column(db.Text)
created = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
updated = db.Column(db.DateTime, default=datetime.utcnow, nullable=False,
onupdate=datetime.utcnow)
subpages = db.relationship(
'Page', primaryjoin=remote(foreign(slug)).like(slug.concat('/%')),
viewonly=True)
def __repr__(self):
return '<Page {0.slug} "{0.title}">'.format(self)

13
flatpages/views.py Normal file
View File

@@ -0,0 +1,13 @@
from flask import Blueprint, render_template
from flaskbase.utils import get_object_or_404
from flatpages.models import Page
blueprint = Blueprint('flatpages', __name__)
@blueprint.route('/<path:slug>')
def show(slug):
return render_template(
'flatpages/show.html',
page=get_object_or_404(Page, Page.slug == slug),
)