Example #1
0
def metadata_page():
    if request.method == 'GET':
        pair = storage_service.site_meta()
        data = pair.json_value()
        data['comment_moderation_keys'] = ','.join(
            data['comment_moderation_keys'])
        pages = page_service.dropdown(False)
        configs = {key: data[key] for key in META_KEYS}
        return render_template('admin/extend/metadata/edit.html',
                               pages=pages,
                               **configs)

    p = request.form.get
    sitename = p('sitename')
    description = p('description')
    site_page = p('site_page', type=int, default=0)
    posts_per_page = p('posts_per_page', type=int, default=0)
    auto_published_comments = p('auto_published_comments', type=bool)
    comment_moderation_keys = p('comment_moderation_keys')

    storage_service.update_site_meta(sitename, description, site_page,
                                     posts_per_page, auto_published_comments,  comment_moderation_keys)
    site.clear_cache()
    flash(text('metadata.updated'), 'success')
    return redirect(url_for('admin.metadata_page'))
Example #2
0
def post_edit(post_id):
    if request.method == 'GET':
        fields = extend_service.get_fields_by_type('post', post_id)
        return render_template('admin/post/edit.html',
                               statuses=STATUSES,
                               categories=category_service.dropdown(),
                               article=post_service.get_by_pid(post_id),
                               fields=fields)

    p = request.form.get
    title = p('title', default='')
    description = p('description')
    category = p('category', type=int, default=1)
    status = p('status', default='draft')
    comments = p('comments', type=int, default=0)
    html = p('html')
    css = p('custom_css', default='')
    js = p('custom_js', default='')
    slug = p('slug')

    title = title.strip()
    slug = slug.strip() or title

    validator = Validator()
    (validator.check(title, 'min', text('post.title_missing'),
                     1).check(slug, 'min', text('post.title_missing'), 1))
    if validator.errors:
        flash(validator.errors, 'error')
        return redirect(url_for('admin.post_edit', post_id=post_id))

    post = post_service.update_post(title, slug, description, html, css, js,
                                    category, status, comments, post_id)
    extend_service.prcoess_field(post, 'post')
    flash(text('post.updated'), 'success')
    return redirect(url_for('admin.post_edit', post_id=post_id))
Example #3
0
def comment_edit(comment_id):
    if request.method == 'GET':
        statuses = {
            'approved': text('global.approved'),
            'pending': text('global.pending'),
            'spam': text('global.spam')
        }
        comment = comment_service.get(comment_id)
        return render_template('admin/comment/edit.html',
                               comment=comment,
                               statuses=statuses)

    p = request.form.get
    name = p('name')
    email = p('email')
    content = p('content')
    status = p('status')

    name, content = name.strip(), content.strip()

    validator = Validator()
    (validator.check(name, 'min', text('comment.name_missing'),
                     1).check(content, 'min', text('comment.content_missing'),
                              1))
    if validator.errors:
        flash(validator.errors, 'error')
        return redirect(url_for('admin.comment_edit', comment_id=comment_id))

    comment = comment_service.update_comment(comment_id, name, email, content,
                                             status)
    flash(text('comment.updated'), 'success')
    return redirect(url_for('admin.comment_edit', comment_id=comment.cid))
Example #4
0
File: post.py Project: lf8289/white
def post_add():
    if request.method == 'GET':
        fields = extend_service.get_fields_by_type('post')
        return render_template('admin/post/add.html',
                               statuses=STATUSES,
                               categories=category_service.dropdown(),
                               fields=fields)

    p = request.form.get
    title = p('title', default='')
    description = p('description')
    category = p('category', type=int, default=1)
    status = p('status', default='draft')
    comments = p('comments', type=int, default=0)
    html = p('html')
    css = p('custom_css', default='')
    js = p('custom_js', default='')
    slug = p('slug')

    title = title.strip()
    slug = slug.strip() or title

    validator = Validator()
    (validator.check(title, 'min', text('post.title_missing'), 1)
        .check(slug, 'min', text('post.title_missing'), 1)
     )
    if validator.errors:
        flash(validator.errors, 'error')
        return render_template('admin/post/add.html')

    author = g.user
    post = post_service.add_post(
        title, slug, description, html, css, js, category, status, comments, author)
    extend_service.prcoess_field(post, 'post')
    return redirect(url_for('admin.post_page'))
