示例#1
0
    def content_toc(self):
        """The wiki content is rendered for display.
        """
        session = inspect(self).session

        def for_link(link):
            return Wiki.content_for_link(session, link)

        if not self.content:
            return '', ''
        content, toc = render_pq(self.content, for_link, toc_separate=True)
        return (sanitize_html(content.outerHtml() if content is not None else ''),
                sanitize_html(toc.outerHtml() if toc is not None else ''))
示例#2
0
def new_comment(project_id):
    """ Post a comment on this project.
    """
    form = ProjectCommentForm()

    if form.validate_on_submit():
        project = project_for(project_id)
        author = CommentAuthor.from_user(current_session, current_user)
        parent_id = int(form.parent_id.data) if form.parent_id.data else None
        thread_id = int(form.thread_id.data) if form.thread_id.data else None

        # we have proxy fix for remote_addr.
        ip_address = request.remote_addr
        created_at = datetime.datetime.now()

        # hardcoded pygame forum id.
        category = '796386'
        forum = 'pygame'
        title = project.title
        link = f'https://pygame.org/project/{project_id}/'
        id_text = f'pygame_project_{project_id}'
        message = form.message.data
        message = message if '<p>' not in message else f'<p>{message}</p>'

        if not thread_id:
            thread = CommentThread(
                id_text=id_text,
                forum=forum,
                category=category,
                link=link,
                title=title,
                ip_address=ip_address,
                author=author,
                created_at=created_at,
                is_closed=False,
                is_deleted=False,
            )
            current_session.add(thread)

        post = CommentPost(author=author,
                           parent_id=parent_id,
                           message=sanitize_html(message),
                           ip_address=ip_address,
                           created_at=created_at,
                           is_deleted=False,
                           is_spam=False)
        if classify_comment(post) == 'spam':
            post.is_spam = True

        if thread_id is None:
            post.thread = thread
        else:
            post.thread_id = thread_id

        current_session.add(post)
        current_session.commit()

    return redirect(url_for('project.view', project_id=project_id))
示例#3
0
    def content_rendered(self):
        """The wiki content is rendered for display.
        """
        session = inspect(self).session

        def for_link(link):
            return Wiki.content_for_link(session, link)

        return sanitize_html(render(self.content, for_link))
示例#4
0
 def content_sanitized(self):
     """The wiki content which has any html sanitized.
     """
     return sanitize_html(self.content)
示例#5
0
 def message_html(self):
     """
     """
     return sanitize_html(self.message, force_https=False)
示例#6
0
 def description_html(self):
     return sanitize_html(self.description)
示例#7
0
 def summary_html(self):
     return sanitize_html(self.summary)
示例#8
0
 def title_html(self):
     return sanitize_html(self.title)