def new(): """ Actions are sent as forms, and redirects are made by `referer` """ if request.method == 'GET': filename, markdown = default_post() return render_template('new_post.html', filename=filename, markdown=markdown) elif request.method == 'POST': filename = request.form['filename'] if not filename.endswith('.md'): filename += '.md' markdown = request.form['markdown'] action = request.form['action'] valid_filename = is_valid_filename(filename) if not valid_filename: flash(MSG_POST_FILENAME_INVALID) elif get_location(filename): flash(MSG_POST_EXISTS) elif not is_valid_post(markdown, valid_filename['published']): flash(MSG_POST_CONTENT_INVALID) else: if 'Draft' in action: dest = 'drafts' flash(MSG_POST_SAVED.format(filename[:-3])) elif 'Publish' in action: dest = 'publish' flash(MSG_POST_PUBLISHED.format(filename[:-3])) with open(os.path.join(blog_dir, dest, filename), 'w', 'utf-8') as f: f.write(markdown) if 'Publish' in action: bake_blog() source = os.path.join(blog_dir, get_location(filename)) hg_add(source) hg_commit(source, 'new post {} in {}'.format(filename, dest)) return redirect(url_for('posts')) return render_template(request.form['referer'], filename=filename, markdown=markdown)
def dashboard(): filename, markdown = default_post() return render_template('dashboard.html', filename=filename, markdown=markdown)