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()
|