File size: 3,124 Bytes
becae7c 7ec12ec becae7c 7ec12ec becae7c 7ec12ec becae7c 7ec12ec becae7c 7ec12ec | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | import sqlite3
import os
from supabase import create_client, Client
def create_table():
conn = sqlite3.connect("code.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS code (
id INTEGER PRIMARY KEY,
titre TEXT,
niveau INTEGER,
mots_cle TEXT,
enonce TEXT NOT NULL,
test TEXT
)
""")
cursor.execute("DELETE FROM code;")
if not os.path.exists('code.txt'):
print("CRITICAL: code.txt not found! Exercises will not be loaded.")
conn.close()
return
with open('code.txt', 'r') as f:
c = 0
txt = ""
id = 1
for l in f :
txt += l
if l == ";;;\n":
c += 1
if c == 5 :
tab = txt.split(";;;\n")
txt = ""
c = 0
cursor.execute("INSERT INTO code (id, titre, niveau, mots_cle, enonce, test) VALUES (?, ?, ?, ?, ?, ?)", (id, tab[0], tab[1], tab[2], tab[3], tab[4]))
id += 1
conn.commit()
conn.close()
def check_user(username, password):
supabase_url = os.getenv("SUPABASE_URL")
supabase_key = os.getenv("SUPABASE_KEY")
if not supabase_url or not supabase_key:
print("Erreur: SUPABASE_URL ou SUPABASE_KEY non défini")
return False
try:
supabase: Client = create_client(supabase_url, supabase_key)
response = supabase.rpc("check_login", {"p_user": username, "p_password": password}).execute()
# Log for debugging
print(f"DEBUG: Supabase response for {username}: {response.data}")
# Ensure we return a boolean
if response.data is True:
return True
elif response.data is False:
return False
return bool(response.data)
except Exception as e:
print(f"Erreur lors de la connexion à Supabase: {e}")
import traceback
traceback.print_exc()
return False
# La fonction add_user n'est plus nécessaire car la gestion des utilisateurs se fait via Supabase
def return_title():
conn = sqlite3.connect("code.db")
cursor = conn.cursor()
cursor.execute("SELECT id, titre, niveau FROM code")
rows = cursor.fetchall()
conn.close()
return [{"id" : v[0], "title" : v[1].replace("\n",""), "niveau":v[2]} for v in rows]
def return_exercise(id):
conn = sqlite3.connect("code.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM code WHERE id = ?", (id,))
rows = cursor.fetchall()
conn.close()
return rows[0]
def return_mot_cle():
conn = sqlite3.connect("code.db")
cursor = conn.cursor()
cursor.execute("SELECT id, mots_cle FROM code")
rows = cursor.fetchall()
conn.close()
return [{"id" : v[0], "mot_cle" : v[1].replace("\n","")} for v in rows]
def return_niveau():
conn = sqlite3.connect("code.db")
cursor = conn.cursor()
cursor.execute("SELECT id, niveau FROM code")
rows = cursor.fetchall()
conn.close()
return [{"id" : v[0], "niveau" : v[1]} for v in rows]
|