59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
from flask import render_template, redirect, url_for, request, flash
|
|
from blog import app, db
|
|
from blog.models.entries import Entry
|
|
from blog.views.auth import login_required
|
|
|
|
@app.route("/")
|
|
@login_required
|
|
def show_entries():
|
|
entries = Entry.query.order_by(Entry.id.desc()).all()
|
|
return render_template('entries/index.html', entries=entries)
|
|
|
|
@app.route("/entries/new", methods=['GET'])
|
|
@login_required
|
|
def new_entry():
|
|
return render_template('entries/new.html')
|
|
|
|
@app.route("/entries", methods=["POST"])
|
|
@login_required
|
|
def add_entry():
|
|
entry = Entry(
|
|
title=request.form['title'],
|
|
text=request.form['text']
|
|
)
|
|
db.session.add(entry)
|
|
db.session.commit()
|
|
flash('新しく記事が作成されました')
|
|
return redirect(url_for("show_entries"))
|
|
|
|
@app.route("/entries/<int:id>", methods=["GET"])
|
|
@login_required
|
|
def show_entry(id):
|
|
entry = Entry.query.get(id)
|
|
return render_template("entries/show.html", entry=entry)
|
|
|
|
@app.route('/entries/<int:id>/edit', methods=['GET'])
|
|
@login_required
|
|
def edit_entry(id):
|
|
entry = Entry.query.get(id)
|
|
return render_template('entries/edit.html', entry=entry)
|
|
|
|
@app.route("/entries/<int:id>/update", methods=['POST'])
|
|
@login_required
|
|
def update_entry(id):
|
|
entry = Entry.query.get(id)
|
|
entry.title = request.form['title']
|
|
entry.text = request.form['text']
|
|
db.session.merge(entry)
|
|
db.session.commit()
|
|
flash('記事が更新されました')
|
|
return redirect(url_for('show_entries'))
|
|
|
|
@app.route("/entries/<int:id>/delete", methods=["POST"])
|
|
@login_required
|
|
def delete_entry(id):
|
|
entry = Entry.query.get(id)
|
|
db.session.delete(entry)
|
|
db.session.commit()
|
|
flash('記事が削除されました')
|
|
return redirect(url_for("show_entries"))
|