Example #5
0
def comment_edit(comment_id):
    if request.method == 'GET':
        statuses = {
            'approved': text('global.approved'),
            'pending': text('global.pending'),
            'spam': text('global.spam')
        }
        comment = comment_service.get(comment_id)
        return render_template('admin/comment/edit.html',
                               comment=comment,
                               statuses=statuses)

    p = request.form.get
    name = p('name')
    email = p('email')
    content = p('content')
    status = p('status')

    name, content = name.strip(), content.strip()

    validator = Validator()
    (validator.check(name, 'min', text('comment.name_missing'), 1)
        .check(content, 'min', text('comment.content_missing'), 1)
     )
    if validator.errors:
        flash(validator.errors, 'error')
        return redirect(url_for('admin.comment_edit', comment_id=comment_id))

    comment = comment_service.update_comment(
        comment_id, name, email, content, status)
    flash(text('comment.updated'), 'success')
    return redirect(url_for('admin.comment_edit', comment_id=comment.cid))
Example #6
0
def category_delete(category_id):
    if category_id == 1:
        flash('The Uncategory cann\'t delete', 'error')
        return redirect(url_for('admin.category_page'))

    category_service.delete(category_id)
    flash(text('category.deleted'), 'success')
    return redirect(url_for('admin.category_page'))
Example #7
0
def page_add():
    if request.method == 'GET':
        pages = Backend('page').dropdown(show_empty_option=True)
        fields = extend_service.get_fields_by_type('page')
        return render_template('admin/page/add.html',
                               statuses=PAGE_STATUSES,
                               pages=pages,
                               fields=fields)

    f = request.form
    parent = f.get('parent')
    name = f.get('name')
    title = f.get('title')
    name = name or title

    slug = f.get('slug')
    content = f.get('content')
    status = f.get('status')
    pid = f.get('pid', type=int)
    show_in_menu = f.get('show_in_menu', type=int)
    show_in_menu = 1 if show_in_menu else 0

    redirect_ = f.get('redirect')

    validator = Validator()
    validator.add('duplicate',
                  lambda key: page_service.is_exist_slug(key) == False)
    (validator.check(title, 'min', text('page.title_missing'),
                     3).check(slug, 'min', text('page.slug_missing'),
                              3).check(slug, 'duplicate',
                                       text('page.slug_duplicate')).check(
                                           slug, 'regex',
                                           text('page.slug_invalid'),
                                           r'^[0-9_A-Za-z-]+$')
     #.check(redirect, 'url', text('page.redirect_missing'))
     )

    if validator.errors:
        flash(validator.errors, 'error')
        pages = Backend('page').dropdown(show_empty_option=True)
        fields = extend_service.get_fields_by_type('page')
        return render_template('admin/page/add.html',
                               statuses=PAGE_STATUSES,
                               pages=pages,
                               fields=fields)

    page = page_service.add_page(parent, name, title, slug, content, status,
                                 redirect_, show_in_menu)
    extend_service.prcoess_field(page, 'page')
    return redirect(url_for('admin.page_page'))
