142 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
from flask import Flask
 | 
						|
import sqlite3
 | 
						|
import os
 | 
						|
from tools.utils import gen_token
 | 
						|
from flask_bcrypt import Bcrypt
 | 
						|
 | 
						|
app = Flask( 'pywallter' )
 | 
						|
app.config.from_pyfile('config.py')
 | 
						|
bcrypt = Bcrypt(app)
 | 
						|
 | 
						|
DATABASE = app.config['DATABASE']
 | 
						|
DOSSIER_PERSO = app.config['DOSSIER_APP']
 | 
						|
DATABASE = app.config['DATABASE']
 | 
						|
 | 
						|
 | 
						|
 | 
						|
def init_db():
 | 
						|
    conn = sqlite3.connect(DATABASE)
 | 
						|
    cursor = conn.cursor()
 | 
						|
    cursor.execute("""
 | 
						|
    CREATE TABLE IF NOT EXISTS users(
 | 
						|
    Mail TEXT UNIQUE,
 | 
						|
    name TEXT primary KEY UNIQUE NOT NULL,
 | 
						|
    alias TEXT,
 | 
						|
    xmpp TEXT,
 | 
						|
    passwd TEXT,
 | 
						|
    avatar TEXT,
 | 
						|
    nom TEXT,
 | 
						|
    prenom TEXT,
 | 
						|
    age TEXT,
 | 
						|
    website TEXT,
 | 
						|
    blog_theme TEXT,
 | 
						|
    Token CHAR(64),
 | 
						|
    Lost_password_token CHAR(128),
 | 
						|
    invitations INTEGER DEFAULT (20),
 | 
						|
    Mail_rescue TEXT )
 | 
						|
    """)
 | 
						|
    conn.commit()
 | 
						|
    print ('table users Ok')
 | 
						|
 | 
						|
    cursor.execute("""
 | 
						|
    CREATE TABLE IF NOT EXISTS posts(
 | 
						|
    id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
 | 
						|
    title TEXT,
 | 
						|
    content TEXT,
 | 
						|
    time TEXT,
 | 
						|
    category TEXT,
 | 
						|
    author TEXT,
 | 
						|
    status TEXT
 | 
						|
    )
 | 
						|
    """)
 | 
						|
 | 
						|
    cursor.execute("""
 | 
						|
    CREATE TABLE IF NOT EXISTS Blog_posts(
 | 
						|
    title TEXT NOT NULL,
 | 
						|
    subtitle TEXT,
 | 
						|
    comments TEXT,
 | 
						|
    filename TEXT,
 | 
						|
    time TEXT,
 | 
						|
    last_updated TEXT,
 | 
						|
    category TEXT,
 | 
						|
    author TEXT,
 | 
						|
    status TEXT,
 | 
						|
    PRIMARY KEY(title, author)
 | 
						|
    )
 | 
						|
    """)
 | 
						|
    conn.commit()
 | 
						|
 | 
						|
 | 
						|
    cursor.execute("""select * from users""")
 | 
						|
    accounts = cursor.fetchall()
 | 
						|
    # Si aucun compte utilisateur existe  on créé l'utilisateur
 | 
						|
    # pywallter qui permet la première inscription
 | 
						|
    if not(accounts) :
 | 
						|
        user = "pywallter"
 | 
						|
        token = gen_token()
 | 
						|
        passwd_bcrypt = bcrypt.generate_password_hash(token)
 | 
						|
        cursor.execute("""INSERT INTO users(name, passwd, token) VALUES(?, ?, ?)""", (user, passwd_bcrypt, token))
 | 
						|
        conn.commit()
 | 
						|
    conn.close()
 | 
						|
    print ('table posts OK')
 | 
						|
 | 
						|
def init_dir():
 | 
						|
    if os.path.isdir('users'):
 | 
						|
        return False
 | 
						|
    else:
 | 
						|
        os.makedirs('./users/')
 | 
						|
 | 
						|
def db_migrate():
 | 
						|
    conn = sqlite3.connect(DATABASE)
 | 
						|
    cursor = conn.cursor()
 | 
						|
 | 
						|
    cursor.execute("""SELECT name FROM PRAGMA_TABLE_INFO('users');""")
 | 
						|
    db_columns = cursor.fetchall()
 | 
						|
    invitations_col = False
 | 
						|
    blog_theme_col = False
 | 
						|
    updated_col = False
 | 
						|
    lost_password_token_col = False
 | 
						|
 | 
						|
    for col in db_columns:
 | 
						|
        if "invitations" == col[0]:
 | 
						|
            invitations_col = True
 | 
						|
        if "Lost_password_token" == col[0]:
 | 
						|
            lost_password_token_col = True
 | 
						|
       
 | 
						|
 | 
						|
    cursor.execute("""SELECT name FROM PRAGMA_TABLE_INFO('Blog_posts');""")
 | 
						|
    db_columns = cursor.fetchall()
 | 
						|
    for col in db_columns:
 | 
						|
        if "blog_theme" == col[0]:
 | 
						|
            blog_theme_col = True
 | 
						|
        if "last_updated" == col[0]:
 | 
						|
            updated_col = True
 | 
						|
       
 | 
						|
 | 
						|
            
 | 
						|
    if not(invitations_col):
 | 
						|
        cursor.execute("""ALTER TABLE users ADD COLUMN invitations INTEGER DEFAULT (20);""")
 | 
						|
        conn.commit()
 | 
						|
        print ("Ajout du champ invitations dans la table users")
 | 
						|
 | 
						|
        
 | 
						|
    if not(lost_password_token_col):
 | 
						|
        cursor.execute("""ALTER TABLE Users ADD COLUMN Lost_password_token CHAR(64);""")
 | 
						|
        conn.commit()
 | 
						|
        print ("Ajout du champ Lost_password_token dans la table Users")
 | 
						|
 | 
						|
        
 | 
						|
    if not(blog_theme_col):
 | 
						|
        cursor.execute("""ALTER TABLE Blog_posts ADD COLUMN blog_theme TEXT;""")
 | 
						|
        conn.commit()
 | 
						|
        print ("Ajout du champ blog_theme dans la table Blog")
 | 
						|
 | 
						|
    if not(updated_col):
 | 
						|
        cursor.execute("""ALTER TABLE Blog_posts ADD COLUMN last_updated TEXT;""")
 | 
						|
        conn.commit()
 | 
						|
        print ("Ajout du champ updated dans la table BLog")
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    conn.close()
 |