Esempio n. 1
0
    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)
Esempio n. 2
0
    def get(self, user):
        # Get the user information
        unescaped_user = urllib.unquote(user)
        wiki_user_object = users.User(unescaped_user)
        # Only that user can edit his or her profile
        if users.get_current_user() != wiki_user_object:
            self.redirect('/view/StartPage')

        wiki_user = WikiUser.gql('WHERE wiki_user = :1',
                                 wiki_user_object).get()
        if not wiki_user:
            wiki_user = WikiUser(wiki_user=wiki_user_object)
            wiki_user.put()

        article_list = []
        for article in wiki_user.wikirevision_set:
            article_list.append(article.wiki_page.title)
        articles = set(article_list)
        self.generate('edit_user.html',
                      template_values={
                          'queried_user': wiki_user,
                          'articles': articles
                      })