Example #8
0
File: page.py Project: lf8289/white
def page_add():
    if request.method == 'GET':
        pages = Backend('page').dropdown(show_empty_option=True)
        fields = extend_service.get_fields_by_type('page')
        return render_template('admin/page/add.html',
                               statuses=PAGE_STATUSES,
                               pages=pages,
                               fields=fields)

    f = request.form
    parent = f.get('parent')
    name = f.get('name')
    title = f.get('title')
    name = name or title

    slug = f.get('slug')
    content = f.get('content')
    status = f.get('status')
    pid = f.get('pid', type=int)
    show_in_menu = f.get('show_in_menu', type=int)
    show_in_menu = 1 if show_in_menu else 0

    redirect_ = f.get('redirect')

    validator = Validator()
    validator.add(
        'duplicate', lambda key: page_service.is_exist_slug(key) == False)
    (validator
        .check(title, 'min', text('page.title_missing'), 3)
        .check(slug, 'min', text('page.slug_missing'), 3)
        .check(slug, 'duplicate', text('page.slug_duplicate'))
        .check(slug, 'regex', text('page.slug_invalid'), r'^[0-9_A-Za-z-]+$')
        #.check(redirect, 'url', text('page.redirect_missing'))
     )

    if validator.errors:
        flash(validator.errors, 'error')
        pages = Backend('page').dropdown(show_empty_option=True)
        fields = extend_service.get_fields_by_type('page')
        return render_template('admin/page/add.html',
                               statuses=PAGE_STATUSES,
                               pages=pages,
                               fields=fields)

    page = page_service.add_page(
        parent, name, title, slug, content, status, redirect_, show_in_menu)
    extend_service.prcoess_field(page, 'page')
    return redirect(url_for('admin.page_page'))
Example #9
0
def category_add():
    if request.method == 'GET':
        return render_template('admin/category/add.html')

    reqp = request.form
    title = reqp.get('title')
    slug = reqp.get('slug')
    description = reqp.get('description')

    validator = Validator()
    validator.check(title, 'min', text('category.title_missing'), 1)
    if validator.errors:
        flash(validator.errors, 'error')
        return render_template('admin/category/add.html')

    category_service.add_category(title, slug, description)
    return redirect(url_for('admin.category_page'))
Example #10
0
def category_edit(category_id):
    if request.method == 'GET':
        category = category_service.get_by_cid(category_id)
        return render_template('admin/category/edit.html', category=category)

    p = request.form.get
    title = p('title')
    slug = p('slug')
    description = p('description')

    validator = Validator()
    validator.check(title, 'min', text('category.title_missing'), 1)
    if validator.errors:
        flash(validator.errors, 'error')
        return redirect(url_for('admin.category_edit', category_id=category_id))

    category = category_service.update_category(
        category_id, title, slug, description)
    flash(text('category.updated'), 'success')
    return redirect(url_for('admin.category_edit', category_id=category.cid))
Example #11
0
def field_add():
    if request.method == 'GET':
        return render_template('admin//extend/field/add.html')

    reqp = request.form
    _type = reqp.get('type')
    field = reqp.get('field')
    key = reqp.get('key')
    label = reqp.get('label')
    key = key or label

    validator = Validator()
    validator.add(
        'valid_key', lambda key: extend_service.count(key, _type) == 0)
    (validator
        .check(key, 'min', text('extend.key_missing'), 1)
        .check(key, 'valid_key', text('extend.key_exists'))
        .check(label, 'min', text('extend.label_missing'), 1)
     )

    if validator.errors:
        flash(validator.errors, 'error')
        return render_template('admin/extend/field/add.html')

    if field == 'image':
        attributes = {
            'type': reqp.get('attributes[type]'),
            'size': {
                'height': reqp.get('attributes[size][height]', type=int),
                'width': reqp.get('attributes[size][width]', type=int),
            }
        }
    elif field == 'file':
        attributes = {
            'type': reqp.get('attributes[type]'),
        }
    else:
        attributes = {}

    extend_service.create_extend(_type, key, label, field, attributes)
    return redirect(url_for('admin.field_page'))
