Ejemplo n.º 1
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))
Ejemplo n.º 2
0
def release(project_id, release_id, title=None):
    """ of the wiki page.
    """
    return render_template('project/view.html',
                           project_for=project_for,
                           release_for=release_for,
                           project_id=project_id,
                           release_id=release_id,
                           commentform=ProjectCommentForm(),
                           comments_for=comments_for)
Ejemplo n.º 3
0
def view(project_id, title=None):
    """ of the wiki page.
    """
    release_id = request.args.get('release_id', None)
    if release_id is not None:
        return release(project_id, int(release_id))

    return render_template('project/view.html',
                           project_id=project_id,
                           project_for=project_for,
                           commentform=ProjectCommentForm(),
                           comments_for=comments_for)