def post(self, page_title): # Again, only accept saves from a signed in user current_user = users.get_current_user() if not current_user: self.redirect(users.create_login_url('/edit/' + page_title)) # See if this user has a profile wiki_user = WikiUser.gql('WHERE wiki_user = :1', current_user).get() # If not, create the profile if not wiki_user: wiki_user = WikiUser(wiki_user=current_user) wiki_user.put() # get the user entered content in the form body = self.request.get('body') # Find the entry, if it exists entry = WikiContent.gql('WHERE title = :1', page_title).get() # Generate the version number based on the entries previous existence if entry: latest_version = WikiRevision.gql( 'WHERE wiki_page = :content' ' ORDER BY version_number DESC', content=entry).get() version_number = latest_version.version_number + 1 else: version_number = 1 entry = WikiContent(title=page_title) entry.put() # Create a version for this entry version = WikiRevision(version_number=version_number, revision_body=body, author=wiki_user, wiki_page=entry) version.put() # above, memcache sets the following: # return [wiki_body, author_email, author_nickname, version, version_date] content = [ markdown.markdown(body), current_user.email(), current_user.nickname(), version_number, version.created ] memcache.set(page_title, content, 600) # After the entry has been saved, direct the user back to view the page self.redirect('/view/' + page_title)