Example #12
0
def field_edit(extend_id):
    if request.method == 'GET':
        extend = extend_service.get_by_eid(extend_id)
        return render_template('admin//extend/field/edit.html', field=extend)

    reqp = request.form
    _type = reqp.get('type')
    field = reqp.get('field')
    key = reqp.get('key')
    label = reqp.get('label')
    key = key or label

    validator = Validator()
    (validator
        .check(key, 'min', text('extend.key_missing'), 1)
        .check(label, 'min', text('extend.label_missing'), 1)
     )

    if validator.errors:
        flash(validator.errors, 'error')
        return redirect(url_for('admin.field_edit', extend_id=extend_id))

    if field == 'image':
        attributes = {
            'type': reqp.get('attributes[type]'),
            'size': {
                'height': reqp.get('attributes[size][height]', type=int),
                'width': reqp.get('attributes[size][width]', type=int),
            }
        }
    elif field == 'file':
        attributes = {
            'type': reqp.get('attributes[type]'),
        }
    else:
        attributes = {}

    extend_service.update_extend(
        _type, key, label, field, attributes, extend_id)
    return redirect(url_for('admin.field_edit', extend_id=extend_id))
Example #13
0
File: page.py Project: lf8289/white
def page_edit(page_id):
    if request.method == 'GET':
        pages = Backend('page').dropdown(show_empty_option=True)
        page = Backend('page').find(page_id)
        fields = extend_service.get_fields_by_type('page', page_id)
        return render_template('admin/page/edit.html',
                               statuses=PAGE_STATUSES,
                               pages=pages,
                               page=page,
                               fields=fields)

    f = request.form
    parent = f.get('parent')
    name = f.get('name')
    title = f.get('title')
    name = name or title

    slug = f.get('slug')
    content = f.get('content')
    status = f.get('status')
    show_in_menu = f.get('show_in_menu', type=int, default=0)
    show_in_menu = 1 if show_in_menu else 0

    redirect_ = f.get('redirect')

    validator = Validator()
    (validator
        .check(title, 'min', text('page.title_missing'), 3)
        #.check(redirect, 'url', text('page.redirect_missing'))
     )

    if validator.errors:
        flash(validator.errors, 'error')
        return redirect(url_for('admin.page_edit', page_id=page_id))

    page = page_service.update_page(
        parent, name, title, slug, content, status, redirect_, show_in_menu, page_id)
    extend_service.prcoess_field(page, 'page')
    return redirect(url_for('admin.page_edit', page_id=page_id))
Example #14
0
def page_edit(page_id):
    if request.method == 'GET':
        pages = Backend('page').dropdown(show_empty_option=True)
        page = Backend('page').find(page_id)
        fields = extend_service.get_fields_by_type('page', page_id)
        return render_template('admin/page/edit.html',
                               statuses=PAGE_STATUSES,
                               pages=pages,
                               page=page,
                               fields=fields)

    f = request.form
    parent = f.get('parent')
    name = f.get('name')
    title = f.get('title')
    name = name or title

    slug = f.get('slug')
    content = f.get('content')
    status = f.get('status')
    show_in_menu = f.get('show_in_menu', type=int, default=0)
    show_in_menu = 1 if show_in_menu else 0

    redirect_ = f.get('redirect')

    validator = Validator()
    (validator.check(title, 'min', text('page.title_missing'), 3)
     #.check(redirect, 'url', text('page.redirect_missing'))
     )

    if validator.errors:
        flash(validator.errors, 'error')
        return redirect(url_for('admin.page_edit', page_id=page_id))

    page = page_service.update_page(parent, name, title, slug, content, status,
                                    redirect_, show_in_menu, page_id)
    extend_service.prcoess_field(page, 'page')
    return redirect(url_for('admin.page_edit', page_id=page_id))
Example #15
0
def post_delete(post_id):
    post_service.delete(post_id)
    flash(text('post.deleted'), 'success')
    return redirect(url_for('admin.post_page'))
Example #16
0
File: post.py Project: lf8289/white
def post_delete(post_id):
    post_service.delete(post_id)
    flash(text('post.deleted'), 'success')
    return redirect(url_for('admin.post_page'))
Example #17
0
def comment_delete(comment_id):
    comment_service.delete(comment_id)
    flash(text('comment.deleted'), 'success')
    return redirect(url_for('admin.comment_page'))
Example #18
0
def comment_delete(comment_id):
    comment_service.delete(comment_id)
    flash(text('comment.deleted'), 'success')
    return redirect(url_for('admin.comment_page'))