コード例 #1
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'))
コード例 #2
0
ファイル: page.py プロジェクト: 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'))
コード例 #3
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'))