def posts_add(page=False): post = Post() if page: urls = 'admin.pages' else: urls = 'admin.posts' if request.args.get('edit'): post = Post.query.get(request.args.get('edit')) if post: if post.parent: return redirect(url_for(urls+'_add', edit=post.parent)) if request.form: post_id = Post.update(request.form, post) flash(messages['updated']+' ('+str(post)+')') return redirect(url_for(urls+'_add', edit=post_id)) else: return handle_404() else: if request.form: post_id = Post.create(request.form) flash(messages['added']+' ('+str(post)+')') return redirect(url_for(urls+'_add', edit=post_id)) folders = Folder.get_all() if page: title = gettext('New - Page') else: title = gettext('New - Post') return render_template('admin/posts_new.html', folders=folders, post=post, title=title, page=page, urls=urls)
def sitemap(): posts = Post.filter(Post.status == 'published', Post.type == 'post').order_by(Post.created).all() folders = Folder.get_all() pages = [] # home pages.append({'url': request.url_root, 'freq': 'daily', 'prio': '1'}) # folders for folder in folders: if folder.guid != '': url = request.url_root + folder.guid + '/' modified = folder.modified.strftime('%Y-%m-%d') pages.append({'url': url, 'mod': modified, 'freq': 'weekly', 'prio': '0.6'}) # pages posts = Post.filter(Post.status == 'published', Post.type == 'page').order_by(Post.created).limit(20) for post in posts: if post.slug != 'index': url = request.url_root + post.guid + '.html' modified = post.modified.strftime('%Y-%m-%d') pages.append({'url': url, 'mod': modified, 'freq': 'monthly', 'prio': '0.9'}) # posts posts = Post.filter(Post.status == 'published', Post.type == 'post').order_by(Post.created).limit(20,) for post in posts: url = request.url_root + post.guid + '.html' modified = post.modified.strftime('%Y-%m-%d') pages.append({'url': url, 'mod': modified, 'freq': 'monthly', 'prio': '0.8'}) response = make_response(render_template(Theme.get_template('_sitemap.xml'), pages=pages)) response.headers["Content-Type"] = 'application/xml' return response
def posts(page=False): numbers = Post.count_by_status(page) if not request.args.get('filter'): query = Post.filter( Post.status << ['draft', 'published'], Post.type == ('page' if page else 'post')).order_by(Post.created) else: query = Post.filter( Post.status == request.args.get('filter'), Post.type == ('page' if page else 'post')).order_by(Post.created) if page: title = gettext('Page') else: title = gettext('Posts') paginator = Paginator(query=query, page=request.args.get('page')) if page: urls = 'admin.pages' else: urls = 'admin.posts' return render_template('admin/posts.html', pages=paginator.links, title=title, posts=paginator.items, numbers=numbers, filter=request.args.get('filter'), page=page, urls=urls)
def is_post(slug): post = Post.get(Post.guid == slug) if post: if post.slug == 'index' and post.id_folder != 0: return redirect('/' + post.folder.guid + '/') post.views += 1 post.save() if post.type == 'post': post.is_post = True post.comments = SimpleComment.filter(SimpleComment.id_post == post.id, SimpleComment.status == 'valid').order_by(SimpleComment.created, 'asc').all() if session.get('user_id'): form = LoggedCommentForm() else: form = GuestCommentForm() if form.validate_on_submit(): comment = SimpleComment.add(request.form, post.id) if fypress.cache: fypress.cache.delete(get_cache_key()) return redirect(request.url + '#comment_%s' % comment.id) return render_template(Theme.get_template('post.html'), this=post, show_sidebar=False, comment_form=form) else: post.is_page = True post.pages = Post.filter(Post.id_folder == post.id_folder, Post.status == 'published', Post.type == 'page').order_by(Post.created).all() return render_template(Theme.get_template('page.html'), this=post) else: return is_404()
def posts_delete(): post = Post.query.get(request.args.get('id')) if post: Post.delete(post) flash(messages['deleted']+' ('+str(post)+')') return redirect(get_redirect_target()) else: return handle_404()
def _ctx_get_posts(order='post.created DESC', limit=5, type='post', folder=False): if not folder: return Post.filter(Post.status == 'published', Post.type == type).order_by(order).limit( limit, 0) else: return Post.filter(Post.status == 'published', Post.type == type, Post.id_folder == folder).order_by(order).limit( limit, 0)
def posts(page=False): numbers = Post.count_by_status(page) if not request.args.get('filter'): if page: query = Post.query.where(' _table_.post_status IN ("draft", "published") AND _table_.post_type="page"').order_by('created') else: query = Post.query.where(' _table_.post_status IN ("draft", "published") AND _table_.post_type="post"').order_by('created') else: if page: query = Post.query.filter(status=request.args.get('filter'), type='page').order_by('created') else: query = Post.query.filter(status=request.args.get('filter'), type='post').order_by('created') if page: title = gettext('Page') else: title = gettext('Posts') paginator = Paginator( query = query, page = request.args.get('page') ) if page: urls = 'admin.pages' else: urls = 'admin.posts' return render_template('admin/posts.html', pages=paginator.links, title=title, posts=paginator.items, numbers=numbers, filter=request.args.get('filter'), page=page, urls=urls)
def feed_folder(folder): if folder.split('/')[0] != 'admin': folder = Folder.get(Folder.guid == folder) if folder: posts = Post.filter(Post.id_folder == folder.id, Post.status == 'published', Post.type == 'post').order_by(Post.created).limit(20) feed = AtomFeed( fypress.options['name'] + ' • ' + folder.name, subtitle=folder.seo_content, feed_url=request.url_root + 'feed/', url=request.url_root, generator=None ) for post in posts: feed.add( post.title, post.content, content_type='html', author=post.user.nicename, url=request.url_root + post.guid, updated=post.modified, published=post.created ) response = feed.get_response() response.headers["Content-Type"] = 'application/xml' return response else: return is_404() else: return is_admin_404()
def feed(): feed = AtomFeed( fypress.options['name'], subtitle=fypress.options['slogan'], feed_url=request.url_root + 'feed/', url=request.url_root, generator=None ) posts = Post.filter(Post.status == 'published', Post.type == 'post').order_by(Post.created).limit(20) for post in posts: feed.add( post.title, post.content, content_type='html', author=post.user.nicename, url=request.url_root + post.guid, updated=post.modified, published=post.created ) response = feed.get_response() response.headers["Content-Type"] = 'application/xml' return response
def _ctx_image(item=False): if request.path == '/articles/': return False elif isinstance(item, Folder): index = Post.filter(Post.id_folder == item.id, Post.slug == 'index', Post.status == 'published', Post.type == 'page').one() if index and index.id_image != 0: return index.image return False elif isinstance(item, Post): if item.id_image != 0: return item.image index = Post.filter(Post.id_folder == item.id_folder, Post.slug == 'index', Post.status == 'published', Post.type == 'page').one() if index and index.id_image != 0: return index.image return False
def posts_move(): post = Post.get(Post.id == request.args.get('id')) if post: post.move(request.args.get('status')) flash(messages['moved'] + ' to ' + request.args.get('status') + ' (' + str(post) + ')') return redirect(get_redirect_target()) else: return handle_404()
def is_folder(slug): if slug.split('/')[0] != 'admin': folder = Folder.get(Folder.guid == slug) if folder: folder.is_folder = True folder.pages = Post.filter(Post.id_folder == folder.id, Post.status == 'published', Post.type == 'page').order_by(Post.created).all() folder.index = Post.filter(Post.id_folder == folder.id, Post.slug == 'index', Post.status == 'published', Post.type == 'page').one() folder.posts = Paginator( query=Post.filter(Post.id_folder == folder.id, Post.status == 'published', Post.type == 'post').order_by(Post.created), page=request.args.get('page'), theme='bootstrap', per_page=4 ) return render_template(Theme.get_template('folder.html'), this=folder) else: return is_404() else: return is_admin_404()
def _ctx_description(item=False): if request.path == '/articles/': return False elif isinstance(item, Folder): index = Post.filter(Post.id_folder == item.id, Post.slug == 'index', Post.status == 'published', Post.type == 'page').one() if index: return index.get_excerpt(155) return item.seo_content elif isinstance(item, Post): return item.get_excerpt(155) else: return fypress.options['slogan']
def posts(): folder = Folder() folder.name = 'Articles' folder.guid = 'articles' folder.is_folder = True folder.posts = Paginator( query=Post.filter(Post.status == 'published', Post.type == 'post').order_by(Post.created, 'DESC'), page=request.args.get('page'), theme='bootstrap', per_page=5 ) return render_template(Theme.get_template('articles.html'), this=folder)
def posts(page=False): numbers = Post.count_by_status(page) if not request.args.get('filter'): query = Post.filter(Post.status << ['draft', 'published'], Post.type == ('page' if page else 'post')).order_by(Post.created) else: query = Post.filter(Post.status == request.args.get('filter'), Post.type == ('page' if page else 'post')).order_by(Post.created) if page: title = gettext('Page') else: title = gettext('Posts') paginator = Paginator( query=query, page=request.args.get('page') ) if page: urls = 'admin.pages' else: urls = 'admin.posts' return render_template('admin/posts.html', pages=paginator.links, title=title, posts=paginator.items, numbers=numbers, filter=request.args.get('filter'), page=page, urls=urls)
def update_all(data): if data: exist = [] for item in data: if item.has_key('id') and item['id'] != '1': exist.append(int(item['id'])) folder = Folder.query.get(item['id']) folder.depth = item['depth'] folder.left = item['left'] folder.right = item['right'] folder.parent = item['parent_id'] folder.modified = 'NOW()' Folder.query.update(folder) all_folders = [] folders = Folder.query.get_all(array=True) for folder in folders: all_folders.append(int(folder.id)) diff = [item for item in all_folders if item not in exist] for item in diff: if item != 1: from fypress.post import Post posts = Post.query.filter(folder_id=item).all(array=True) for post in posts: post.folder_id = 1 Post.query.update(post) Folder.query.delete(Folder.query.get(item)) for folder in folders: folder.count_posts() Folder.build_guid() from fypress.post import Post Post.link_posts()
def update_all(data): if data: exist = [] for item in data: if item.has_key('id') and item['id'] != '1': exist.append(int(item['id'])) folder = Folder.get(Folder.id == item['id']) folder.depth = item['depth'] folder.left = item['left'] folder.right = item['right'] folder.parent = item['parent_id'] folder.modified = datetime.datetime.now() folder.save() all_folders = [] folders = Folder.all() for folder in folders: all_folders.append(int(folder.id)) diff = [item for item in all_folders if item not in exist] for item in diff: if item != 1: from fypress.post import Post posts = Post.filter(Post.id_folder == item).all() for post in posts: post.id_folder = 1 post.save() Folder.get(Folder.id == item).remove() for folder in folders: folder.count_posts() Folder.build_guid() from fypress.post import Post Post.link_posts()
def root(): index = Post.filter(Post.id_folder == 1, Post.slug == 'index', Post.status == 'published', Post.type == 'page').one() return render_template(Theme.get_template('index.html'), index=index, this=False)
def _ctx_get_posts(order='post.created DESC', limit=5, type='post', folder=False): if not folder: return Post.filter(Post.status == 'published', Post.type == type).order_by(order).limit(limit, 0) else: return Post.filter(Post.status == 'published', Post.type == type, Post.id_folder == folder).order_by(order).limit(limit, 0)