def index(error=None, page=None, success=None, url=None, template='index.jinja2'): # Max number of posts per page maxposts = POSTS_PER_PAGE # Is a specific posts page requested? if 'p' in request.args: page = int(request.args['p']) # Is a single page/post requested? if url: url = '/%s' % (url) pages, posts = mdcontent.get(url=url) for ctype in pages, posts: for content in ctype: if content['url'] == url: single = content else: pages, posts = mdcontent.get(page=page, maxposts=maxposts) # Calc how many pages of posts there are postpages = float(len(posts))/float(maxposts) postpages = int(math.ceil(postpages)) # Build front page posts frontposts = [] for post in posts[:maxposts]: frontposts.append(post) # Build archive posts oldpage = '/?p=1' newpage = None if page: archive = [] for post in posts[maxposts:]: if 'content' in post: archive.append(post) oldpage = '/?p=%s' % (page+1) if page-1 > 1: newpage = '/?p=%s' % (page-1) else: newpage = '/' # If admin page, use admin template etc if request.url_rule.rule.startswith('/admin'): template = 'admin.jinja2' if 'page' in request.args: is_page = True # Is the user logged in? if 'logon' in session: admin = True # Title sitetitle = TITLE # Get plugins plugins = execute_plugins(pages, posts) return render_template('%s/%s' % (THEME, template), **locals())
def updateitem(): if not 'logon' in session: return redirect('/login/') valid = False for item in ['content', 'title', 'categories', 'filename', 'date']: if not item in request.form: error = '<strong>Error: </strong> Missing form data for: %s' % (item) return index(error=error) pages, posts = mdcontent.get() for ctype in pages, posts: for content in ctype: if content['filepath'] == request.form['filename']: valid = True break if valid: break if valid: categories = request.form['categories'].split(',') categories = ', '.join(categories) metadata = '---\ntitle: "%s"\ncategories: %s\ndate: %s\n---\n' % (request.form['title'], categories, request.form['date']) filedata = metadata + request.form['content'] newpath = request.form['title'].replace(' ', '-').lower() newpath = newpath + '.markdown' if not 'is_page' in request.form: newpath = request.form['filename'][:17] + newpath else: newpath = 'pages/' + newpath with open(request.form['filename'], 'w') as f: f.write(filedata.encode('utf-8')) os.rename(request.form['filename'], newpath) return redirect(content['url'])
def edititem(item): if not 'logon' in session: return redirect('/login/') url = '/%s' % (item) pages, posts = mdcontent.get(url=url) for ctype in pages, posts: for content in ctype: if content['url'] == url: single = content if not url.startswith('/blog/'): is_page = True template = 'admin.jinja2' sitetitle = TITLE return render_template('%s/%s' % (THEME, template), **locals())
def deleteitem(url): if not 'logon' in session: return redirect('/') url = '/%s' % (url) pages, posts = mdcontent.get() valid = False for ctype in pages, posts: for content in ctype: if content['url'] == url: os.remove(content['filepath']) valid = True break if valid: break return redirect('/')
def viewlogin(): pages, posts = mdcontent.get() if 'logon' in session: admin = True sitetitle = TITLE return render_template('%s/login.jinja2' % (THEME), **locals())