add openai model to config, rework logging to use appdirs logging dir

This commit is contained in:
2025-06-03 15:28:14 +02:00
parent 9684229fc2
commit 3fbb8bbd52
22 changed files with 101 additions and 84 deletions

View File

@@ -7,6 +7,7 @@ from pathlib import Path
@dataclass @dataclass
class OpenAI: class OpenAI:
api_key: str api_key: str
model: str
def getattr(self, name: str): def getattr(self, name: str):
return getattr(self, name) return getattr(self, name)

View File

@@ -1,17 +1,25 @@
__version__ = "0.2.1"
__author__ = "Alexander Kirchner"
__all__ = ["__version__", "__author__", "Icon", "settings"] __all__ = ["__version__", "__author__", "Icon", "settings"]
from config import Config
import os import os
from config import Config
from appdirs import AppDirs
app = AppDirs("SemesterApparatsManager", "SAM")
LOG_DIR = app.user_log_dir
CONFIG_DIR = app.user_config_dir
if not os.path.exists(LOG_DIR):
os.makedirs(LOG_DIR)
if not os.path.exists(CONFIG_DIR):
os.makedirs(CONFIG_DIR)
settings = Config("config/config.yaml") settings = Config("config/config.yaml")
if not os.path.exists(settings.database.temp.expanduser()): if not os.path.exists(settings.database.temp.expanduser()):
settings.database.temp.expanduser().mkdir(parents=True, exist_ok=True) settings.database.temp.expanduser().mkdir(parents=True, exist_ok=True)
from .utils.icon import Icon from .utils.icon import Icon
__version__ = "0.2.1"
__author__ = "Alexander Kirchner"
if not os.path.exists("logs"): if not os.path.exists("logs"):
os.mkdir("logs") os.mkdir("logs")
# open and close the file to create it # open and close the file to create it

View File

@@ -6,11 +6,11 @@ from src.backend.database import Database
import loguru import loguru
import sys import sys
from src import LOG_DIR
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
db = Database() db = Database()

View File

