pywallter/tools/databaseinit.py
John Doe 57241b843b Rework blog section
Wrok in bloc sectionn
2025-12-05 23:20:36 +01:00

159 lines
4.5 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' )
bcrypt = Bcrypt(app)
def init_db(database):
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,
totp CHAR(40),
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 Blog_posts(
title TEXT NOT NULL,
subtitle TEXT,
comments TEXT,
content TEXT,
creation_date TEXT,
last_updated TEXT,
category TEXT,
author TEXT,
status TEXT,
blog_theme TEXT,
PRIMARY KEY(title, author)
)
""")
conn.commit()
print ("Table Blog_posts Ok !")
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 check_directories(users_folder):
if os.path.isdir(users_folder):
print("Le dossier {} existe".format(users_folder))
else:
os.makedirs(users_folder)
print("Le dossier {} a été créé".format(users_folder))
def db_migrate(database):
conn = sqlite3.connect(database)
cursor = conn.cursor()
cursor.execute("""SELECT name FROM PRAGMA_TABLE_INFO('users');""")
db_columns = cursor.fetchall()
invitations_col = False
lost_password_token_col = False
totp_col = False
blog_theme_col = False
updated_col = False
creation_date_col = False
content_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
if "totp" == col[0]:
totp_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 "content" == col[0]:
content_col = True
if "creation_date" == col[0]:
creation_date_col= True
if "category" == col[0]:
category_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(totp_col):
cursor.execute("""ALTER TABLE Users ADD COLUMN totp CHAR(40);""")
conn.commit()
print ("Ajout du champ totp 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")
if not(content_col):
cursor.execute("""ALTER TABLE Blog_posts RENAME COLUMN filename TO content;""")
conn.commit()
print ("Filename renomé en content")
if not(creation_date_col):
cursor.execute("""ALTER TABLE Blog_posts RENAME COLUMN time TO creation_date;""")
conn.commit()
print ("Time renomé en creation_date")
if not(category_col):
cursor.execute("""ALTER TABLE Blog_posts ADD COLUMN category TEXT;""")
conn.commit()
print ("Ajout de la colono category")
conn.close()