Exemplo n.º 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)
Exemplo n.º 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()

            cache.set('blog_categories', list_categories())

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

    return render_template('admin/category_add.html',
                           error_fields=error_fields)
Exemplo n.º 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()

            cache.set('menus', get_menus())

            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)
Exemplo n.º 4
0
def page_edit(page_id):
    page = Page.query.get_or_404(page_id)
    form = PageForm()
    if request.method == 'POST' and form.validate():
        slug = form.slug.data
        if len(slug) <= 0:
            slug = slugify(form.title.data)

        # 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 = form.title.data
        page.menu = form.section.data
        page.published = form.published.data
        page.update_content(form.content.data)

        try:
            db.session.commit()
        except:
            db.session.rollback()
            raise

        cache.set('menus', get_menus())

        revision = PageRevision(page_id=page.id,
                                author_id=current_user.id,
                                name=form.title.data,
                                content=form.content.data)
        db.session.add(revision)

        try:
            db.session.commit()
        except:
            db.session.rollback()
            raise

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

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

        cache.set('menus', get_menus())

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

    return render_template('admin/page_edit.html',
                           sections=app.config['NAV_TOP_SECTIONS'],
                           page=page,
                           form=form)
Exemplo n.º 5
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

            try:
                db.session.commit()
            except:
                db.session.rollback()
                raise

            cache.set('blog_categories', list_categories())

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

        try:
            db.session.commit()
        except:
            db.session.rollback()
            raise

        cache.set('blog_categories', list_categories())

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

    return render_template('admin/category_edit.html',
                           category=category,
                           error_fields=error_fields)
Exemplo n.º 6
0
def article_add():
    form = ArticleForm()
    if form.is_submitted() and form.validate():
        slug = form.slug.data
        if len(slug) <= 0:
            slug = slugify(form.title.data)

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

        article = Article(title=form.title.data,
                          slug=slug,
                          category_id=form.category_id.data,
                          author_id=form.author_id.data,
                          summary=form.summary.data,
                          content=form.content.data,
                          published=form.published.data)
        article.front_page = form.front_page.data
        if article.published is True:
            article.datetime = datetime.datetime.utcnow()

        article.render_html()
        db.session.add(article)
        try:
            db.session.commit()
        except:
            db.session.rollback()
            raise

        revision = ArticleRevision(article_id=article.id,
                                   author_id=current_user.id,
                                   title=form.title.data,
                                   summary=form.summary.data,
                                   content=form.content.data)
        revision.render_html()
        db.session.add(revision)
        try:
            db.session.commit()
        except:
            db.session.rollback()
            raise

        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,
                           form=form)
Exemplo n.º 7
0
def page_add():
    form = PageForm()
    if form.is_submitted() and form.validate():
        slug = form.slug.data
        if len(slug) <= 0:
            slug = slugify(form.title.data)

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

        page = Page(name=form.title.data,
                    slug=slug,
                    content=form.content.data,
                    published=form.published.data,
                    menu=form.section.data)
        db.session.add(page)

        try:
            db.session.commit()
        except:
            db.session.rollback()
            raise

        cache.set('menus', get_menus())

        revision = PageRevision(page_id=page.id,
                                author_id=current_user.id,
                                name=form.title.data,
                                content=form.content.data)
        db.session.add(revision)

        try:
            db.session.commit()
        except:
            db.session.rollback()
            raise

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

    return render_template('admin/page_add.html',
                           sections=app.config['NAV_TOP_SECTIONS'],
                           form=form)
Exemplo n.º 8
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.utcnow()
        # 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()

        # 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)
Exemplo n.º 9
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.utcnow()

            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)
Exemplo n.º 10
0
def article_edit(art_id):
    article = Article.query.get_or_404(art_id)
    form = ArticleForm()
    if request.method == 'POST' and form.validate():
        slug = form.slug.data
        if len(slug) <= 0:
            slug = slugify(form.title.data)

        # 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 = form.title.data
        article.slug = slug
        article.category_id = form.category_id.data
        article.author_id = form.author_id.data
        article.published = form.published.data
        article.summary = form.summary.data
        article.content = form.content.data
        article.front_page = form.front_page.data
        article.render_html()

        try:
            db.session.commit()
        except:
            db.session.rollback()
            raise

        revision = ArticleRevision(article_id=article.id,
                                   author_id=current_user.id,
                                   title=form.title.data,
                                   summary=form.summary.data,
                                   content=form.content.data)
        revision.render_html()
        db.session.add(revision)

        try:
            db.session.commit()
        except:
            db.session.rollback()
            raise

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

        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,
                           form=form)