@@ -1,12 +1,18 @@
import os
import sqlite3 as sql
import tempfile
from pathlib import Path
from src import settings
from typing import Any, List, Optional, Tuple, Union
import datetime import datetime
import json import json
import os
import sqlite3 as sql
import sys
import tempfile
from dataclasses import asdict from dataclasses import asdict
from pathlib import Path
from string import ascii_lowercase as lower
from string import digits, punctuation
from typing import Any, List, Optional, Tuple, Union
import loguru
from src import LOG_DIR, settings
from src.backend.db import ( from src.backend.db import (
CREATE_ELSA_FILES_TABLE, CREATE_ELSA_FILES_TABLE,
CREATE_ELSA_MEDIA_TABLE, CREATE_ELSA_MEDIA_TABLE,
@@ -19,20 +25,17 @@ from src.backend.db import (
CREATE_TABLE_SUBJECTS, CREATE_TABLE_SUBJECTS,
CREATE_TABLE_USER, CREATE_TABLE_USER,
) )
from pathlib import Path
from src.errors import AppPresentError, NoResultError from src.errors import AppPresentError, NoResultError
from src.logic import ApparatData, BookData, Prof, Apparat, ELSA from src.logic import ELSA, Apparat, ApparatData, BookData, Prof
from src.logic.constants import SEMAP_MEDIA_ACCOUNTS from src.logic.constants import SEMAP_MEDIA_ACCOUNTS
from src.utils.blob import create_blob from src.utils.blob import create_blob
from .semester import Semester from .semester import Semester
from string import ascii_lowercase as lower, digits, punctuation
import loguru
import sys
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")

View File

@@ -3,11 +3,11 @@ import datetime
from dataclasses import dataclass from dataclasses import dataclass
import loguru import loguru
import sys import sys
from src import LOG_DIR
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")

View File

@@ -5,11 +5,11 @@ from src.backend import Database
from src.logic.webrequest import BibTextTransformer, WebRequest from src.logic.webrequest import BibTextTransformer, WebRequest
import loguru import loguru
import sys import sys
from src import LOG_DIR
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO") # logger.add(sys.stderr, format="{time} {level} {message}", level="INFO")

View File

@@ -7,11 +7,11 @@ from PyQt6.QtCore import pyqtSignal as Signal
from src.backend import Database from src.backend import Database
import loguru import loguru
import sys import sys
from src import LOG_DIR
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
# from src.transformers import RDS_AVAIL_DATA # from src.transformers import RDS_AVAIL_DATA

View File

@@ -5,7 +5,7 @@ from PyQt6.QtCore import QThread
from PyQt6.QtCore import pyqtSignal as Signal from PyQt6.QtCore import pyqtSignal as Signal
from src.backend.database import Database from src.backend.database import Database
from src import LOG_DIR
from src.logic.webrequest import BibTextTransformer, WebRequest from src.logic.webrequest import BibTextTransformer, WebRequest
# from src.transformers import RDS_AVAIL_DATA # from src.transformers import RDS_AVAIL_DATA
@@ -15,7 +15,7 @@ import sys
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")

View File

@@ -1,8 +1,9 @@
from openai import OpenAI from openai import OpenAI
from src import settings from src import settings
import json import json
from src import LOG_DIR
model = "gpt-4o" model = settings.openAI.model
api_key = settings.openAI.api_key api_key = settings.openAI.api_key
client = OpenAI(api_key = api_key) client = OpenAI(api_key = api_key)

View File

@@ -11,10 +11,11 @@ from src.transformers import ARRAYData, BibTeXData, COinSData, RDSData, RISData
from src.transformers.transformers import RDS_AVAIL_DATA, RDS_GENERIC_DATA from src.transformers.transformers import RDS_AVAIL_DATA, RDS_GENERIC_DATA
import loguru import loguru
import sys import sys
from src import LOG_DIR
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO") # logger.add(sys.stderr, format="{time} {level} {message}", level="INFO")

View File

@@ -1,18 +1,21 @@
import pandas as pd
from docx import Document
from dataclasses import dataclass
from src.backend import Semester
from typing import Union, Any
from src.logic.openai import name_tester, run_shortener, semester_converter
import zipfile
from bs4 import BeautifulSoup
import loguru
import sys import sys
import zipfile
from dataclasses import dataclass
from typing import Any, Union
import loguru
import pandas as pd
from bs4 import BeautifulSoup
from docx import Document
from src import LOG_DIR
from src.backend import Semester
from src.logic.openai import name_tester, run_shortener, semester_converter
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")

View File

@@ -6,7 +6,7 @@ from dataclasses import dataclass
from dataclasses import field as dataclass_field from dataclasses import field as dataclass_field
from typing import Any, List from typing import Any, List
from src import LOG_DIR
from src.logic.dataclass import BookData from src.logic.dataclass import BookData
import loguru import loguru
import sys import sys
@@ -14,7 +14,7 @@ import sys
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
###Pydatnic models ###Pydatnic models

View File

@@ -1,20 +1,19 @@
import hashlib import hashlib
import sys
import loguru
from PyQt6 import QtCore, QtWidgets from PyQt6 import QtCore, QtWidgets
from src import LOG_DIR, Icon
from src.backend.admin_console import AdminCommands from src.backend.admin_console import AdminCommands
from src.backend.database import Database from src.backend.database import Database
from .dialog_sources.login_ui import Ui_Dialog from .dialog_sources.login_ui import Ui_Dialog
import sys
import loguru
from src import Icon
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
class LoginDialog(Ui_Dialog): class LoginDialog(Ui_Dialog):

View File

@@ -10,11 +10,11 @@ from .dialog_sources.Ui_mail_preview import Ui_eMailPreview as MailPreviewDialog
from .mailTemplate import MailTemplateDialog from .mailTemplate import MailTemplateDialog
import loguru import loguru
import sys import sys
from src import LOG_DIR
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")

View File

@@ -6,11 +6,11 @@ from src.backend import AutoAdder
from .dialog_sources.parsed_titles_ui import Ui_Form from .dialog_sources.parsed_titles_ui import Ui_Form
import loguru import loguru
import sys import sys
from src import LOG_DIR
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
class ParsedTitles(QtWidgets.QWidget, Ui_Form): class ParsedTitles(QtWidgets.QWidget, Ui_Form):
def __init__(self, parent=None): def __init__(self, parent=None):

View File

@@ -4,11 +4,12 @@ from .dialog_sources.settings_ui import Ui_Dialog as _settings
from src.ui.widgets.iconLine import IconWidget from src.ui.widgets.iconLine import IconWidget
import loguru import loguru
import sys import sys
from src import LOG_DIR
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")

View File

@@ -1,70 +1,68 @@
# encoding: utf-8 # encoding: utf-8
import atexit import atexit
import os import os
import time
import sys import sys
import tempfile import tempfile
import time
import webbrowser import webbrowser
from datetime import datetime
from pathlib import Path from pathlib import Path
from typing import Any, Union from typing import Any, Union
import loguru
from natsort import natsorted from natsort import natsorted
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtCore import QThread from PyQt6.QtCore import QThread
from PyQt6.QtGui import QRegularExpressionValidator from PyQt6.QtGui import QRegularExpressionValidator
from src import Icon from src import LOG_DIR, Icon
from src.backend import Database, BookGrabber, AvailChecker, DocumentationThread from src.backend import AvailChecker, BookGrabber, Database, DocumentationThread
from src.backend.semester import Semester
from src.backend.create_file import recreateFile from src.backend.create_file import recreateFile
from src.backend.delete_temp_contents import delete_temp_contents as tempdelete from src.backend.delete_temp_contents import delete_temp_contents as tempdelete
from src.ui import Ui_Semesterapparat from src.backend.semester import Semester
from src.logic import ( from src.logic import (
APP_NRS, APP_NRS,
Apparat,
# PROF_TITLES, # PROF_TITLES,
ApparatData, ApparatData,
BookData, BookData,
Prof,
SemapDocument,
csv_to_list, csv_to_list,
word_to_semap, word_to_semap,
SemapDocument,
Prof,
Apparat,
) )
from src.ui import Ui_Semesterapparat
from src.ui.dialogs import ( from src.ui.dialogs import (
popus_confirm,
MedienAdder,
About, About,
ApparatExtendDialog, ApparatExtendDialog,
Mail_Dialog,
Settings,
BookDataUI, BookDataUI,
DocumentPrintDialog,
LoginDialog, LoginDialog,
Mail_Dialog,
MedienAdder,
ParsedTitles, ParsedTitles,
ReminderDialog, ReminderDialog,
DocumentPrintDialog, Settings,
popus_confirm,
) )
from src.ui.widgets import ( from src.ui.widgets import (
ElsaDialog,
MessageCalendar,
FilePicker,
CalendarEntry, CalendarEntry,
UserCreate,
SearchStatisticPage,
EditUser,
EditProf, EditProf,
EditUser,
ElsaDialog,
FilePicker,
MessageCalendar,
SearchStatisticPage,
UserCreate,
) )
from datetime import datetime
import loguru
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
log.add( log.add(
f"logs/{datetime.now().strftime('%Y-%m-%d')}.log", f"{LOG_DIR}/{datetime.now().strftime('%Y-%m-%d')}.log",
rotation="1 day", rotation="1 day",
retention="1 month", retention="1 month",
) )

View File

@@ -6,11 +6,12 @@ from typing import Any
import darkdetect import darkdetect
import loguru import loguru
import sys import sys
from src import LOG_DIR
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
color = "#ddfb00" if darkdetect.isDark() else "#2204ff" color = "#ddfb00" if darkdetect.isDark() else "#2204ff"

View File

@@ -5,11 +5,11 @@ from src.logic import Prof
from src.backend import Database from src.backend import Database
import loguru import loguru
import sys import sys
from src import LOG_DIR
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")

View File

@@ -11,11 +11,11 @@ from src.ui.widgets import FilePicker, DataGraph
from src.backend import recreateElsaFile from src.backend import recreateElsaFile
import loguru import loguru
import sys import sys
from src import LOG_DIR
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")

View File

@@ -5,11 +5,12 @@ import pyqtgraph as pg
from PyQt6 import QtWidgets from PyQt6 import QtWidgets
import loguru import loguru
import sys import sys
from src import LOG_DIR
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
def mergedicts(d1: dict[str, Any], d2: dict[str, Any]): def mergedicts(d1: dict[str, Any], d2: dict[str, Any]):

View File

@@ -6,7 +6,7 @@ from src.backend import Database, Semester
from src.logic import custom_sort, Prof, sort_semesters_list from src.logic import custom_sort, Prof, sort_semesters_list
from src.ui.dialogs import Mail_Dialog, ApparatExtendDialog, ReminderDialog from src.ui.dialogs import Mail_Dialog, ApparatExtendDialog, ReminderDialog
from src.ui.widgets import DataGraph, StatusWidget from src.ui.widgets import DataGraph, StatusWidget
from src import LOG_DIR
from natsort import natsorted from natsort import natsorted
import loguru import loguru
import sys import sys
@@ -14,7 +14,7 @@ import sys
log = loguru.logger log = loguru.logger
log.remove() log.remove()
log.add(sys.stdout, level="INFO") log.add(sys.stdout, level="INFO")
log.add("logs/application.log", rotation="1 MB", retention="10 days") log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")