Initial commit
This commit is contained in:
0
flatpages/__init__.py
Normal file
0
flatpages/__init__.py
Normal file
22
flatpages/admin.py
Normal file
22
flatpages/admin.py
Normal 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
22
flatpages/models.py
Normal 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
13
flatpages/views.py
Normal 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),
|
||||
)
|
||||
Reference in New Issue
Block a user