Пример #1
0
def page_edit(page_id):
    page = Page.query.get_or_404(page_id)
    error_fields = []

    if request.method == 'POST':
        # Title
        title = request.form.get('title', "").strip()
        if len(title) <= 0:
            error_fields.append('title')

        # Slug
        slug = request.form.get('slug', "")
        if slug != "":
            slug = slugify(slug)
            if len(slug) <= 0 or slug is None:
                error_fields.append('slug')
        elif len(slug) <= 0 and len(title) > 0:
            slug = slugify(title)

        # Menu
        section = request.form['section'].strip()

        published = request.form.get('published', False)
        if published is not False:
            published = True

        content = request.form.get('content', "").strip()

        if len(error_fields) <= 0:
            # ensure slug is unique, add - until it is iff we are changing it
            if slug != page.slug:
                while Page.query.filter_by(slug=slug).count() > 0:
                    slug += '-'

            page.slug = slug
            page.name = title
            page.menu = section
            page.published = published
            page.content = content

            page.update_content(content)    # render HTML
            db.session.commit()

            flash("Page Saved")
            return redirect(url_for('admin.pages'))

    elif request.method == 'DELETE':
        db.session.delete(page)
        db.session.commit()

        return jsonify({
            '_csrf_token': app.jinja_env.globals['csrf_token'](),
        })

    sections = app.config['NAV_TOP_SECTIONS']

    return render_template('admin/page_edit.html',
                           sections=sections,
                           page=page,
                           error_fields=error_fields)
Пример #2
0
def category_add():
    error_fields = []

    if request.method == 'POST':
        name = request.form['name'].strip()
        if len(name) <= 0:
            error_fields.append('name')

        published = request.form.get('published', False)
        if published is not False:
            published = True

        if len(error_fields) <= 0:
            slug = slugify(name)

            # ensure slug is unique, add - until it is
            while Category.query.filter_by(slug=slug).count() > 0:
                slug += '-'

            db.session.add(Category(name, slug, published))
            db.session.commit()

            flash("Category added.")
            return redirect(url_for('admin.categories'))

    return render_template('admin/category_add.html',
                           error_fields=error_fields)
Пример #3
0
def page_add():
    error_fields = []

    if request.method == 'POST':
        # Title
        title = request.form.get('title', "").strip()
        if len(title) <= 0:
            error_fields.append('title')

        # Slug
        slug = request.form.get('slug', "")
        if slug != "":
            slug = slugify(slug)
            if len(slug) <= 0 or slug is None:
                error_fields.append('slug')
        elif len(slug) <= 0 and len(title) > 0:
            slug = slugify(title)

        # Menu
        section = request.form['section'].strip()

        published = request.form.get('published', False)
        if published is not False:
            published = True

        content = request.form.get('content', "").strip()

        if len(error_fields) <= 0:
            # ensure slug is unique, add - until it is
            while Page.query.filter_by(slug=slug).count() > 0:
                slug += '-'

            page = Page(title, slug, content, published, section)

            db.session.add(page)
            db.session.commit()

            flash("Page Saved")
            return redirect(url_for('admin.pages'))

    sections = app.config['NAV_TOP_SECTIONS']

    return render_template('admin/page_add.html',
                           sections=sections,
                           error_fields=error_fields)
Пример #4
0
def category_edit(cat_id):
    category = Category.query.get_or_404(cat_id)
    error_fields = []

    if request.method == 'POST':
        name = request.form['name'].strip()
        if len(name) <= 0:
            error_fields.append('name')

        slug = request.form['slug'].strip()
        if len(slug) <= 0:
            # generate a new slug if none is provided
            slug = slugify(name)

        published = request.form.get('published', False)
        if published is not False:
            published = True

        if len(error_fields) <= 0:
            if slug != category.slug:
                # if slug has changed, ensure it is unique
                while Category.query.filter_by(slug=slug).count() > 0:
                    slug += '-'

            category.name = name
            category.slug = slug
            category.published = published
            db.session.commit()

            flash("Category saved.")
            return redirect(url_for('admin.categories'))
    elif request.method == 'DELETE':
        db.session.delete(category)
        db.session.commit()

        return jsonify({
            '_csrf_token': app.jinja_env.globals['csrf_token'](),
        })

    return render_template('admin/category_edit.html',
                           category=category,
                           error_fields=error_fields)
