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'))
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))
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))
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'))
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))
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'))
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'))
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'))
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'))
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))
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'))
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))
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))
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))
def post_delete(post_id): post_service.delete(post_id) flash(text('post.deleted'), 'success') return redirect(url_for('admin.post_page'))
def comment_delete(comment_id): comment_service.delete(comment_id) flash(text('comment.deleted'), 'success') return redirect(url_for('admin.comment_page'))