fixes + updates
add ascii-lowercase symbols that can be at the end of a query add inspect module to name database logger based on calling class
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
import datetime
|
|
||||||
import os
|
import os
|
||||||
import re
|
import inspect
|
||||||
import sqlite3 as sql
|
import sqlite3 as sql
|
||||||
import tempfile
|
import tempfile
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -30,8 +29,7 @@ from src.logic.log import MyLogger
|
|||||||
from src.utils import create_blob, dump_pickle, load_pickle
|
from src.utils import create_blob, dump_pickle, load_pickle
|
||||||
|
|
||||||
config = OmegaConf.load("config.yaml")
|
config = OmegaConf.load("config.yaml")
|
||||||
logger = MyLogger(__name__)
|
ascii_lowercase = "abcdefghijklmnopqrstuvwxyz0123456789)"
|
||||||
|
|
||||||
|
|
||||||
class Database:
|
class Database:
|
||||||
"""
|
"""
|
||||||
@@ -45,14 +43,23 @@ class Database:
|
|||||||
Args:
|
Args:
|
||||||
db_path (str, optional): Optional Path for testing / specific purposes. Defaults to None.
|
db_path (str, optional): Optional Path for testing / specific purposes. Defaults to None.
|
||||||
"""
|
"""
|
||||||
|
caller_frame = inspect.stack()[1]
|
||||||
|
|
||||||
|
script_name = (
|
||||||
|
caller_frame.filename.replace("\\", "/").split("/")[-1].split(".")[0]
|
||||||
|
)
|
||||||
|
print(script_name)
|
||||||
|
name = f"Database.{script_name}"
|
||||||
|
self.logger = MyLogger(name)
|
||||||
if db_path is None:
|
if db_path is None:
|
||||||
self.db_path = config.database.path + config.database.name
|
self.db_path = config.database.path + config.database.name
|
||||||
self.db_path = self.db_path.replace("~", str(Path.home()))
|
self.db_path = self.db_path.replace("~", str(Path.home()))
|
||||||
else:
|
else:
|
||||||
self.db_path = db_path
|
self.db_path = db_path
|
||||||
if self.get_db_contents() is None:
|
if self.get_db_contents() == []:
|
||||||
logger.log_critical("Database does not exist, creating tables")
|
self.logger.log_critical("Database does not exist, creating tables")
|
||||||
self.create_tables()
|
self.create_tables()
|
||||||
|
self.insertSubjects()
|
||||||
|
|
||||||
def get_db_contents(self) -> Union[List[Tuple], None]:
|
def get_db_contents(self) -> Union[List[Tuple], None]:
|
||||||
"""
|
"""
|
||||||
@@ -119,7 +126,7 @@ class Database:
|
|||||||
"""
|
"""
|
||||||
conn = self.connect()
|
conn = self.connect()
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
logger.log_info(f"Inserting {params} into database with query {query}")
|
self.logger.log_info(f"Inserting {params} into database with query {query}")
|
||||||
cursor.execute(query, params)
|
cursor.execute(query, params)
|
||||||
conn.commit()
|
conn.commit()
|
||||||
self.close_connection(conn)
|
self.close_connection(conn)
|
||||||
@@ -140,7 +147,8 @@ class Database:
|
|||||||
"""
|
"""
|
||||||
conn = self.connect()
|
conn = self.connect()
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
logger.log_info(f"Querying database with query {query}, args: {args}")
|
self.logger.log_info(f"Querying database with query {query}, args: {args}")
|
||||||
|
|
||||||
cursor.execute(query, args)
|
cursor.execute(query, args)
|
||||||
rv = cursor.fetchall()
|
rv = cursor.fetchall()
|
||||||
conn.commit()
|
conn.commit()
|
||||||
@@ -471,6 +479,41 @@ class Database:
|
|||||||
data = self.query_db("SELECT DISTINCT erstellsemester FROM semesterapparat")
|
data = self.query_db("SELECT DISTINCT erstellsemester FROM semesterapparat")
|
||||||
return [i[0] for i in data]
|
return [i[0] for i in data]
|
||||||
|
|
||||||
|
def insertSubjects(self):
|
||||||
|
print("Inserting subjects")
|
||||||
|
subjects = [
|
||||||
|
"Biologie",
|
||||||
|
"Chemie",
|
||||||
|
"Deutsch",
|
||||||
|
"Englisch",
|
||||||
|
"Erziehungswissenschaft",
|
||||||
|
"Französisch",
|
||||||
|
"Geographie",
|
||||||
|
"Geschichte",
|
||||||
|
"Gesundheitspädagogik",
|
||||||
|
"Haushalt / Textil",
|
||||||
|
"Kunst",
|
||||||
|
"Mathematik / Informatik",
|
||||||
|
"Medien in der Bildung",
|
||||||
|
"Musik",
|
||||||
|
"Philosophie",
|
||||||
|
"Physik",
|
||||||
|
"Poitikwissenschaft",
|
||||||
|
"Prorektorat Lehre und Studium",
|
||||||
|
"Psychologie",
|
||||||
|
"Soziologie",
|
||||||
|
"Sport",
|
||||||
|
"Technik",
|
||||||
|
"Theologie",
|
||||||
|
"Wirtschaftslehre",
|
||||||
|
]
|
||||||
|
conn = self.connect()
|
||||||
|
cursor = conn.cursor()
|
||||||
|
for subject in subjects:
|
||||||
|
cursor.execute("INSERT INTO subjects (name) VALUES (?)", (subject,))
|
||||||
|
conn.commit()
|
||||||
|
self.close_connection(conn)
|
||||||
|
|
||||||
def getSubjects(self):
|
def getSubjects(self):
|
||||||
"""Get all the subjects in the database
|
"""Get all the subjects in the database
|
||||||
|
|
||||||
@@ -553,7 +596,7 @@ class Database:
|
|||||||
Args:
|
Args:
|
||||||
message_id (str): the id of the message
|
message_id (str): the id of the message
|
||||||
"""
|
"""
|
||||||
logger.log_info(f"Deleting message with id {message_id}")
|
self.logger.log_info(f"Deleting message with id {message_id}")
|
||||||
self.query_db("DELETE FROM messages WHERE id=?", (message_id,))
|
self.query_db("DELETE FROM messages WHERE id=?", (message_id,))
|
||||||
|
|
||||||
# Prof data
|
# Prof data
|
||||||
@@ -746,7 +789,7 @@ class Database:
|
|||||||
"SELECT appnr FROM semesterapparat WHERE deletion_status=0"
|
"SELECT appnr FROM semesterapparat WHERE deletion_status=0"
|
||||||
)
|
)
|
||||||
numbers = [i[0] for i in numbers]
|
numbers = [i[0] for i in numbers]
|
||||||
logger.log_info(f"Currently used apparat numbers: {numbers}")
|
self.logger.log_info(f"Currently used apparat numbers: {numbers}")
|
||||||
return numbers
|
return numbers
|
||||||
|
|
||||||
def setNewSemesterDate(self, app_id: Union[str, int], newDate, dauerapp=False):
|
def setNewSemesterDate(self, app_id: Union[str, int], newDate, dauerapp=False):
|
||||||
@@ -808,7 +851,7 @@ class Database:
|
|||||||
prof_id = self.getProfId(apparat.profname)
|
prof_id = self.getProfId(apparat.profname)
|
||||||
# ic(prof_id)
|
# ic(prof_id)
|
||||||
query = f"INSERT OR IGNORE INTO semesterapparat (appnr, name, erstellsemester, dauer, prof_id, fach,deletion_status,konto) VALUES ('{apparat.appnr}', '{apparat.appname}', '{apparat.semester}', '{apparat.dauerapp}', {prof_id}, '{apparat.app_fach}', '{0}', '{SEMAP_MEDIA_ACCOUNTS[apparat.appnr]}')"
|
query = f"INSERT OR IGNORE INTO semesterapparat (appnr, name, erstellsemester, dauer, prof_id, fach,deletion_status,konto) VALUES ('{apparat.appnr}', '{apparat.appname}', '{apparat.semester}', '{apparat.dauerapp}', {prof_id}, '{apparat.app_fach}', '{0}', '{SEMAP_MEDIA_ACCOUNTS[apparat.appnr]}')"
|
||||||
logger.log_info(query)
|
self.logger.log_info(query)
|
||||||
self.query_db(query)
|
self.query_db(query)
|
||||||
return self.getApparatId(apparat.appname)
|
return self.getApparatId(apparat.appname)
|
||||||
|
|
||||||
@@ -954,7 +997,7 @@ class Database:
|
|||||||
apparat_data.apparat_adis_id,
|
apparat_data.apparat_adis_id,
|
||||||
apparat_data.appnr,
|
apparat_data.appnr,
|
||||||
)
|
)
|
||||||
logger.log_info(f"Updating apparat with query {query} and params {params}")
|
self.logger.log_info(f"Updating apparat with query {query} and params {params}")
|
||||||
self.query_db(query, params)
|
self.query_db(query, params)
|
||||||
|
|
||||||
def checkApparatExists(self, apparat_name: str):
|
def checkApparatExists(self, apparat_name: str):
|
||||||
@@ -1018,6 +1061,7 @@ class Database:
|
|||||||
result_a = tuple(result_a)
|
result_a = tuple(result_a)
|
||||||
result[result.index(orig_value)] = result_a
|
result[result.index(orig_value)] = result_a
|
||||||
self.close_connection(conn)
|
self.close_connection(conn)
|
||||||
|
self.logger.log_info(f"Query result: {result}")
|
||||||
return result
|
return result
|
||||||
|
|
||||||
if "deletable" in kwargs.keys():
|
if "deletable" in kwargs.keys():
|
||||||
@@ -1052,8 +1096,16 @@ class Database:
|
|||||||
)
|
)
|
||||||
# remove all x="" parts from the query where x is a key in kwargs
|
# remove all x="" parts from the query where x is a key in kwargs
|
||||||
query = query[:-5]
|
query = query[:-5]
|
||||||
|
query = query.strip()
|
||||||
|
# check if query ends with lowercase letter or a '. if not, remove last symbol and try again
|
||||||
|
while query[-1] not in ascii_lowercase and query[-1] != "'":
|
||||||
|
query = query[:-1]
|
||||||
|
query = query.strip()
|
||||||
|
|
||||||
print(query)
|
print(query)
|
||||||
return __query(query)
|
res = __query(query)
|
||||||
|
print(res)
|
||||||
|
return res
|
||||||
|
|
||||||
# Admin data
|
# Admin data
|
||||||
def getUser(self):
|
def getUser(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user