예제 #1
0
파일: view.py 프로젝트: chenjayway/Zephyr
    def post(self, post_id):
        post_id = int(post_id)
        _ = self.get_argument
        title = _p('title', default='')
        description = _p('description')
        category = int(_p('category', default=1))
        status = _p('status', default='draft')
        comments = int(_p('comments', 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:
            self.flash(validator.errors, 'error')
            self.redirect(self.reverse_url('post_edit', post_id))

        post = post_service.update_post(
            title, slug, description, html, css, js, category, status, comments, post_id)
        extend_service.prcoess_field(self, post, 'post')
        self.flash(text('post.updated'), 'success')
        self.redirect(self.reverse_url('post_edit', post_id))
예제 #2
0
파일: mixin.py 프로젝트: chenjayway/Zephyr
    def post_comment(self, slug):
        post = self.post_service.get_by_slug(slug)
        if not post:
            return self.theme_render('404.html', page_title='Not Found')

        if post and not post.allow_comment:
            return self.redirect(self.reverse_url('site_post', slug))

        p = self.get_argument
        name = p('name', default='')
        email = p('email', default='')
        content = p('content', default='')

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

        validator = Validator()
        (validator.check(email, 'email', text('comment.email_missing'))
            .check(content, 'min', text('comment.email_missing'), 1)
         )

        if validator.errors:
            self.flash(validator.errors, 'error')
            return redirect(self.reverse_url('site_post', slug))

        status = site.get(
            'auto_published_comments', False) and 'approved' or 'pending'
        self.comment_service.add_comment(name, email, content, status, post)

        self.redirect(self.reverse_url('site_post', slug))
예제 #3
0
    def post(self):
        _ = self.get_argument
        title = _('title', default='')
        description = _('description')
        category = int(_('category', default=1))
        status = _('status', default='draft')
        comments = int(_('comments', default=0))
        html = _('html')
        css = _('custom_css', default='')
        js = _('custom_js', default='')
        slug = _('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:
            self.flash(validator.errors, 'error')
            self.render('admin/post/add.html')

        author = self.account
        post = post_service.add_post(title, slug, description, html, css, js,
                                     category, status, comments, author)
        extend_service.prcoess_field(self, post, 'post')
        self.redirect(self.reverse_url('post_page'))
예제 #4
0
파일: view.py 프로젝트: chenjayway/Zephyr
    def post(self):
        _ = self.get_argument
        title = _('title', default='')
        description = _('description')
        category = int(_('category', default=1))
        status = _('status', default='draft')
        comments = int(_('comments', default=0))
        html = _('html')
        css = _('custom_css', default='')
        js = _('custom_js', default='')
        slug = _('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:
            self.flash(validator.errors, 'error')
            self.render('admin/post/add.html')

        author = self.account
        post = post_service.add_post(
            title, slug, description, html, css, js, category, status, comments, author)
        extend_service.prcoess_field(self, post, 'post')
        self.redirect(self.reverse_url('post_page'))
예제 #5
0
    def post(self, post_id):
        post_id = int(post_id)
        _ = self.get_argument
        title = _p('title', default='')
        description = _p('description')
        category = int(_p('category', default=1))
        status = _p('status', default='draft')
        comments = int(_p('comments', 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:
            self.flash(validator.errors, 'error')
            self.redirect(self.reverse_url('post_edit', post_id))

        post = post_service.update_post(title, slug, description, html, css,
                                        js, category, status, comments,
                                        post_id)
        extend_service.prcoess_field(self, post, 'post')
        self.flash(text('post.updated'), 'success')
        self.redirect(self.reverse_url('post_edit', post_id))
예제 #6
0
    def post(self, page_id):
        page_id = int(page_id)

        _ = self.get_argument
        parent = _('parent')
        name = _('name')
        title = _('title')
        name = name or title

        slug = _('slug')
        content = _('content')
        status = _('status')
        show_in_menu = int(_('show_in_menu', default=0))
        show_in_menu = 1 if show_in_menu else 0

        redirect_ = _('redirect')

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

        if validator.errors:
            self.flash(validator.errors, 'error')
            self.redirect(self.reverse_url('page_edit', page_id))

        page = page_service.update_page(parent, name, title, slug, content,
                                        status, redirect_, show_in_menu,
                                        page_id)
        extend_service.prcoess_field(self, page, 'page')
        self.redirect(self.reverse_url('page_edit', page_id))
예제 #7
0
    def post_comment(self, slug):
        post = self.post_service.get_by_slug(slug)
        if not post:
            return self.theme_render('404.html', page_title='Not Found')

        if post and not post.allow_comment:
            return self.redirect(self.reverse_url('site_post', slug))

        p = self.get_argument
        name = p('name', default='')
        email = p('email', default='')
        content = p('content', default='')

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

        validator = Validator()
        (validator.check(email, 'email', text('comment.email_missing')).check(
            content, 'min', text('comment.email_missing'), 1))

        if validator.errors:
            self.flash(validator.errors, 'error')
            return redirect(self.reverse_url('site_post', slug))

        status = site.get('auto_published_comments',
                          False) and 'approved' or 'pending'
        self.comment_service.add_comment(name, email, content, status, post)

        self.redirect(self.reverse_url('site_post', slug))
예제 #8
0
파일: view.py 프로젝트: chenjayway/Zephyr
    def post(self):
        _ = self.get_argument
        title, slug, description = _('title'), _('slug'), _('description')

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

        category_service.add_category(title, slug, description)
        self.redirect(self.reverse_url('category_page'))
예제 #9
0
    def post(self):
        _ = self.get_argument
        title, slug, description = _('title'), _('slug'), _('description')

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

        category_service.add_category(title, slug, description)
        self.redirect(self.reverse_url('category_page'))
예제 #10
0
파일: view.py 프로젝트: chenjayway/Zephyr
    def post(self, category_id):
        _ = self.get_argument
        category_id, title, slug, description = int(category_id), _('title'), _('slug'), _('description')

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

        category = category_service.update_category(
            category_id, title, slug, description)
        self.flash(text('category.updated'), 'success')
        self.redirect(self.reverse_url('category_edit', category.cid))
예제 #11
0
    def post(self, category_id):
        _ = self.get_argument
        category_id, title, slug, description = int(category_id), _(
            'title'), _('slug'), _('description')

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

        category = category_service.update_category(category_id, title, slug,
                                                    description)
        self.flash(text('category.updated'), 'success')
        self.redirect(self.reverse_url('category_edit', category.cid))
예제 #12
0
    def post(self):
        _ = self.get_argument
        parent = _('parent')
        name = _('name')
        title = _('title')
        name = name or title

        slug = _('slug')
        content = _('content')
        status = _('status')
        pid = int(_('pid'))
        show_in_menu = int(_('show_in_menu'))
        show_in_menu = 1 if show_in_menu else 0

        redirect_ = _('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:
            self.flash(validator.errors, 'error')
            pages = Backend('Page').dropdown(show_empty_option=True)
            fields = extend_service.get_fields_by_type('page')
            self.render('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(self, page, 'page')
        self.redirect(self.reverse_url('page_page'))
예제 #13
0
파일: view.py 프로젝트: chenjayway/Zephyr
    def post(self):
        _ = self.get_argument
        parent = _('parent')
        name = _('name')
        title = _('title')
        name = name or title

        slug = _('slug')
        content = _('content')
        status = _('status')
        pid = int(_('pid'))
        show_in_menu = int(_('show_in_menu'))
        show_in_menu = 1 if show_in_menu else 0

        redirect_ = _('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:
            self.flash(validator.errors, 'error')
            pages = Backend('Page').dropdown(show_empty_option=True)
            fields = extend_service.get_fields_by_type('page')
            self.render('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(self, page, 'page')
        self.redirect(self.reverse_url('page_page'))
예제 #14
0
    def post(self, comment_id):
        comment_id = int(comment_id)
        _ = self.get_argument
        name = _('name')
        email = _('email')
        content = _('content')
        status = _('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:
            self.flash(validator.errors, 'error')
            self.redirect(self.reverse_url('comment_edit', comment_id))

        comment = comment_service.update_comment(
            comment_id, name, email, content, status)
        self.flash(text('comment.updated'), 'success')
        self.redirect(self.reverse_url('comment_edit', comment.cid))
예제 #15
0
파일: field.py 프로젝트: chenjayway/Zephyr
    def post(self):

        _ = self.get_argument
        _type = _('type')
        field = _('field')
        key = _('key')
        label = _('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:
            self.flash(validator.errors, 'error')
            self.render('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 self.redirect(self.reverse_url('field_page'))
예제 #16
0
    def post(self):

        _ = self.get_argument
        _type = _('type')
        field = _('field')
        key = _('key')
        label = _('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:
            self.flash(validator.errors, 'error')
            self.render('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 self.redirect(self.reverse_url('field_page'))
예제 #17
0
    def post(self, extend_id):
        extend_id = int(extend_id)
        reqp = request.form
        _ = self.get_argument
        _type = _('type')
        field = _('field')
        key = _('key')
        label = _('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:
            self.flash(validator.errors, 'error')
            return self.redirect(self.reverse_url('field_edit', 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 self.redirect(self.reverse_url('field_edit', extend_id))