from flask import (
    Blueprint, flash, g, redirect, render_template, request, url_for
)
from werkzeug.exceptions import abort


from news.db import get_news, create_news, delete_news

bp = Blueprint('news', __name__) 

@bp.route('/')
def index():
    news = get_news(None)
    title = 'News archive'
    return render_template('news/index.html', news=news, title=title)

@bp.route('/view')
@bp.route('/view/<int:id>')
def view(id=None):
    if id is None:
        return redirect(url_for('news.index'))
    news = get_news(id)
    if news is None:
        abort(404, f"News id {id} doesn't exist.")
    title = 'View news item'
    return render_template('news/view.html', news=news, title=title)



@bp.route('/create', methods=('GET', 'POST'))
def create():
    if request.method == 'POST':
        title = request.form['title']
        text = request.form['text']
        error = None

        if not title:
            error = 'Title is required.'

        if not text:
            error = 'Text is required.'            

        if error is not None:
            flash(error)
        else:
            create_news(title,text)
            return redirect(url_for('news.index'))

    title='Create a news item'
    return render_template('news/create.html',title=title)


@bp.route('/delete/<int:id>')
def delete(id):
    delete_news(id)
    return redirect(url_for('news.index'))