Пример #5
0
def article_edit(art_id):
    article = Article.query.get_or_404(art_id)
    error_fields = []

    if request.method == 'POST':
        # Title
        title = request.form.get('title', "").strip()
        if len(title) <= 0:
            error_fields.append('title')

        # Slug
        slug = request.form.get('slug', "").strip()
        if slug != "" or slug != article.slug:
            slug = slugify(slug)
            if len(slug) <= 0 or slug is None:
                error_fields.append('slug')
        elif len(slug) <= 0 and len(title) > 0:
            slug = slugify(title)

        # author_id
        author_id = request.form.get('author_id', "").strip()
        if User.query.filter_by(id=author_id).count() != 1:
            error_fields.append('author_id')

        # Category_id
        category_id = request.form.get('category_id', "").strip()
        if Category.query.filter_by(id=category_id).count() != 1:
            error_fields.append('category_id')

        # datetime (should update to published time)
        published = request.form.get('published', False)
        if published is not False:
            published = True
        if article.published is False and published is not None:
            article.datetime = datetime.datetime.now()
        # front page
        front_page = request.form.get('front_page', False)
        if front_page is not False:
            front_page = True

        # summary
        summary = request.form.get('summary', "").strip()
        print('summary: {0}', summary)
        content = request.form.get('content', "").strip()
        print('content: {0}', content)

        # markdown

        if len(error_fields) <= 0:

            # ensure slug is unique, add - until it is (if we're changing the slug)
            if article.slug != slug:
                while Article.query.filter(db.and_(
                        Article.slug == slug,
                        Article.id != article.id)).count() > 0:
                    slug += '-'

            article.title = title
            article.slug = slug
            article.category_id = category_id
            article.author_id = author_id
            article.published = published
            article.summary = summary
            article.content = content
            article.front_page = front_page
            db.session.commit()
            article.render_html()
            db.session.commit()

            flash("Article Saved")
            return redirect(url_for('admin.articles'))
    elif request.method == 'DELETE':
        db.session.delete(article)
        db.session.commit()

        return jsonify({
            '_csrf_token': app.jinja_env.globals['csrf_token'](),
        })

    categories = Category.query.all()
    authors = User.query.all()
    return render_template('admin/article_edit.html',
                           article=article,
                           categories=categories,
                           authors=authors,
                           error_fields=error_fields)
Пример #6
0
def article_add():
    error_fields = []
    # article = Article()

    if request.method == 'POST':
        # Title
        title = request.form.get('title', "").strip()
        if len(title) <= 0:
            error_fields.append('title')

        # Slug
        slug = request.form.get('slug', "")
        if slug != "":
            slug = slugify(slug)
            if len(slug) <= 0 or slug is None:
                error_fields.append('slug')
        elif len(slug) <= 0 and len(title) > 0:
            slug = slugify(title)

        # author_id
        author_id = request.form['author_id'].strip()
        if User.query.filter_by(id=author_id).count() != 1:
            error_fields.append('author_id')

        # Category_id
        category_id = request.form['category_id'].strip()
        if Category.query.filter_by(id=category_id).count() != 1:
            error_fields.append('category_id')

        # datetime (should update to published time)
        published = request.form.get('published', False)
        if published is not False:
            published = True
        # front page
        front_page = request.form.get('front_page', False)
        if front_page is not False:
            front_page = True

        # summary
        summary = request.form.get('summary', "").strip()
        content = request.form.get('content', "").strip()

        if len(error_fields) <= 0:
            # ensure slug is unique, add - until it is
            while Article.query.filter_by(slug=slug).count() > 0:
                slug += '-'

            article = Article(title, slug, category_id, author_id, summary, content, published)
            # Why can't we just have a parameterless constructor so we don't
            # have to add constructors for each new field
            article.front_page = front_page
            if article.published is True:
                article.datetime = datetime.datetime.now()

            db.session.add(article)
            article.render_html()   # markdown to html
            db.session.commit()

            flash("Article Saved")
            return redirect(url_for('admin.articles'))

    categories = Category.query.all()
    authors = User.query.all()
    return render_template('admin/article_add.html',
                           categories=categories,
                           authors=authors,
                           error_fields=error_fields)