def folders(): folders = Folder.get_all(True) folder = None if request.args.get('edit') and request.args.get('edit') != 1: folder = Folder.get(Folder.id == request.args.get('edit')) form = FolderForm(obj=folder) if form.validate_on_submit(): form.populate_obj(folder) folder.modified = datetime.datetime.now() folder.save() flash(messages['updated'] + ' (' + str(folder) + ')') return redirect(url_for('admin.folders')) else: form = FolderForm() if form.validate_on_submit(): Folder.add(form) flash(messages['added'] + ' (' + str(folder) + ')') return redirect(url_for('admin.folders')) return render_template('admin/folders.html', folders=folders, folder=folder, title=gettext('Categories'), form=form)
def breadcrumb(item=False): if request.path == '/articles/': folder = Folder() folder.name = 'Articles' folder.guid = 'articles' return [folder] elif item: if isinstance(item, Folder): return item.get_path(item) elif isinstance(item, Post): return item.folder.get_path(item.folder) return []
def posts(): folder = Folder() folder.name = 'Articles' folder.guid = 'articles' folder.is_folder = True folder.posts = Paginator( query = Post.query.filter(status='published', type='post').order_by('created', 'DESC'), page = request.args.get('page'), theme = 'foundation', per_page = 5 ) return render_template(get_template('articles.html', config), this=folder)
def init_fypress(login='', email='', passwd=''): if not passwd or not email or not login: print '*** /!\ Usage: python manager.py --login=name [email protected] --passwd=yourpass' return False user = User.add(login, email, passwd) if user: user.status = 4 user.nicename = user.login user.save() print '*** Added user: '******'*** /!\ Invalid user (Duplicate entry)' exist = Folder.get(Folder.id == 1) if not exist: folder = Folder() folder.name = 'Uncategorized' folder.id = 1 folder.guid = '' folder.insert() print '*** Added Folder: ' + str(folder) options = [['name', 'FyPress Site'], ['url', Config.URL], ['slogan', 'Welcome to FyPress'], ['theme', 'Nyx']] for option in options: opt = Option.update(option[0], option[1]) print '*** Added Option: ' + str(opt)
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 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 sitemap(): posts = Post.query.filter(status='published', type='post').order_by('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.query.filter(status='published', type='page').order_by('created').limit(20, 0, array=True) 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.query.filter(status='published', type='post').order_by('created').limit(20, 0, array=True) 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('front/_sitemap.xml', pages=pages)) response.headers["Content-Type"] = 'application/xml' return response
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 folders(): folders = Folder.get_all(True) folder = None if request.args.get('edit') and request.args.get('edit') != 1: folder = Folder.query.get(request.args.get('edit')) form = FolderForm(obj=folder) if form.validate_on_submit(): form.populate_obj(folder) folder.modified = 'NOW()' Folder.query.update(folder) flash(messages['updated']+' ('+str(folder)+')') return redirect(url_for('admin.folders')) else: form = FolderForm() if form.validate_on_submit(): Folder.add(form) flash(messages['added']+' ('+str(folder)+')') return redirect(url_for('admin.folders')) return render_template('admin/folders.html', folders=folders, folder=folder, title=gettext('Categories'), form=form)
def init_fypress(login='', email='', passwd=''): if not passwd or not email or not login: print '*** /!\ Usage: python manager.py --login=name [email protected] --passwd=yourpass' return False user = User.add(login, email, passwd) if user: user.status = 4 user.nicename = user.login User.query.update(user) print '*** Added user: '******'*** /!\ Invalid user (Duplicate entry)' exist = Folder.query.get(1) if not exist: folder = Folder() folder.name = 'Uncategorized' folder.created = 'NOW()' folder.modified = 'NOW()' folder.id = 1 folder.guid = '' Folder.query.add(folder) print '*** Added Folder: '+str(folder) options = [ ['name', 'FyPress Site'], ['url', Config.URL], ['slogan', 'Welcome to FyPress'], ['theme', 'Nyx'] ] for option in options: opt = Option.update(option[0], option[1]) print '*** Added Option: '+str(opt)
def init_fypress(login="", email="", passwd=""): if not passwd or not email or not login: print "*** /!\ Usage: python manager.py --login=name [email protected] --passwd=yourpass" return False user = User.add(login, email, passwd) if user: user.status = 4 user.nicename = user.login User.query.update(user) print "*** Added user: "******"*** /!\ Invalid user (Duplicate entry)" exist = Folder.query.get(1) if not exist: folder = Folder() folder.name = "Uncategorized" folder.created = "NOW()" folder.modified = "NOW()" folder.id = 1 folder.guid = "" Folder.query.add(folder) print "*** Added Folder: " + str(folder) options = [["name", "FyPress Site"], ["url", Config.URL], ["slogan", "Welcome to FyPress"], ["theme", "Nyx"]] for option in options: opt = Option.update(option[0], option[1]) print "*** Added Option: " + str(opt)
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(): folder = Folder() folder.name = 'Articles' folder.guid = 'articles' folder.is_folder = True folder.posts = Paginator(query=Post.query.filter(status='published', type='post').order_by( 'created', 'DESC'), page=request.args.get('page'), theme='foundation', per_page=5) return render_template(get_template('articles.html', config), this=folder)
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 guid_generate(self, rev=False): count = '' if rev: count = Post.filter(Post.parent == rev).all() count = '&rev=' + str(len(count)) return '?post_id={}'.format(rev) + count path = Folder.get(Folder.id == self.id_folder) path = path.guid name = self.slug + count if self.id: guid = url_unique(path + '/' + name, Post, self.id) else: guid = url_unique(path + '/' + name, Post) if guid[0] == '/': guid = guid[1:] return guid
def ajax_folders(): data = json.loads(request.form.get('data')) Folder.update_all(data) return ''
def template(): nav = Folder.get_as_tree('nav', request.path) is_home = False if request.url == g.options['url']: is_home = True def breadcrumb(item=False): if request.path == '/articles/': folder = Folder() folder.name = 'Articles' folder.guid = 'articles' return [folder] elif item: if isinstance(item, Folder): return item.get_path(item) elif isinstance(item, Post): return item.folder.get_path(item.folder) return [] def title(item=False): if request.path == '/articles/': return 'Articles • ' + g.options['name'] elif isinstance(item, Folder): return item.name + ' • ' + g.options['name'] elif isinstance(item, Post): if item.folder_id == 1: return item.title + ' • ' + g.options['name'] return item.title + ' • ' + item.folder.name + ' • ' + g.options[ 'name'] return g.options['name'] def description(item=False): if request.path == '/articles/': return False elif isinstance(item, Folder): index = Post.query.filter(folder_id=item.id, slug='index', status='published', 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 g.options['slogan'] def image(item=False): if request.path == '/articles/': return False elif isinstance(item, Folder): index = Post.query.filter(folder_id=item.id, slug='index', status='published', type='page').one() if index and index.image_id != 0: return index.image return False elif isinstance(item, Post): if item.image_id != 0: return item.image index = Post.query.filter(folder_id=item.folder_id, slug='index', status='published', type='page').one() if index and index.image_id != 0: return index.image return False def seo(item=False): pass return dict(nav=nav, get_posts=get_posts, show_sidebar=True, show_breadcrumb=True, show_footer=True, breadcrumb=breadcrumb, is_home=is_home, title=title, description=description, image=image)
def template(): nav = Folder.get_as_tree('nav', request.path) is_home = False if request.url == g.options['url']: is_home = True def theme(v): return 'themes/' + g.options['theme'] + '/' + v def breadcrumb(item=False): if request.path == '/articles/': folder = Folder() folder.name = 'Articles' folder.guid = 'articles' return [folder] elif item: if isinstance(item, Folder): return item.get_path(item) elif isinstance(item, Post): return item.folder.get_path(item.folder) return [] def title(item=False): if request.path == '/articles/': return 'Articles • '+g.options['name'] elif isinstance(item, Folder): return item.name+' • '+g.options['name'] elif isinstance(item, Post): if item.folder_id == 1: return item.title+' • '+g.options['name'] return item.title+' • '+item.folder.name+' • '+g.options['name'] return g.options['name'] def description(item=False): if request.path == '/articles/': return False elif isinstance(item, Folder): index = Post.query.filter(folder_id=item.id, slug='index', status='published', 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 g.options['slogan'] def image(item=False): if request.path == '/articles/': return False elif isinstance(item, Folder): index = Post.query.filter(folder_id=item.id, slug='index', status='published', type='page').one() if index and index.image_id != 0: return index.image return False elif isinstance(item, Post): if item.image_id != 0: return item.image index = Post.query.filter(folder_id=item.folder_id, slug='index', status='published', type='page').one() if index and index.image_id != 0: return index.image return False return dict( nav=nav, theme=theme, get_posts=get_posts, show_sidebar=True, show_breadcrumb=True, show_footer=True, breadcrumb=breadcrumb, is_home=is_home, title=title, description=description, image=image )
def _ctx_nav(): nav = Folder.get_as_tree('nav', request.path) return nav