Exemplo n.º 1
0
def edit_snippet(snippet_uuid):
    """Route allows a user to modify a snippet if
    he or she is the owner"""

    snippet = get_snippet_by_uuid(snippet_uuid)

    if current_user != snippet.user:
        raise Unauthorized("You must be the creator or a snippet to edit it.")

    snippet_form = SnippetForm()
    populate_choice_field(snippet_form)

    if snippet_form.validate_on_submit():
        snippet.body = snippet_form.snippet.data
        if snippet_form.title.data:
            snippet.title = snippet_form.title.data
        snippet.language = Language.query.get(snippet_form.language.data)
        snippet.private = snippet_form.private.data
        db.session.add(snippet)
        db.session.commit()
        return redirect(
            url_for('snippets.show_snippet', snippet_uuid=snippet.get_uuid()))

    snippet_form.title.default = snippet.title
    snippet_form.snippet.default = snippet.body
    snippet_form.language.default = snippet.language_id
    snippet_form.private.default = snippet.is_private()
    snippet_form.process()

    return render_template('snippets/compose.html',
                           form=snippet_form,
                           snippet=snippet)
Exemplo n.º 2
0
def ajax_delete():
    snip_uuid = request.form.get('snip_uuid', None)
    snippet = get_snippet_by_uuid(snip_uuid)
    if current_user == snippet.user:
        db.session.delete(snippet)
        db.session.commit()
        return Response('Delete Successful.', status=200)
    return Response('Delete Unsuccessful.', status=401)
Exemplo n.º 3
0
def fork_snippet(snippet_uuid):
    to_fork = get_snippet_by_uuid(snippet_uuid)
    if to_fork.is_private() and to_fork.user != current_user:
        raise Unauthorized("This snippet is private.")
    new_snippet = Snippet(to_fork.body)
    new_snippet.title = to_fork.title
    new_snippet.language = to_fork.language
    new_snippet.parent_fork = to_fork
    new_snippet.user = current_user
    db.session.add(new_snippet)
    db.session.commit()
    return redirect(
        url_for('snippets.show_snippet', snippet_uuid=new_snippet.get_uuid()))
Exemplo n.º 4
0
def show_snippet(snippet_uuid):
    """Route shows a snippet given it's
    unique identifier - displayed in a read only
    codemirror textarea"""

    snippet = get_snippet_by_uuid(snippet_uuid)
    if snippet.is_private() and snippet.user != current_user:
        raise Unauthorized("This snippet is private.")
    snippet.hits = snippet.hits + 1
    db.session.add(snippet)
    db.session.commit()

    return render_template('snippets/view.html', snippet=snippet)
Exemplo n.º 5
0
def download_snippet(snippet_uuid):
    """Route returns a downloadable file containing
    the raw text of a snippet"""

    snippet = get_snippet_by_uuid(snippet_uuid)

    body = snippet.body
    ext = snippet.language.extension
    response = make_response(body)

    response.headers['Content-Disposition'] =\
        "attachment; filename={}{}".format(snippet_uuid, ext)
    return response
Exemplo n.º 6
0
def delete_snippet(snippet_uuid):
    """Route lets the owner of a snippet delete
    the snippet"""
    snippet = get_snippet_by_uuid(snippet_uuid)

    if current_user != snippet.user:
        message = "You are not authorized to edit this snippet."
        return render_template('errorpages/401.html', message=message), 401

    form = DeleteForm()

    if form.validate_on_submit():
        db.session.delete(snippet)
        db.session.commit()
        return redirect(
            url_for('user.snippets', username=current_user.username))
    return render_template('snippets/delete.html', form=form, snippet=snippet)
Exemplo n.º 7
0
def raw_snippet(snippet_uuid):
    """Route returns the raw text of a snippet
    in a blank page in the browser"""
    snippet = get_snippet_by_uuid(snippet_uuid)
    return Response(snippet.body, mimetype='text/plain')