# -*- coding: utf-8 -*-


from flask import Blueprint, escape, render_template, session, redirect, url_for, request, flash, abort, Flask
import time
import sqlite3
from markdown import markdown
postit = Blueprint('post-it', __name__, template_folder='templates')

app = Flask( 'pywallter' )
app.config.from_pyfile('config.py')


#### Variables ####################################################################################

DOSSIER_PERSO= app.config['DOSSIER_APP']

extensionimg = app.config['EXT_IMG']

DATABASE = app.config['DATABASE']

BASE_URL = app.config['BASE_URL']
##################################################################################################





@postit.route('/post-it/', methods=['GET', 'POST'])
def racine_blog():
    if 'username' in session:
        UTILISATEUR='%s'% escape(session['username'])
        if request.method == 'POST':
            title= request.form['title']
            content = request.form['content']
            #category = request.form['category']
            status = request.form['status']
            TIME=time.strftime("%A %d %B %Y %H:%M:%S")
            conn = sqlite3.connect(DATABASE) # Connexion  la base de donne
            cursor = conn.cursor() # Création de l'objet "curseur"
            cursor.execute("""INSERT INTO posts(title, content, time, author, status) VALUES(?, ?, ?, ?, ?)""",
                           (title, content, TIME, UTILISATEUR, status)) # Insérer des valeurs
            conn.commit()
            cursor.execute("""SELECT title, content, time, author, status, avatar, nom, prenom, age FROM posts INNER JOIN users ON author = name""")
            posts = [dict(title=row[0], content=row[1], time=row[2], author=row[3],
                          status=row[4], avatar=row[5], nom=row[6], prenom=row[7], age=row[8])
                     for row in reversed(cursor.fetchall())]
            conn.close()
            return render_template('blog.html', posts=posts)
        else:
            conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
            cursor = conn.cursor() # Création de l'objet "curseur"
            cursor.execute("""SELECT title, content, time, author, status, avatar, nom, prenom, age FROM posts INNER JOIN users ON author = name""")
            posts = [dict(title=row[0], content=row[1], time=row[2], author=row[3],
                          status=row[4], avatar=row[5], nom=row[6], prenom=row[7], age=row[8])
                     for row in reversed(cursor.fetchall())]
            conn.close()
            for post in posts:
                post['content'] = markdown(post['content'])
            return render_template('blog.html', section='Post-it', posts=posts)
    else:
        return redirect(BASE_URL, code=401)



@postit.route('/delete/<post>')
def delete(post):
    if 'username' in session :
        conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
        cursor = conn.cursor() # Création de l'objet "curseur"
        cursor.execute("""DELETE FROM posts WHERE title=?""", (post,))
        conn.commit()
        conn.close()
        return redirect(url_for('post-it.racine_blog'))
    else:
        return redirect(BASE_URL, code=401) # sinon on redirige vers login

@postit.route('/edit/<post>', methods=['GET', 'POST'])
def edit(post):
    if 'username' in session :
        if request.method == 'POST' :
            newtitle = request.form['title']
            newcontent = request.form['content']
            newstatus = request.form['status']
            conn = sqlite3.connect(DATABASE)
            cursor = conn.cursor()
            cursor.execute("""UPDATE posts SET title=?, content=?, status=? WHERE title=?""",
                           (newtitle, newcontent, newstatus, post,))
            conn.commit()
            conn.close()
            return redirect(url_for('post-it.racine_blog'))
        else:
            conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
            cursor = conn.cursor() # Création de l'objet "curseur"
            cursor.execute("""SELECT title, content FROM posts WHERE title=?""", (post,))
            oldpost = cursor.fetchone()
            conn.close()
            return render_template('postedit.html',
                                   section='Post-it',
                                   oldpost=oldpost)
    else:

        return redirect(BASE_URL, code=401)

@postit.route('/postit/board', methods=['GET'])
def viewsheet():
    if 'username' in session:
        conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
        cursor = conn.cursor() # Création de l'objet "curseur"
        cursor.execute("""SELECT title, content, time, author, status, avatar, nom, prenom, age FROM posts INNER JOIN users where status='public' """)
        posts = [dict(title=row[0], content=row[1], time=row[2], author=row[3],
                      status=row[4], avatar=row[5], nom=row[6], prenom=row[7], age=row[8])
        for row in reversed(cursor.fetchall())]
        conn.close()
        for post in posts:
            post['content'] = markdown(post['content'])
        return render_template('board.html', section='Post-it', posts=posts)
    else:
        return redirect(BASE_URL, code=401)