def add_initial_data(): """Insert initial data into the database""" # open database session db_session = DB(db).get_session() # ask user for an admin username and password username = raw_input('Please enter the admin username: '******'Please enter the admin password: '******'SECRET_KEY'], password)) db_session.add(u) # create statuses s1 = Status('draft') s2 = Status('private') s3 = Status('public') db_session.add(s1) db_session.add(s2) db_session.add(s3) # create formats f = Format('rest') f2 = Format('markdown') db_session.add(f) db_session.add(f2) # Tags t1 = Tag('imposter') t2 = Tag('weblog') # build initial post and put it in the database initial_post_summary = """ Installed Correctly! """ initial_post_content = """ Imposter was installed correctly! This is just a sample post to show Imposter works. **Have a lot of fun blogging!** """ p1 = Post('Welcome to Imposter!', initial_post_summary, initial_post_content) p1.slug = slugify(p1.title) p1.createdate = datetime.now() p1.lastmoddate = datetime.now() p1.pubdate = datetime.now() p1.format = f p1.status = s3 p1.user = u p1.tags = [t1, t2] p1.compile() db_session.add(p1) db_session.commit()
def save_post(post_id=None): """Save Post to database If post_id is None a new Post will be inserted in the database. Otherwise the existing Post will be updated. """ message = 'Post updated' orig_tags = [] post_form = PostForm(request.form) if not post_form.validate(): flash('ERROR: errors detected. Post NOT saved!', category='error') return edit_post(post_id=post_id, post_form=post_form) # test if we're creating a new post, or updating an existing one if post_id is None: post = Post() post.status_id = 1 post.user_id = session['user_id'] post.createdate = datetime.now() else: post = get_post(post_id) orig_tags = [tag for tag in post.tags] post_form.populate_obj(post) post.lastmoddate = datetime.now() # compile input to html post.compile(app.config['REPL_TAGS']) # update pubdate if post's pubdate is None and its status is set # to public if request.form['status'] == 'public' and \ unicode(post.status) != 'public' and \ post.pubdate is None: post.pubdate = datetime.now() post.status = get_status(request.form['status']) if post.slug is None: post.slug = slugify(post.title) if post_id is None: db_session.add(post) message = 'New post was successfully added' db_session.commit() for tag in orig_tags: recalculate_tagcount(tag) for tag in post.tags: if tag not in orig_tags: recalculate_tagcount(tag) db_session.commit() flash(message, category='info') return redirect(url_for('edit_post', post_id=post.id))