diff --git a/src/backend/olddatabase.py b/src/backend/olddatabase.py deleted file mode 100644 index fb3a941..0000000 --- a/src/backend/olddatabase.py +++ /dev/null @@ -1,753 +0,0 @@ -import datetime -import os - -# from src.data import pickles -import pickle -import re -import shutil -import sqlite3 as sql3 -import tempfile -from typing import Any - -from omegaconf import OmegaConf - -from src.logic.constants import SEMAP_MEDIA_ACCOUNTS -from src.logic.dataclass import ApparatData, BookData -from src.logic.log import MyLogger - -# from icecream import ic -config = OmegaConf.load("config.yaml") - -logger = MyLogger("Database") - - -class Database: - logger.log_info("Database imported") - - def __init__(self) -> None: - # TODO: change path later on to a variable based on the settings - self.database_path = f"{config.database.path}{config.database.name}" - # ic(self.database_path) - self.database_path = "sap.db" - logger.log_info("Connecting to database") - self.database = sql3.connect(self.database_path) - self.cur = self.database.cursor() - - pass - - def create_database(self): - # create database from template - subjects = config.subjects - for subject in subjects: - self.cur.execute(f"INSERT INTO subjects (name) VALUES ('{subject}')") - self.database.commit() - - def create_blob(self, file): - with open(file, "rb") as f: - blob = f.read() - return blob - - def recreate_file(self, filename, app_id: int): - blob = self.get_blob(filename, app_id) - # write the blob to the file and save it to a preset destination - # with open(filename, "wb") as f: - # f.write(blob) - # use tempfile to create a temporary file - if not os.path.exists(config.database.tempdir): - os.mkdir(config.database.tempdir) - tempfile.NamedTemporaryFile( - filename=filename, delete=False, dir=config.database.tempdir, mode="wb" - ).write(blob) - - # user = os.getlogin() - # home = os.path.expanduser("~") - - # # check if the folder exists, if not, create it - # if not os.path.exists(f"{home}/Desktop/SemApp/{user}"): - # os.mkdir(f"{home}/Desktop/SemApp/{user}") - # shutil.move(filename, f"{home}/Desktop/SemApp/{user}") - - def get_blob(self, filename: str, app_id: int): - query = f"SELECT fileblob FROM files WHERE filename='{filename}' AND app_id={app_id}" - logger.log_info(f"Retrieving blob for {filename}, Appid {app_id} from database") - result = self.cur.execute(query).fetchone() - return result[0] - - def get_kto_no(self, app_id: int): - query = f"SELECT konto FROM semesterapparat WHERE id={app_id}" - result = self.cur.execute(query).fetchone() - return result[0] - - def insert_file(self, file: list[dict], app_id: int, prof_id): - for f in file: - filename = f["name"] - path = f["path"] - filetyp = f["type"] - print(f"filename: {filename}, path: {path}, filetyp: {filetyp}") - if path == "Database": - continue - blob = self.create_blob(path) - - query = "INSERT OR IGNORE INTO files (filename, fileblob, app_id, filetyp,prof_id) VALUES (?, ?, ?, ?,?)" - params = (filename, blob, app_id, filetyp, prof_id) - self.cur.execute(query, params) - logger.log_info( - f"Inserted {len(file)} file(s) of Apparat {app_id} into database" - ) - self.database.commit() - - def get_files(self, app_id: int, prof_id: int): - query = f"SELECT filename, filetyp FROM files WHERE app_id={app_id} AND prof_id={prof_id}" - result: list[tuple] = self.cur.execute(query).fetchall() - return result - - def get_prof_name_by_id(self, id, add_title: bool = False): - if add_title is True: - query = f"SELECT titel, fname, lname FROM prof WHERE id={id}" - result = self.cur.execute(query).fetchone() - name = " ".join(result[0:3]) - return name - else: - query = f"SELECT fullname FROM prof WHERE id={id}" - print(query) - result = self.cur.execute(query).fetchone() - name = result[0] - return name - - def get_prof_id(self, profname: str): - query = f"SELECT id FROM prof WHERE fullname='{profname.replace(',', '')}'" - result = self.cur.execute(query).fetchone() - if result is None: - return None - return self.cur.execute(query).fetchone()[0] - - def get_app_id(self, appname: str): - query = f"SELECT id FROM semesterapparat WHERE name='{appname}'" - result = self.cur.execute(query).fetchone() - if result is None: - return None - return self.cur.execute(query).fetchone()[0] - - def get_profs(self): - query = "select * from prof" - return self.cur.execute(query).fetchall() - - def app_exists(self, appnr: str) -> bool: - query = f"SELECT appnr FROM semesterapparat WHERE appnr='{appnr}'" - result = self.cur.execute(query).fetchone() - if result is None: - return False - return True - - def get_prof_data(self, profname: str = None, id: int = None) -> dict[str, str]: - if profname is not None: - profname = profname.replace(",", "") - profname = re.sub(r"\s+", " ", profname).strip() - if id: - query = "Select prof_id FROM semesterapparat WHERE appnr=?" - params = (id,) - result = self.cur.execute(query, params).fetchone() - id = result[0] - query = ( - f"SELECT * FROM prof WHERE fullname='{profname}'" - if id is None - else f"SELECT * FROM prof WHERE id={id}" - ) - result = self.cur.execute(query).fetchone() - return_data = { - "prof_title": result[1], - "profname": f"{result[3], result[2]}", - "prof_mail": result[5], - "prof_tel": result[6], - "id": result[0], - } - print(return_data) - # select the entry that contains the first name - return return_data - - def set_new_sem_date(self, appnr, new_sem_date, dauerapp=False): - # Todo: use extend_semester in new release - date = datetime.datetime.now().strftime("%Y-%m-%d") - - query = f"UPDATE semesterapparat SET verlängert_am='{date}', verlängerung_bis='{new_sem_date}' WHERE appnr='{appnr}'" - if dauerapp is not False: - query = f"UPDATE semesterapparat SET verlängert_am='{date}', verlängerung_bis='{new_sem_date}', dauerapp='{dauerapp} WHERE appnr='{appnr}'" - self.cur.execute(query) - - self.database.commit() - - def create_apparat(self, ApparatData: ApparatData): - prof_id = self.get_prof_id(ApparatData.profname) - app_id = self.get_app_id(ApparatData.appname) - if app_id is None: - if prof_id is None: - self.create_prof(ApparatData.get_prof_details()) - prof_id = self.get_prof_id(ApparatData.profname) - - query = f"INSERT OR IGNORE INTO semesterapparat (appnr, name, erstellsemester, dauer, prof_id, fach,deletion_status,konto) VALUES ('{ApparatData.appnr}', '{ApparatData.appname}', '{ApparatData.semester}', '{ApparatData.dauerapp}', {prof_id}, '{ApparatData.app_fach}', '{ApparatData.deleted}', '{SEMAP_MEDIA_ACCOUNTS[ApparatData.appnr]}')" - print(query) - self.cur.execute(query) - self.database.commit() - logger.log_info(f"Created new apparat {ApparatData.appname}") - app_id = self.get_app_id(ApparatData.appname) - # if ApparatData.media_list is not None: #! Deprecated - # for media in ApparatData.media_list: - # self.insert_file(media, app_id) - # self.database.commit() - return app_id - - def create_prof(self, prof_details: dict): - prof_title = prof_details["prof_title"] - prof_fname = prof_details["profname"].split(",")[1] - prof_fname = prof_fname.strip() - prof_lname = prof_details["profname"].split(",")[0] - prof_lname = prof_lname.strip() - prof_fullname = prof_details["profname"].replace(",", "") - prof_mail = prof_details["prof_mail"] - prof_tel = prof_details["prof_tel"] - - query = f'INSERT OR IGNORE INTO prof (titel, fname, lname, fullname, mail, telnr) VALUES ("{prof_title}", "{prof_fname}", "{prof_lname}", "{prof_fullname}", "{prof_mail}", "{prof_tel}")' - self.cur.execute(query) - self.database.commit() - pass - - def get_apparat_nrs(self) -> list: - try: - self.cur.execute( - "SELECT appnr FROM semesterapparat Where deletion_status=0" - ) - except sql3.OperationalError: - return [] - return [i[0] for i in self.cur.fetchall()] - - def get_all_apparts(self, deleted=0): - - self.cur.execute( - f"SELECT * FROM semesterapparat WHERE deletion_status={deleted}" - ) - return self.cur.fetchall() - - # - def get_app_data(self, appnr, appname) -> ApparatData: - result = self.cur.execute( - f"SELECT * FROM semesterapparat WHERE appnr='{appnr}' AND name='{appname}'" - ).fetchone() - print(f"result: {result}") - # app_id=result[0] - data = ApparatData() - data.appnr = appnr - data.app_fach = result[3] - data.appname = result[1] - profname = self.get_prof_name_by_id(result[2]) - # set profname to lastname, firstname - profname = f"{profname.split(' ')[0]}, {profname.split(' ')[1]}" - data.profname = profname - prof_data = self.get_prof_data(data.profname) - data.prof_mail = prof_data["prof_mail"] - data.prof_tel = prof_data["prof_tel"] - data.prof_title = prof_data["prof_title"] - data.erstellsemester = result[5] - data.semester = result[8] - data.deleted = result[9] - data.apparat_adis_id = result[12] - data.prof_adis_id = None - - print(data) - # data.media_list=self.get_media(app_id) - - return data - - def add_medium(self, bookdata: BookData, app_id: str, prof_id: str, *args): - # insert the bookdata into the media table - # try to retrieve the bookdata from the media table, check if the to be inserted bookdata is already in the table for the corresponding apparat - # if yes, do not insert the bookdata - # if no, insert the bookdata - t_query = ( - f"SELECT bookdata FROM media WHERE app_id={app_id} AND prof_id={prof_id}" - ) - # print(t_query) - result = self.cur.execute(t_query).fetchall() - result = [pickle.loads(i[0]) for i in result] - if bookdata in result: - print("Bookdata already in database") - # check if the book was deleted in the apparat - query = ( - "SELECT deleted FROM media WHERE app_id=? AND prof_id=? AND bookdata=?" - ) - params = (app_id, prof_id, pickle.dumps(bookdata)) - result = self.cur.execute(query, params).fetchone() - if result[0] == 1: - print("Book was deleted, updating bookdata") - query = "UPDATE media SET deleted=0 WHERE app_id=? AND prof_id=? AND bookdata=?" - params = (app_id, prof_id, pickle.dumps(bookdata)) - self.cur.execute(query, params) - self.database.commit() - return - - query = ( - "INSERT INTO media (bookdata, app_id, prof_id,deleted) VALUES (?, ?, ?,?)" - ) - converted = pickle.dumps(bookdata) - params = (converted, app_id, prof_id, 0) - self.cur.execute(query, params) - self.database.commit() - - def request_medium(self, app_id, prof_id, signature) -> int: - query = "SELECT bookdata, id FROM media WHERE app_id=? AND prof_id=?" - params = (app_id, prof_id) - result = self.cur.execute(query, params).fetchall() - books = [(i[1], pickle.loads(i[0])) for i in result] - print(books) - book = [i[0] for i in books if i[1].signature == signature] - return book[0] - - def add_message(self, message: dict, user, appnr): - def __get_user_id(user): - query = "SELECT id FROM user WHERE username=?" - params = (user,) - result = self.cur.execute(query, params).fetchone() - return result[0] - - user_id = __get_user_id(user) - query = "INSERT INTO messages (message, user_id, remind_at) VALUES (?, ?, ?)" - params = (message["message"], user_id, message["remind_at"]) - self.cur.execute(query, params) - self.database.commit() - - def get_messages(self, date: str): - def __get_user_name(id): - query = "SELECT username FROM user WHERE id=?" - params = (id,) - result = self.cur.execute(query, params).fetchone() - return result[0] - - query = f"SELECT * FROM messages WHERE remind_at='{date}'" - result = self.cur.execute(query).fetchall() - ret = [ - { - "message": i[2], - "user": __get_user_name(i[4]), - "apparatnr": i[5], - "id": i[0], - } - for i in result - ] - return ret - - def get_apparat_id(self, appname): - query = f"SELECT appnr FROM semesterapparat WHERE name='{appname}'" - result = self.cur.execute(query).fetchone() - return result[0] - - def get_apparats_by_semester(self, semester: str): - query = f"SELECT * FROM semesterapparat WHERE erstellsemester='{semester}'" - result = self.cur.execute(query).fetchall() - return result - - def get_semester(self) -> list[str]: - query = "SELECT DISTINCT erstellsemester FROM semesterapparat" - result = self.cur.execute(query).fetchall() - return [i for i in result] - - def is_eternal(self, id): - query = f"SELECT dauer FROM semesterapparat WHERE id={id}" - result = self.cur.execute(query).fetchone() - return result[0] - - def statistic_request(self, **kwargs: Any): - def __query(query): - result = self.cur.execute(query).fetchall() - for result_a in result: - orig_value = result_a - prof_name = self.get_prof_name_by_id(result_a[2]) - # replace the prof_id with the prof_name - result_a = list(result_a) - result_a[2] = prof_name - result_a = tuple(result_a) - result[result.index(orig_value)] = result_a - - return result - - if "deletable" in kwargs.keys(): - query = f"SELECT * FROM semesterapparat WHERE deletion_status=0 AND dauer=0 AND (erstellsemester!='{kwargs['deletesemester']}' OR verlängerung_bis!='{kwargs['deletesemester']}')" - return __query(query) - - if "dauer" in kwargs.keys(): - kwargs["dauer"] = kwargs["dauer"].replace("Ja", "1").replace("Nein", "0") - query = "SELECT * FROM semesterapparat WHERE " - for key, value in kwargs.items() if kwargs.items() is not None else {}: - print(key, value) - query += f"{key}='{value}' AND " - print(query) - # remove deletesemester part from normal query, as this will be added to the database upon deleting the apparat - if "deletesemester" in kwargs.keys(): - query = query.replace( - f"deletesemester='{kwargs['deletesemester']}' AND ", "" - ) - if "endsemester" in kwargs.keys(): - if "erstellsemester" in kwargs.keys(): - query = query.replace(f"endsemester='{kwargs['endsemester']}' AND ", "") - query = query.replace( - f"erstellsemester='{kwargs['erstellsemester']} AND ", "xyz" - ) - else: - query = query.replace( - f"endsemester='{kwargs['endsemester']}' AND ", "xyz" - ) - print("replaced") - query = query.replace( - "xyz", - f"(erstellsemester='{kwargs['endsemester']}' OR verlängerung_bis='{kwargs['endsemester']}') AND ", - ) - # remove all x="" parts from the query where x is a key in kwargs - - query = query[:-5] - print(query) - return __query(query) - - def get_app_count_by_semester(self) -> tuple[list[str], list[int]]: - """get the apparats created and deleted in the distinct semesters""" - - # get unique semesters - query = "SELECT DISTINCT erstellsemester FROM semesterapparat" - result = self.cur.execute(query).fetchall() - semesters = [i[0] for i in result] - created = [] - deleted = [] - for semester in semesters: - query = f"SELECT COUNT(*) FROM semesterapparat WHERE erstellsemester='{semester}'" - result = self.cur.execute(query).fetchone() - created.append(result[0]) - query = f"SELECT COUNT(*) FROM semesterapparat WHERE deletion_status=1 AND deleted_date='{semester}'" - result = self.cur.execute(query).fetchone() - deleted.append(result[0]) - # store data in a tuple - ret = [] - e_tuple = () - for sem in semesters: - e_tuple = ( - sem, - created[semesters.index(sem)], - deleted[semesters.index(sem)], - ) - ret.append(e_tuple) - return ret - # get the count of apparats created in the semesters - - def apparats_by_semester(self, semester: str): - """Get a list of all created and deleted apparats in the given semester""" - # get a list of apparats created and in the given semester - query = f"SELECT name,prof_id FROM semesterapparat WHERE erstellsemester='{semester}'" - result = self.cur.execute(query).fetchall() - c_tmp = [] - for i in result: - c_tmp.append((i[0], self.get_prof_name_by_id(i[1]))) - query = ( - f"SELECT name,prof_id FROM semesterapparat WHERE deleted_date='{semester}'" - ) - result = self.cur.execute(query).fetchall() - d_tmp = [] - for i in result: - d_tmp.append((i[0], self.get_prof_name_by_id(i[1]))) - # group the apparats by prof - c_ret = {} - for i in c_tmp: - if i[1] not in c_ret.keys(): - c_ret[i[1]] = [i[0]] - else: - c_ret[i[1]].append(i[0]) - d_ret = {} - for i in d_tmp: - if i[1] not in d_ret.keys(): - d_ret[i[1]] = [i[0]] - else: - d_ret[i[1]].append(i[0]) - return {"created": c_ret, "deleted": d_ret} - - def delete_message(self, message_id): - query = "DELETE FROM messages WHERE id=?" - params = (message_id,) - self.cur.execute(query, params) - self.database.commit() - - def delete_medium(self, title_id): - # delete the bookdata from the media table - query = "UPDATE media SET deleted=1 WHERE id=?" - params = (title_id,) - self.cur.execute(query, params) - self.database.commit() - pass - - def update_bookdata(self, bookdata: BookData, title_id): - query = "UPDATE media SET bookdata=? WHERE id=?" - converted = pickle.dumps(bookdata) - params = (converted, title_id) - self.cur.execute(query, params) - self.database.commit() - - def get_specific_book(self, book_id): - query = "SELECT bookdata FROM media WHERE id=?" - params = (book_id,) - result = self.cur.execute(query, params).fetchone() - return pickle.loads(result[0]) - - def get_media(self, app_id, prof_id, del_state=0) -> list[dict[int, BookData, int]]: - """request media from database and return result as list. - - Args: - ---- - - app_id (int): ID of the apparat - - prof_id (int): ID of the prof - - del_state (int, optional): If deleted books should be requested as well. 1 = yes 0 = no. Defaults to 0. - - Returns: - ------- - - list[dict[int,BookData,int]]: Returns a list of dictionaries containing the bookdata, the id and the availability of the book in the following format: - ------- - {"id": int, - "bookdata": BookData, - "available": int} - """ - query = f"SELECT id,bookdata,available FROM media WHERE (app_id={app_id} AND prof_id={prof_id}) AND (deleted={del_state if del_state == 0 else '1 OR deleted=0'})" - logger.log_info(f"Requesting media from database with query: {query}") - result = self.cur.execute(query).fetchall() - ret_result = [] - for result_a in result: - # ic(result_a) - data = {"id": int, "bookdata": BookData, "available": int} - data["id"] = result_a[0] - data["bookdata"] = pickle.loads(result_a[1]) - data["available"] = result_a[2] - ret_result.append(data) - return ret_result - - def get_subjects_and_aliases(self): - query = "SELECT subjects.name, aliases.name FROM subjects LEFT JOIN aliases ON subjects.id = aliases.subject_id" - return self.cur.execute(query).fetchall() - - def get_subjects(self): - query = "SELECT id,name FROM subjects" - return self.cur.execute(query).fetchall() - - def get_aliases(self, subject_id): - query = f"SELECT name FROM aliases WHERE subject_id={subject_id}" - return self.cur.execute(query).fetchall() - - def add_subject(self, subject_name): - query = f"INSERT INTO subjects (name) VALUES ('{subject_name}')" - self.cur.execute(query) - self.database.commit() - - def get_apparats_by_prof(self, prof_id): - query = f"SELECT * FROM semesterapparat WHERE prof_id={prof_id}" - return self.cur.execute(query).fetchall() - - def add_alias(self, alias_name, subject): - query = f"SELECT id FROM subjects WHERE name='{subject}'" - subject_id = self.cur.execute(query).fetchone()[0] - query = f"INSERT INTO aliases (name,subject_id) VALUES ('{alias_name}',{subject_id})" - self.cur.execute(query) - self.database.commit() - - def update_apparat(self, apparat_data: ApparatData): - data = apparat_data - query = "UPDATE semesterapparat SET name = ?, fach = ?, dauer = ?, prof_id = ? WHERE appnr = ?" - params = ( - data.appname, - data.app_fach, - data.dauerapp, - self.get_prof_id(data.profname), - data.appnr, - ) - print(query) - self.cur.execute(query, params) - self.database.commit() - - def delete_apparat(self, appnr: str, semester: str): - # update the deletion status to 1 and the deleted_state to semester for the given apparat - query = f"UPDATE semesterapparat SET deletion_status=1, deleted_date='{semester}' WHERE appnr='{appnr}'" - self.cur.execute(query) - self.database.commit() - - def get_book_id(self, bookdata: BookData, app_id: int, prof_id: int): - query = "SELECT id FROM media WHERE bookdata=? AND app_id=? AND prof_id=?" - params = (pickle.loads(bookdata), app_id, prof_id) - result = self.cur.execute(query, params).fetchone() - return result - - def set_availability(self, book_id, available): - query = "UPDATE media SET available=? WHERE id=?" - params = (available, book_id) - self.cur.execute(query, params) - self.database.commit() - - def get_latest_book_id(self): - query = "SELECT id FROM media ORDER BY id DESC LIMIT 1" - result = self.cur.execute(query).fetchone() - return result[0] - - def close(self): - self.database.close() - - def login(self, username, hashed_password) -> bool: - # check if the user and password exist in the database - # if yes, return True - # if no, return False - query = "SELECT salt FROM user WHERE username=?" - params = (username,) - result = self.cur.execute(query, params).fetchone() - - if result is None: - return False - salt = result[0] - print(salt) - query = "SELECT password FROM user WHERE username=?" - params = (str(username),) - result = self.cur.execute(query, params).fetchone() - password = result[0] - if password == f"{salt}{hashed_password}": - return True - else: - return False - - # admin stuff below here - def get_users(self): - query = "SELECT * FROM user" - return self.cur.execute(query).fetchall() - - def get_apparats(self) -> list[tuple]: - query = "SELECT * FROM semesterapparat" - return self.cur.execute(query).fetchall() - - def change_password(self, user, password): - saltq = "SELECT salt FROM user WHERE username=?" - params = (user,) - salt = self.cur.execute(saltq, params).fetchone()[0] - password = f"{salt}{password}" - query = "UPDATE user SET password=? WHERE username=?" - params = (password, user) - self.cur.execute(query, params) - self.database.commit() - - def get_role(self, username): - query = "SELECT role FROM user WHERE username=?" - params = (username,) - result = self.cur.execute(query, params).fetchone() - return result[0] - - def get_roles(self): - query = "SELECT role FROM user" - return self.cur.execute(query).fetchall() - - def create_user(self, username, password, role, salt): - """Create a user based on passed data. - - Args: - ---- - - username (str): Username to be used - - password (str): the salted password - - role (str): Role of the user - - salt (str): a random salt for the user - """ - query = "INSERT OR IGNORE INTO user (username, password, role, salt) VALUES (?, ?, ?, ?)" - params = (username, password, role, salt) - self.cur.execute(query, params) - self.database.commit() - - def delete_user(self, user): - query = "DELETE FROM user WHERE username=?" - params = (user,) - self.cur.execute(query, params) - self.database.commit() - - def get_faculty_members(self, name: str = None): - query = "SELECT titel, fname,lname,mail,telnr,fullname FROM prof" - if name: - query = query.replace(",fullname", "") - query += f" WHERE fullname='{name}'" - return self.cur.execute(query).fetchall() - - def update_faculty_member(self, data, oldlname, oldfname): - placeholders = ", ".join(f"{k} = :{k}" for k in data.keys()) - sql = f"UPDATE prof SET {placeholders} WHERE lname = :oldlname AND fname = :oldfname" - data["oldlname"] = oldlname - data["oldfname"] = oldfname - print(sql, data) - self.cur.execute(sql, data) - self.database.commit() - - def faculty_data(self, name): - query = f"SELECT * FROM prof WHERE fullname='{name}'" - result = self.cur.execute(query).fetchone() - return result - - def update_user(self, username, data: dict[str, str]): - - query = "UPDATE user SET " - for key, value in data.items(): - if key == "username": - continue - query += f"{key}='{value}'," - query = query[:-1] - query += " WHERE username=?" - params = (username,) - - self.cur.execute(query, params) - self.database.commit() - - def check_username(self, username): - query = "SELECT username FROM user WHERE username=?" - params = (username,) - result = self.cur.execute(query, params).fetchone() - if result is None: - return False - return True - - def get_apparats_name(self, app_id, prof_id): - query = f"SELECT name FROM semesterapparat WHERE appnr={app_id} AND prof_id={prof_id}" - # ic(query) - result = self.cur.execute(query).fetchone() - return result[0] - - def search_book(self, data: dict[str, str]) -> list[tuple[BookData, int]]: - query = "SELECT * FROM media " - result = self.database.execute(query).fetchall() - ret = [] - # get length of data dict - length = len(data) - mode = 0 - if length == 1: - if "signature" in data.keys(): - mode = 1 - elif "title" in data.keys(): - mode = 2 - elif length == 2: - mode = 3 - else: - return None - print(len(result)) - for res in result: - bookdata = pickle.loads(res[1]) - app_id = res[2] - prof_id = res[3] - # if signature and title present in dict: - # if signature present in dict: - if mode == 1: - if data["signature"] in bookdata.signature: - ret.append((bookdata, app_id, prof_id)) - # if title present in dict: - elif mode == 2: - if data["title"] in bookdata.title: - ret.append((bookdata, app_id, prof_id)) - elif mode == 3: - if ( - data["signature"] in bookdata.signature - and data["title"] in bookdata.title - ): - ret.append((bookdata, app_id, prof_id)) - return ret - - -if __name__ == "__main__": - db = Database() - print(db.login("kirchner", "loginpass")) diff --git a/src/logic/userInterface.py b/src/logic/userInterface.py deleted file mode 100644 index ef35d3d..0000000 --- a/src/logic/userInterface.py +++ /dev/null @@ -1,2453 +0,0 @@ -# encoding: utf-8 -import atexit -import os - -# import re -import sys -import tempfile -import time -import webbrowser -from pathlib import Path - -from icecream import ic -from natsort import natsorted -from omegaconf import OmegaConf -from PyQt6 import QtCore, QtGui, QtWidgets -from PyQt6.QtCore import QDate, QThread -from PyQt6.QtGui import QColor, QRegularExpressionValidator - -from src.backend.admin_console import AdminCommands -from src.backend.create_file import recreateElsaFile, recreateFile -from src.backend.database import Database -from src.backend.delete_temp_contents import delete_temp_contents -from src.backend.semester import generateSemesterByDate -from src.logic import AvailChecker, BookGrabber, c_sort -from src.logic.constants import APP_NRS, PROF_TITLES -from src.logic.csvparser import csv_to_list -from src.logic.dataclass import ApparatData, BookData -from src.logic.log import MyLogger -from src.logic.wordparser import elsa_word_to_csv, word_docx_to_csv -from src.ui import ( - App_Ext_Dialog, - DataGraph, - FilePicker, - Mail_Dialog, - StatusWidget, - Ui_Semesterapparat, - edit_bookdata_ui, - login_ui, - medienadder_ui, - parsed_titles_ui, - popus_confirm, - reminder_ui, - settings_ui, -) -from src.utils import Icon - -config = OmegaConf.load("config.yaml") - - -class Medien(medienadder_ui): - def __init__(self) -> None: - self.logger = MyLogger("Medien") - super().__init__() - self.mode = "" - self.data = [] - - def get_list_data(self) -> list: - signatures = self.listWidget.findItems("*", QtCore.Qt.MatchFlag.MatchWildcard) - return [signature.text() for signature in signatures] - - def get_mode(self) -> str: - return self.comboBox.currentText() - - -class MyComboBox(QtWidgets.QComboBox): - - def __init__(self, parent=None): - super().__init__(parent) - - -valid_input = (0, 0, 0, 0, 0, 0) - - -class MessageCalendar(QtWidgets.QCalendarWidget): - # Widget for MessageCalendar - def __init__(self, parent=None): - super().__init__(parent) - self.messages = {} # Dictionary to store dates with messages - - def setMessages(self, messages): - for message in messages: - print(message) - # Convert the date string to a QDate object - date = QDate.fromString(message["remind_at"], "yyyy-MM-dd") - # Store the message for the date - self.messages[date] = message["message"] - self.updateCells() - - def updateCells(self): - self.repaint() - - def paintCell(self, painter, rect, date): - super().paintCell(painter, rect, date) - - # Check if there is a message for the current date - if date in self.messages: - # If there is a message, color the cell background - painter.fillRect(rect, QColor("#a7e681")) - - def change_stylesheet_cell(self, date: QDate, color: str): - # change the stylesheet of a cell - self.setStyleSheet( - f"QCalendarWidget QTableView QTableCornerButton::section {{background-color: {color};}}" - ) - - -class Ui(Ui_Semesterapparat): - # use the Ui_MainWindow class from mainwindow.py - def __init__(self, MainWindow, username: str) -> None: - self.logger = MyLogger("Ui") - self.logger.log_info("Starting Semesterapparatsmanagement") - super().__init__() - self.active_user = username - self.setupUi(MainWindow) - self.MainWindow = MainWindow - # set the window title - MainWindow.setWindowTitle("Semesterapparatsmanagement") - MainWindow.setWindowIcon(Icon("logo").icon) - - self.db = Database() - # self.show() - # self.setWindowTitle("Semesterapparatsmanagement") - # self.setWindowIcon(QIcon("ui\icon.png")) - # self.sem_sommer.clicked.connect(self.buttonClicked) - self.btn_add_document.clicked.connect(self.add_document) - self.check_file.clicked.connect( - self.btn_check_file_threaded - ) # default: self.add_media_from_file) - self.create_new_app.clicked.connect(self.btn_create_new_apparat) - # self.load_app.clicked.connect(self.btn_load_apparat) - self.btn_apparat_save.clicked.connect(self.btn_save_apparat) - self.btn_apparat_apply.clicked.connect(self.update_apparat) - self.btn_open_document.clicked.connect(self.open_document) - self.add_medium.clicked.connect(self.btn_add_medium) - self.btn_copy_adis_command.clicked.connect(self.text_to_clipboard) - self.btn_reserve.clicked.connect(self.check_availability) - self.calendarWidget = MessageCalendar(self.frame_2) - self.calendarWidget.setGeometry(QtCore.QRect(0, 0, 291, 191)) - self.calendarWidget.setGridVisible(True) - self.calendarWidget.setVerticalHeaderFormat( - QtWidgets.QCalendarWidget.VerticalHeaderFormat.NoVerticalHeader - ) - self.calendarWidget.setObjectName("MessageCalendar") - self.calendarWidget.clicked.connect(self.open_reminder) - # assign a context menu to the calendar - - self.tableWidget_apparat_media.horizontalHeader().setSectionResizeMode( - QtWidgets.QHeaderView.ResizeMode.Stretch - ) - self.tableWidget_apparate.horizontalHeader().setSectionResizeMode( - QtWidgets.QHeaderView.ResizeMode.Stretch - ) - self.tableWidget_apparate.setSortingEnabled(True) - - # Actions - self.actionEinstellungen.triggered.connect(self.open_settings) - self.actionDokumentation.triggered.connect(self.open_documentation) - Icon("offAction", self.actionBeenden) - self.actionBeenden.triggered.connect(self.quit) - # set validators - self.sem_year.setText(str(QtCore.QDate.currentDate().year())) - self.prof_mail.setValidator( - QRegularExpressionValidator( - QtCore.QRegularExpression( - r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}" - ) - ) - ) - self.prof_tel_nr.setValidator(QtGui.QIntValidator()) - # set the validator for the app name, allow all letters and umlauts - self.app_fach.setValidator( - QtGui.QRegularExpressionValidator( - QtCore.QRegularExpression(r"[a-zA-Z\s\W]+") - ) - ) - - # allow only letters, numbers, whitespaces, symbols for the apparat name - self.app_name.setValidator( - QtGui.QRegularExpressionValidator( - QtCore.QRegularExpression(r"[a-zA-Z0-9\s\W]+") - ) - ) - self.tableWidget_apparate.addScrollBarWidget( - QtWidgets.QScrollBar(), QtCore.Qt.AlignmentFlag.AlignRight - ) - # connect contextmenuevent to tablewidget - - # enable automatic resizing of columns for book_search_result - self.book_search_result.horizontalHeader().setSectionResizeMode( - QtWidgets.QHeaderView.ResizeMode.Stretch - ) - self.tableWidget_apparate.doubleClicked.connect(self.load_app_data) - self.load_app.hide() - print(f"user:{self.active_user}") - userrole = self.db.getRole(self.active_user) - # hide admin interface when non-admin is logged in - if userrole == "admin": - self.tabWidget.setTabVisible(3, True) - else: - self.tabWidget.setTabVisible(3, False) - # self.update_app_media_list() - self.populate_prof_dropdown() - self.populate_appfach_dropdown() - # if the focus is changed from the prof name dropdown, set the prof data if the prof exists in the database, otherwise show a message - self.drpdwn_prof_name.currentIndexChanged.connect(self.set_prof_data) - self.cancel_active_selection.clicked.connect(self.btn_cancel_active_selection) - self.check_eternal_app.stateChanged.connect(self.set_state) - # validate inputs - self.prof_mail.textChanged.connect(self.validate_prof_mail) - self.drpdwn_prof_name.editTextChanged.connect(self.validate_prof_name) - self.prof_tel_nr.textChanged.connect(self.validate_prof_tel) - self.app_name.textChanged.connect(self.validate_app_name) - self.app_fach.currentTextChanged.connect(self.validate_app_fach) - self.sem_year.textChanged.connect(self.validate_semester) - self.check_eternal_app.stateChanged.connect(self.validate_semester) - self.chkbx_show_del_media.stateChanged.connect(self.update_app_media_list) - - self.progress_label.setText("Bitte warten...") - - # Set visibility/enabled state of certain entries - self.chkbx_show_del_media.setEnabled(False) - self.label_info.hide() - self.app_group_box.setEnabled(False) - self.line_2.hide() - self.progress_label.hide() - self.message_frame.hide() - self.btn_reserve.hide() - self.label_20.hide() - self.line_3.hide() - self.avail_status.hide() - self.chkbx_show_del_media.hide() - self.groupBox_2.hide() - self.groupBox.hide() - self.btn_del_select_apparats.setEnabled(False) - - self.check_deletable.stateChanged.connect(self.gridchange) - self.tableWidget.horizontalHeader().setSectionResizeMode( - QtWidgets.QHeaderView.ResizeMode.Stretch - ) - self.btn_del_select_apparats.clicked.connect(self.delete_selected_apparats) - self.statistics_table.doubleClicked.connect(self.display_detailed_data) - self.tabWidget_2.currentChanged.connect(self.tabW2_changed) - self.tabWidget.currentChanged.connect(self.tabW1_changed) - self.tableWidget.resizeColumnsToContents() - self.tableWidget.resizeRowsToContents() - - # create a thread, that continually checks the validity of the inputs - self.validate_thread = QThread() - self.validate_thread.started.connect(self.thread_check) - self.validate_thread.start() - - # get all current apparats and cache them in a list - self.apparats = self.get_apparats() - - self.old_apparats = self.apparats # create a clone to compare against later - # if length of apparats changes, update box_apparats - # if tab is changed, gather data needed - self.tabWidget.currentChanged.connect(self.tab_changed) - self.btn_search.clicked.connect(self.statistics) - - ### Admin interface ### - self.select_action_box.addItem("") - self.select_action_box.setCurrentText("") - self.hide_all() - self.select_action_box.currentTextChanged.connect(self.admin_action_changed) - self.edit_faculty_member_select_member.currentTextChanged.connect( - self.edit_faculty_member_set_data - ) - self.book_search.clicked.connect(self.search_book) - - # Context Menus - self.tableWidget_apparate.setContextMenuPolicy( - QtCore.Qt.ContextMenuPolicy.CustomContextMenu - ) - self.tableWidget_apparat_media.setContextMenuPolicy( - QtCore.Qt.ContextMenuPolicy.CustomContextMenu - ) - self.tableWidget_apparate.customContextMenuRequested.connect( - self.open_context_menu - ) - self.tableWidget_apparat_media.customContextMenuRequested.connect( - self.media_context_menu - ) - self.tableWidget.customContextMenuRequested.connect( - self.statistics_table_context_menu - ) - # statistic side buttons - self.btn_notify_for_deletion.clicked.connect(self.notify_for_deletion) - self.btn_notify_for_deletion.setEnabled(False) - # elsa buttons - self.elsa_add_new.clicked.connect(self.add_new_elsa) - self.elsa_cancel_create.clicked.connect(self.cancel_elsa_creation) - self.elsa_save.clicked.connect(self.save_elsa) - self.elsa_date_today.clicked.connect(self.generateTodayDateElsa) - self.active_semester.clicked.connect(self.addSemester) - Icon("semester", self.active_semester) - Icon("today", self.elsa_date_today) - self.elsa_table.doubleClicked.connect(self.open_elsa) - self.btn_add_document_elsa.clicked.connect(self.addDokumentElsa) - self.check_file_elsa.clicked.connect(self.parseDokumentElsa) - self.btn_open_document_elsa.clicked.connect(self.openDocumentElsa) - - # admin buttons - self.user_frame_addUser.clicked.connect(self.add_user) - self.pushButton.clicked.connect(self.delete_user) - self.update_user.clicked.connect(self.update_user_data) - self.update_faculty_member.clicked.connect(self.edit_faculty_member_action) - - # Create instances to be used by the threads in the application - self.bookGrabber = None - self.availChecker = None - self.mail_thread = None - self.autoGrabber = None - - def quit(self): - # delete all temporary files - delete_temp_contents() - sys.exit() - - def add_new_elsa(self): - self.create_frame_elsa.setEnabled(True) - self.elsa_cancel_create.setEnabled(True) - self.active_semester.setEnabled(True) - profs = self.db.getProfs() - for prof in profs: - self.elsa_prof.addItem(f"{prof[3]}, {prof[2]}") - self.elsa_prof.setCurrentText("") - self.elsa_date.setText("") - self.elsa_semester.setText("") - - def cancel_elsa_creation(self): - self.create_frame_elsa.setEnabled(False) - self.elsa_cancel_create.setEnabled(False) - self.elsa_prof.setCurrentText("") - self.elsa_date.setText("") - self.elsa_semester.setText("") - self.dokument_list_elsa.setRowCount(0) - self.table_elsa_list.setRowCount(0) - - def generateTodayDateElsa(self): - self.elsa_date.setText(QDate.currentDate().toString("dd.MM.yyyy")) - - def addSemester(self): - self.elsa_semester.setText(self.generateSemester(today=True)) - - def save_elsa(self): - if ( - self.elsa_prof.currentText() == "" - or self.elsa_semester.text() == "" - or self.elsa_date.text() == "" - ): - # warning message - self.confirm_popup("Bitte füllen Sie alle Felder aus") - - return - prof = self.elsa_prof.currentText() - semester = self.elsa_semester.text() - date = self.elsa_date.text() - - self.db.createElsaApparat(date, prof, semester) - self.cancel_elsa_creation() - - def insert_elsa_into_table(self, apparat): - self.elsa_table.insertRow(0) - date = apparat[1] - semester = apparat[2] - prof = apparat[3] - self.elsa_table.setItem(0, 0, QtWidgets.QTableWidgetItem(prof)) - self.elsa_table.setItem(0, 1, QtWidgets.QTableWidgetItem(date)) - self.elsa_table.setItem(0, 2, QtWidgets.QTableWidgetItem(semester)) - return (semester, 1) - - def open_elsa(self): - prof = self.elsa_table.item(self.elsa_table.currentRow(), 0).text() - date = self.elsa_table.item(self.elsa_table.currentRow(), 1).text() - semester = self.elsa_table.item(self.elsa_table.currentRow(), 2).text() - if self.elsa_prof.currentText() == prof: - self.logger.log_info("Same prof, stopping") - return - - self.dokument_list_elsa.setRowCount(0) - self.table_elsa_list.setRowCount(0) - self.elsa_cancel_create.setEnabled(True) - # get elsa apparats, iterate over them and find the one where all matches - elsa_apparats = self.db.getElsaApparats() - elsa_id = None - for apparat in elsa_apparats: - if apparat[1] == date and apparat[2] == semester and apparat[3] == prof: - elsa_id = apparat[0] - print(elsa_id) - break - if elsa_id is None: - return - self.elsa_date.setText(date) - self.elsa_semester.setText(semester) - self.elsa_prof.setCurrentText(prof) - documents = self.db.getElsaFiles(elsa_id) - for document in documents: - print(document) - self.dokument_list_elsa.insertRow(0) - self.dokument_list_elsa.setItem( - 0, 0, QtWidgets.QTableWidgetItem(document[0]) - ) - self.dokument_list_elsa.setItem( - 0, 1, QtWidgets.QTableWidgetItem(document[1]) - ) - self.dokument_list_elsa.setItem(0, 2, QtWidgets.QTableWidgetItem("❌")) - self.dokument_list_elsa.setItem( - 0, 3, QtWidgets.QTableWidgetItem("Database") - ) - scans = self.db.getElsaMedia(elsa_id) - if scans == []: - self.create_frame_elsa.setEnabled(True) - else: - for scan in scans: - self.table_elsa_list.insertRow(0) - self.table_elsa_list.setItem(0, 0, QtWidgets.QTableWidgetItem(scan[1])) - self.table_elsa_list.setItem(0, 1, QtWidgets.QTableWidgetItem(scan[2])) - self.table_elsa_list.setItem(0, 2, QtWidgets.QTableWidgetItem(scan[3])) - self.table_elsa_list.setItem(0, 3, QtWidgets.QTableWidgetItem(scan[4])) - - def addDokumentElsa(self): - print("Add document") - picker = FilePicker() - files = picker.pick_files() - datalist = [] - for file in files: - data = {} - print(file) - filename = file.split("/")[-1] - filetype = filename.split(".")[-1] - self.dokument_list_elsa.insertRow(0) - self.dokument_list_elsa.setItem(0, 0, QtWidgets.QTableWidgetItem(filename)) - self.dokument_list_elsa.setItem(0, 1, QtWidgets.QTableWidgetItem(filetype)) - self.dokument_list_elsa.setItem(0, 2, QtWidgets.QTableWidgetItem("*")) - self.dokument_list_elsa.setItem(0, 3, QtWidgets.QTableWidgetItem(file)) - # set tooltip of row 3 to the file path for each row - self.dokument_list_elsa.item(0, 3).setToolTip(file) - data["name"] = filename - data["path"] = file - data["type"] = filetype - datalist.append(data) - elsa_id = self.db.getElsaId( - self.elsa_prof.currentText(), - self.elsa_semester.text(), - self.elsa_date.text(), - ) - print(elsa_id) - if elsa_id is None: - # get length of elsa table - rows = self.elsa_table.rowCount() - elsa_id = rows + 1 - self.db.insertElsaFile(datalist, elsa_id) - self.elsa_save.click() - - def parseDokumentElsa(self): - if self.dokument_list_elsa.rowCount() == 0: - return - else: - # get the file path of the selected file based on it's row - row = self.dokument_list_elsa.currentRow() - file = self.dokument_list_elsa.item(row, 3).text() - print(file) - if file == "Database": - filename = self.dokument_list_elsa.item(row, 0).text() - filetype = self.dokument_list_elsa.item(row, 1).text() - - file = recreateElsaFile( - filename=filename, filetype=filetype, open=False - ) - print(file) - data = elsa_word_to_csv(file) - for row in data: - self.table_elsa_list.insertRow(0) - ic(row) - chapter_title = row[2] - book_title = row[4] - signature = row[7] - pages = row[6] - data = { - "chapter": chapter_title, - "title": book_title, - "signature": signature, - "pages": pages, - } - self.table_elsa_list.setItem( - 0, 0, QtWidgets.QTableWidgetItem(chapter_title) - ) - self.table_elsa_list.setItem( - 0, 1, QtWidgets.QTableWidgetItem(book_title) - ) - self.table_elsa_list.setItem( - 0, 2, QtWidgets.QTableWidgetItem(signature) - ) - self.table_elsa_list.setItem(0, 3, QtWidgets.QTableWidgetItem(pages)) - self.db.addElsaMedia( - data, - self.db.getElsaId( - self.elsa_prof.currentText(), - self.elsa_semester.text(), - self.elsa_date.text(), - ), - ) - - def openDocumentElsa(self): - # open the selected document - row = self.dokument_list_elsa.currentRow() - location = self.dokument_list_elsa.item(row, 3).text() - filetype = self.dokument_list_elsa.item(row, 1).text() - filename = self.dokument_list_elsa.item(row, 0).text() - if location == "Database": - recreateElsaFile(filename, filetype, open=True) - else: - os.system(f"{filename}") - - def notify_for_deletion(self): - # get all selected apparats - selected_apparats: list[dict] = [] - for i in range(self.tableWidget.rowCount()): - data = {} - if self.tableWidget.cellWidget(i, 0).isChecked(): - data["app_id"] = self.tableWidget.item(i, 2).text() - data["app_name"] = self.tableWidget.item(i, 1).text() - data["prof_name"] = self.tableWidget.item(i, 3).text() - - selected_apparats.append(data) - # delete all selected apparats - ic(selected_apparats) - dialogs = [] - for i in selected_apparats: - - app_id = i["app_id"] - app_name = i["app_name"] - prof_name = i["prof_name"] - prof_mail = self.db.getProfData(prof_name)[0] - self.mail_thread = Mail_Dialog( - app_id=app_id, - app_name=app_name, - prof_name=prof_name, - prof_mail=prof_mail, - app_subject="", - default_mail="Information bezüglich der Auflösung des Semesterapparates", - ) - dialogs.append(self.mail_thread) - for dialog in dialogs: - dialog.exec() - - self.btn_notify_for_deletion.setEnabled(False) - - def setStatisticTableSize(self): - print(self.statistics_table.size(), self.statistics_table.rowCount()) - size = self.statistics_table.size() - h = size.height() - w = size.width() - rows = self.statistics_table.rowCount() - rowheight = round(h / rows) - 5 - header_width = round(w / 3) - 5 - for i in range(3): - self.statistics_table.setColumnWidth(i, header_width) - for i in range(rows): - self.statistics_table.setRowHeight(i, rowheight) - - def get_apparats(self): - alist = self.db.getAllAparats(deleted=0) - alist = natsorted(alist, key=lambda x: x[4], reverse=True) - for apparat in alist: - self.insert_apparat_into_table(apparat) - - def populate_appfach_dropdown(self): - self.app_fach.clear() - self.app_fach.addItem("") - self.app_fach.setCurrentText("") - self.app_fach.addItems([subject[1] for subject in self.db.getSubjects()]) - - def open_documentation(self): - # open the documentation in the default browser - webbrowser.open("file:///" + os.path.abspath("docs/index.html")) - # documentation = documentationview.DocumentationViewer() - # documentation.show() - - def tabW1_changed(self): - if self.tabWidget.currentIndex() == 1: # Statistic - # self.tabWidget.setCurrentIndex(1) - self.tabWidget_2.setCurrentIndex(1) - self.tabWidget_2.setCurrentIndex(0) - self.populate_tab() - if self.tabWidget.currentIndex() == 0: # Apparate - # clear all entries from the table - self.tableWidget_apparate.setRowCount(0) - self.get_apparats() - if self.tabWidget.currentIndex() == 2: # Elsa - self.elsa_cancel_create.click() - try: - self.elsa_statistics.removeTab(1) - except: - pass - self.elsa_table.setRowCount(0) - elsa_apparats = self.db.getElsaApparats() - elsa_apparats = natsorted(elsa_apparats, key=lambda x: x[2], reverse=True) - graph_data = {"x": [], "y": []} # x = semester, y = number of apparats - - for apparat in elsa_apparats: - print(apparat) - data = self.insert_elsa_into_table(apparat) - semester = data[0] - number = data[1] - if semester not in graph_data["x"]: - graph_data["x"].append(semester) - graph_data["y"].append(number) - else: - index = graph_data["x"].index(semester) - graph_data["y"][index] += number - - generateMissing = True if len(graph_data["x"]) > 1 else False - graph = DataGraph( - "ELSA Apparate pro Semester", - graph_data, - generateMissing, - "Anzahl der Apparate", - ) - ic(graph_data) - self.elsa_statistics_table.setRowCount(0) - for i in range(len(graph_data["x"])): - self.elsa_statistics_table.insertRow(0) - self.elsa_statistics_table.setItem( - 0, 0, QtWidgets.QTableWidgetItem(graph_data["x"][i]) - ) - self.elsa_statistics_table.setItem( - 0, 1, QtWidgets.QTableWidgetItem(str(graph_data["y"][i])) - ) - self.elsa_statistics.addTab(graph, "Graph") - - def search_book(self): - self.book_search_result.setRowCount(0) - signature = self.seach_by_signature.text() - title = self.search_by_title.text() - params = { - "signature": signature if signature != "" else None, - "title": title if title != "" else None, - } - params = {key: value for key, value in params.items() if value is not None} - # ic(params) - retdata = self.db.searchBook(params) - if retdata is None: - return - for book in retdata: - - self.book_search_result.insertRow(0) - self.book_search_result.setItem( - 0, 0, QtWidgets.QTableWidgetItem(book[0].title) - ) - self.book_search_result.setItem( - 0, 1, QtWidgets.QTableWidgetItem(book[0].signature) - ) - print(book[1]) - self.book_search_result.setItem( - 0, - 2, - QtWidgets.QTableWidgetItem(self.db.getApparatName(book[1], book[2])), - ) - - def edit_faculty_member_set_data(self): - # get the selected member - name = self.edit_faculty_member_select_member.currentText() - fullname = name.replace(",", "") - print(fullname, name) - # get the data for the selected member - data = self.db.getProfByName(fullname) - # set the data - print(data) - if data is None: - self.edit_faculty_member_title.setText("") - self.faculty_member_old_telnr.setText("") - self.faculty_member_oldmail.setText("") - self.edit_faculty_member_title.setText("") - else: - self.edit_faculty_member_title.setText(data[1]) - self.faculty_member_old_telnr.setText(data[6]) - self.faculty_member_oldmail.setText(data[5]) - ( - self.edit_faculty_member_title.setText(data[1]) - if data[1] is not None - else self.edit_faculty_member_title.setText("") - ) - - # self.edit_faculty_member_name.setText(f"{data[3]} {data[2]}") - # self.edit_faculty_member_title.setCurrentText(data[1]) - # self.edit_faculty_member_mail.setText(data[4]) - # self.edit_faculty_member_tel.setText(data[5]) - # self.edit_faculty_member_adis_id.setText(str(data[0])) - # self.edit_faculty_member_id.setText(str(data[6])) - - def add_user(self): - username = self.user_create_frame_username.text() - password = self.user_create_frame_password.text() - role = self.user_frame_userrole.currentText() - if self.db.checkUsername(username): - # ic("username already exists") - # self.user_create_frame_error.setText("Der Nutzername ist bereits vergeben")#TODO: implement error message - return - userdata = AdminCommands().create_password(password) - self.db.createUser( - user=username, - password=f"{userdata[1]}{userdata[0]}", - salt=userdata[1], - role=role, - ) - self.user_create_frame_username.clear() - self.user_create_frame_password.clear() - self.user_frame_userrole.setCurrentText("") - self.admin_action_changed() - - def delete_user(self): - if self.user_delete_confirm.isChecked(): - username = self.user_delete_frame_user_select.currentText() - self.db.deleteUser(username) - self.user_delete_frame_user_select.removeItem( - self.user_delete_frame_user_select.currentIndex() - ) - self.user_delete_confirm.setChecked(False) - else: - self.user_delete_err_message.setText( - "Bitte bestätigen Sie die Löschung des Nutzers" - ) # TODO: implement error message - # ic("please confirm the deletion of the user") - - def update_user_data(self): - username = self.user_edit_frame_user_select.currentText() - password = ( - self.user_edit_frame_new_password.text() - if self.user_edit_frame_new_password.text() != "" - else None - ) - role = ( - self.user_edit_frame_role_select.currentText() - if self.user_edit_frame_role_select.currentText() != "" - else None - ) - - userdata = AdminCommands().create_password(password) - data = { - "password": f"{userdata[1]}{userdata[0]}", - "salt": userdata[1], - "role": role, - } - data = {key: value for key, value in data.items() if value is not None} - print(data) - self.db.updateUser(username=username, data=data) - self.user_edit_frame_user_select.setCurrentText("") - self.user_edit_frame_new_password.clear() - self.user_edit_frame_role_select.setCurrentText("") - - def edit_faculty_member_action(self): - def __gen_fullname(fname, lname, data): - if fname == "" and lname == "": - return data[3] - if fname == "" and lname != "": - return f"{lname} {data[1]}" - if fname != "" and lname == "": - return f"{data[2]} {fname}" - if fname != "" and lname != "": - return f"{lname} {fname}" - - # get the data and use new value if it is not none and does not mach the old value - if self.edit_faculty_member_select_member.currentText() == "": - return - olddata = self.db.getFacultyMember( - self.edit_faculty_member_select_member.currentText() - ) - ic(olddata) - data = olddata - oldlname = data[2] - oldfname = data[1] - # take data except first and last entry - - titel = ( - self.edit_faculty_member_new_title.currentText() - if self.edit_faculty_member_new_title.currentText() != "Kein Titel" - else None - ) - fname = ( - self.edit_faculty_member_new_surname.text() - if self.edit_faculty_member_new_surname.text() != "" - else self.edit_faculty_member_select_member.currentText() - .split(" ")[1] - .strip() - ) - lname = ( - self.user_faculty_member_new_name.text() - if self.user_faculty_member_new_name.text() != "" - else self.edit_faculty_member_select_member.currentText() - .split(" ")[0] - .strip() - ) - fullname = __gen_fullname(fname, lname, data) - telnr = self.user_faculty_member_new_telnr.text() - mail = self.user_faculty_member_new_mail.text() - new_data = { - "titel": titel, - "fname": fname, - "lname": lname, - "fullname": fullname, - "mail": mail, - "telnr": telnr, - } - new_data = {key: value for key, value in new_data.items() if value != ""} - self.db.updateFacultyMember(data=new_data, oldlname=oldlname, oldfname=oldfname) - self.add_faculty_member_data() - self.edit_faculty_member_new_title.setCurrentText("") - self.edit_faculty_member_new_surname.clear() - self.user_faculty_member_new_name.clear() - self.user_faculty_member_new_telnr.clear() - self.user_faculty_member_new_mail.clear() - - def hide_all(self): - self.user_create_frame.hide() - self.user_edit_frame.hide() - self.user_delete_frame.hide() - self.edit_faculty_member.hide() - - def admin_action_changed(self): - action = self.select_action_box.currentText() - roles = self.db.getRoles() - roles = [role[0] for role in roles] - # remove duplicates - roles = list(dict.fromkeys(roles)) - users = self.db.getUsers() - users = [user[2] for user in users] - users.remove(self.active_user) - if "admin" in users: - users.remove("admin") - if action == "Nutzer anlegen": - self.hide_all() - self.user_create_frame.show() - self.user_frame_userrole.addItems(roles) - elif action == "Nutzer aktualisieren": - self.hide_all() - self.user_edit_frame.show() - self.user_edit_frame_role_select.addItems(roles) - self.user_edit_frame_user_select.addItems(users) - elif action == "Nutzer löschen": - self.hide_all() - self.user_delete_frame.show() - self.user_delete_frame_user_select.addItems(users) - self.user_delete_frame_user_select.setCurrentText("") - self.user_delete_frame_user_select.addItems(users) - - elif action == "Lehrperson bearbeiten": - self.hide_all() - self.edit_faculty_member.show() - self.add_faculty_member_data() - self.edit_faculty_member_new_title.addItems(PROF_TITLES) - - else: - self.hide_all() - return - - def add_faculty_member_data(self): - faculty_members = self.db.getFacultyMembers() - names = [f"{member[5]}" for member in faculty_members] - self.edit_faculty_member_select_member.clear() - self.edit_faculty_member_select_member.addItems(names) - self.edit_faculty_member_select_member.addItem("") - self.edit_faculty_member_select_member.setCurrentText("") - - def tabW2_changed(self): - - if self.tabWidget_2.currentIndex() == 0: - self.stackedWidget_4.setCurrentIndex(0) - else: - self.stackedWidget_4.setCurrentIndex(1) - - def generateSemester(self, today=False): - """Generates the current semester. - - Args: - ----- - today (bool, optional): If True, the current semester is generated. Defaults to False. - Returns: - -------- - str: The current semester - """ - if today: - return generateSemesterByDate() - currentYear = self.sem_year.text() - currentYear = int(currentYear[-2:]) - - semester = ( - self.sem_sommer.text() - if self.sem_sommer.isChecked() - else self.sem_winter.text() - ) - if semester == "Sommer": - return "SoSe " + str(currentYear) - else: - return f"WiSe {currentYear}/{currentYear+1}" - - def display_detailed_data(self): - selected_semester = self.statistics_table.item( - self.statistics_table.currentRow(), 0 - ).text() - # get all apparats from the selected semester - data = self.db.getApparatsBySemester(selected_semester) - # replace keys for german names - # split to two lists - created = {"Erstellt": data["created"]} - deleted = {"Gelöscht": data["deleted"]} - created_status = StatusWidget(created, selected_semester) - deleted_status = StatusWidget(deleted, selected_semester) - created_status.setSizePolicy( - QtWidgets.QSizePolicy.Policy.Expanding, - QtWidgets.QSizePolicy.Policy.Expanding, - ) - deleted_status.setSizePolicy( - QtWidgets.QSizePolicy.Policy.Expanding, - QtWidgets.QSizePolicy.Policy.Expanding, - ) - - # add them to the gridLayout_4 - self.gridLayout_4.addWidget(created_status, 1, 0) - self.gridLayout_4.addWidget(deleted_status, 1, 1) - # self.setStatisticTableSize() - created_status.person_double_clicked.connect(self.open_apparat) - created_status.setToolTip("Doppelklick um den Semesterapparat zu öffnen") - deleted_status.setToolTip("Nur zur Übersicht") - # set deleted_status background to slightly gray - - def open_apparat(self, header: str, apparat: str, parent_depth: int): - print(header) - if header == "deleted" and parent_depth == 2: - # TODO: warn message here - print("warning") - if parent_depth == 1: - print(apparat) - # person selected case - open all apparats from this person in the tableWidget - self.tableWidget.setRowCount(0) - prof_id = self.db.getProfId(apparat.split("(")[0].strip()) - apparats = self.db.getApparatsByProf(prof_id) - for app in apparats: - print(app) - # set the items 0 = clickable checkbox, 1 = appname, 2 = profname, 3 = fach - # insert new row - self.tableWidget.insertRow(0) - self.tableWidget.setItem(0, 0, QtWidgets.QTableWidgetItem("")) - self.tableWidget.setItem(0, 1, QtWidgets.QTableWidgetItem(app[1])) - self.tableWidget.setItem(0, 2, QtWidgets.QTableWidgetItem(str(app[4]))) - self.tableWidget.setItem(0, 3, QtWidgets.QTableWidgetItem(app[2])) - self.tableWidget.setItem(0, 4, QtWidgets.QTableWidgetItem(app[3])) - # replace the 0 with a checkbox - checkbox = QtWidgets.QCheckBox() - checkbox.setChecked(False) - self.tableWidget.setCellWidget(0, 0, checkbox) - # if i[9] is 1, set the background of the row to red - if int(app[9]) == 1: - for j in range(5): - self.tableWidget.item(0, j).setBackground( - QtGui.QColor(235, 74, 71) - ) - # disable the checkbox - self.tableWidget.cellWidget(0, 0).setEnabled(False) - # set the tooltip - self.tableWidget.cellWidget(0, 0).setToolTip( - "Dieser Semesterapparat kann nicht gelöscht werden, da er bereits gelöscht wurde" - ) - elif parent_depth == 2: - # apparat selected case - open the apparat in the frame - self.load_app_data(apparat) - # change tab focus to tab 0 - self.tabWidget.setCurrentIndex(0) - return - - def gridchange(self): - if self.check_deletable.isChecked(): - self.box_semester.setEnabled(False) - self.box_semester.clear() - self.box_appnrs.setEnabled(False) - self.box_appnrs.clear() - self.box_person.setEnabled(False) - self.box_person.clear() - self.box_fach.setEnabled(False) - self.box_fach.clear() - self.box_erstellsemester.setEnabled(False) - self.box_erstellsemester.clear() - self.box_dauerapp.setEnabled(False) - self.box_dauerapp.clear() - else: - self.box_semester.setEnabled(True) - self.box_appnrs.setEnabled(True) - self.box_person.setEnabled(True) - self.box_fach.setEnabled(True) - self.box_erstellsemester.setEnabled(True) - self.box_dauerapp.setEnabled(True) - self.tab_changed() - - def populate_tab(self): - # add default values to the dropdowns - self.box_appnrs.clear() - self.box_appnrs.addItem("") - self.box_appnrs.setCurrentText("") - self.box_person.clear() - self.box_person.addItem("") - self.box_person.setCurrentText("") - self.box_fach.clear() - self.box_fach.addItem("") - self.box_fach.setCurrentText("") - self.box_erstellsemester.clear() - self.box_erstellsemester.addItem("") - self.box_erstellsemester.setCurrentText("") - self.box_semester.clear() - self.box_semester.addItem("") - self.box_semester.setCurrentText("") - self.box_dauerapp.clear() - self.box_dauerapp.addItems(["Ja", "Nein", ""]) - self.box_dauerapp.setCurrentText("") - # add custom vaules - appnrs = self.db.getUnavailableApparatNumbers() - apparats = natsorted(appnrs) - apparats = [str(apparat) for apparat in apparats] - self.box_appnrs.addItems(apparats) - persons = self.db.getProfs() - self.box_person.addItems([f"{person[3]}, {person[2]}" for person in persons]) - self.box_fach.addItems(subject[1] for subject in self.db.getSubjects()) - semester = self.db.getSemersters() - self.box_erstellsemester.addItems(semester) - self.statistics_table.setRowCount(0) - - # set data for table and graph in tab 2 tableWidget_3 - data = self.db.getApparatCountBySemester() - data = c_sort.custom_sort(data) - # self.tabWidget_3.clear() - self.tabWidget_3.removeTab(1) - self.statistics_table.setRowCount(len(data)) - for i in range(len(data)): - self.statistics_table.setItem(i, 0, QtWidgets.QTableWidgetItem(data[i][0])) - self.statistics_table.setItem( - i, 1, QtWidgets.QTableWidgetItem(str(data[i][1])) - ) - self.statistics_table.setItem( - i, 2, QtWidgets.QTableWidgetItem(str(data[i][2])) - ) - self.statistics_table.resizeColumnsToContents() - self.statistics_table.resizeRowsToContents() - # self.setStatisticTableSize() - - # get height of the table - # create graph - - graph_data = { - "x": [i[0] for i in data], - "y": {"Erstellt": [i[1] for i in data], "Gelöscht": [i[2] for i in data]}, - } - graph = DataGraph(title="Erstellte und gelöschte Apparate", data=graph_data) - - # place the graph into tabWidget_3 - self.tabWidget_3.addTab(graph, "Graph") - self.tabWidget_3.setCurrentIndex(0) - - def tab_changed(self): - curr_tab = self.tabWidget.currentIndex() - if curr_tab == 0: # create tab - return - elif curr_tab == 1: # statistics tab - self.populate_tab() - - def populate_dropdown(self, box, data): - box.clear() - box.addItem("") - box.setCurrentText("") - box.addItems(data) - - def delete_selected_apparats(self): - # get all selected apparats - selected_apparats = [] - selected_apparat_rows = [] - for i in range(self.tableWidget.rowCount()): - if self.tableWidget.cellWidget(i, 0).isChecked(): - selected_apparats.append(self.tableWidget.item(i, 2).text()) - selected_apparat_rows.append(i) - # delete all selected apparats - print(selected_apparats) - for apparat in selected_apparats: - self.db.deleteApparat(apparat, self.generateSemester(today=True)) - for row in selected_apparat_rows: - # set the background of the row to red - for j in range(5): - self.tableWidget.item(row, j).setBackground(QtGui.QColor(235, 74, 71)) - # refresh the table - self.populate_tab() - self.btn_del_select_apparats.setEnabled(False) - - def statistics(self): - """Generate the statistics based on the selected filters.""" - self.db_err_message.setText("") - self.btn_del_select_apparats.setEnabled(True) - self.btn_notify_for_deletion.setEnabled(True) - params = { - "appnr": ( - self.box_appnrs.currentText() - if self.box_appnrs.currentText() != "" - else None - ), - "prof_id": ( - self.db.getProfId(self.box_person.currentText()) - if self.box_person.currentText() != "" - else None - ), - "fach": ( - self.box_fach.currentText() - if self.box_fach.currentText() != "" - else None - ), - "erstellsemester": ( - self.box_erstellsemester.currentText() - if self.box_erstellsemester.currentText() != "" - else None - ), - "dauer": ( - "1" - if self.box_dauerapp.currentText() == "Ja" - else "0" if self.box_dauerapp.currentText() == "Nein" else None - ), - "endsemester": ( - self.box_semester.currentText() - if self.box_semester.currentText() != "" - else None - ), - "deletable": "True" if self.check_deletable.isChecked() else None, - "deletesemester": self.generateSemester(today=True), - } - params = { - key: value for key, value in params.items() if value is not None - } # remove empty lines to prevent errors - print(params) - params = { - key: value for key, value in params.items() if value != "Alle" - } # remove empty lines to prevent errors - print(params) - result = self.db.statistic_request(**params) - # add QTableWidgetItems to the table - self.tableWidget.setRowCount(len(result)) - if len(result) == 0: - self.db_err_message.setText("Keine Ergebnisse gefunden") - return - for i in range(len(result)): - print(result[i]) - # set the items 0 = clickable checkbox, 1 = appname, 2 = profname, 3 = fach - self.tableWidget.setItem(i, 0, QtWidgets.QTableWidgetItem("")) - self.tableWidget.setItem(i, 1, QtWidgets.QTableWidgetItem(result[i][1])) - self.tableWidget.setItem( - i, 2, QtWidgets.QTableWidgetItem(str(result[i][4])) - ) - self.tableWidget.setItem(i, 3, QtWidgets.QTableWidgetItem(result[i][2])) - self.tableWidget.setItem(i, 4, QtWidgets.QTableWidgetItem(result[i][3])) - # replace the 0 with a checkbox - checkbox = QtWidgets.QCheckBox() - checkbox.setChecked(False) - self.tableWidget.setCellWidget(i, 0, checkbox) - # if i[9] is 1, set the background of the row to red - if int(result[i][9]) == 1: - for j in range(5): - self.tableWidget.item(i, j).setBackground(QtGui.QColor(235, 74, 71)) - # disable the checkbox - self.tableWidget.cellWidget(i, 0).setEnabled(False) - # set the tooltip - self.tableWidget.cellWidget(i, 0).setToolTip( - "Dieser Semesterapparat kann nicht gelöscht werden, da er bereits gelöscht wurde" - ) - - def populate_frame(self, appdata: ApparatData): - # populate the frame with the data from the database - # ic(appdata) - self.drpdwn_app_nr.setCurrentText(str(appdata.appnr)) - self.prof_title.setText(appdata.prof_title) - prof_name = appdata.profname.split(" ") - if len(prof_name) > 2: - fname = " ".join(prof_name[1:]) - lname = prof_name[0] - prof_name = f"{lname}, {fname}" - else: - prof_name = ", ".join(prof_name) - self.drpdwn_prof_name.setCurrentText(prof_name) - self.prof_mail.setText(appdata.prof_mail) - self.prof_tel_nr.setText(appdata.prof_tel) - self.app_name.setText(appdata.appname) - print("changing dropdown app_fach from '' to ", appdata.app_fach) - self.app_fach.setCurrentText(appdata.app_fach) - print("changed dropdown app_fach to ", self.app_fach.currentText()) - if appdata.semester is not None: - self.sem_sommer.setChecked( - True if appdata.semester.split(" ")[0] == "SoSe" else False - ) - self.sem_winter.setChecked( - True if appdata.semester.split(" ")[0] == "WiSe" else False - ) - self.sem_year.setText(appdata.semester.split(" ")[1]) - else: - self.sem_sommer.setChecked( - True if appdata.erstellsemester.split(" ")[0] == "SoSe" else False - ) - self.sem_winter.setChecked( - True if appdata.erstellsemester.split(" ")[0] == "WiSe" else False - ) - self.sem_year.setText(appdata.erstellsemester.split(" ")[1]) - self.check_eternal_app.setChecked(appdata.dauerapp) - self.prof_id_adis.setText(str(appdata.prof_adis_id)) - self.apparat_id_adis.setText(str(appdata.apparat_adis_id)) - self.app_group_box.setEnabled(True) - self.groupBox_2.hide() - self.groupBox.hide() - self.validateLoadedData() - - def validateLoadedData(self): - self.validate_prof_mail() - self.validate_prof_name() - self.validate_prof_tel() - self.validate_app_name() - self.validate_app_fach() - self.validate_semester() - - def update_apparat(self): - appdata = ApparatData() - appdata.app_fach = self.app_fach.currentText() - appdata.appname = self.app_name.text() - appdata.appnr = self.active_apparat - appdata.dauerapp = self.check_eternal_app.isChecked() - appdata.prof_mail = self.prof_mail.text() - appdata.prof_tel = self.prof_tel_nr.text() - appdata.prof_title = self.prof_title.text() - appdata.profname = self.drpdwn_prof_name.currentText() - appdata.semester = ( - self.sem_sommer.text() + " " + self.sem_year.text() - if self.sem_sommer.isChecked() - else self.sem_winter.text() + " " + self.sem_year.text() - ) - appdata.prof_adis_id = self.prof_id_adis.text() - self.add_files() - appdata.apparat_adis_id = self.apparat_id_adis.text() - - self.db.updateApparat(appdata) - - self.update_app_media_list() - self.cancel_active_selection.click() - self.check_send_mail.show() - self.chkbx_show_del_media.show() - self.cancel_active_selection.setEnabled(False) - - def confirm_popup(self, message: str): - popup = popus_confirm() - popup.setupUi() - popup.textEdit.setReadOnly(True) - popup.textEdit.setText(message) - - popup.exec() - return popup.result() - - def threads(self): - while True: - self.validate_prof_mail() - self.validate_prof_name() - self.validate_prof_tel() - self.validate_app_name() - self.validate_app_fach() - self.validate_semester() - - def thread_check(self): - self.prof_mail.textChanged.connect(self.validate_prof_mail) - self.drpdwn_prof_name.editTextChanged.connect(self.validate_prof_name) - self.prof_tel_nr.textChanged.connect(self.validate_prof_tel) - self.app_name.textChanged.connect(self.validate_app_name) - self.app_fach.currentTextChanged.connect(self.validate_app_fach) - self.sem_year.textChanged.connect(self.validate_semester) - self.check_eternal_app.stateChanged.connect(self.validate_semester) - - def validate_prof_name(self): - if self.app_group_box.isEnabled(): - if "," in self.drpdwn_prof_name.currentText(): - self.drpdwn_prof_name.setStyleSheet("border: 1px solid green;") - self.profname_mand.setText("") - self.change_state(0, 1) - else: - self.drpdwn_prof_name.setStyleSheet("border: 1px solid red;") - self.profname_mand.setText("*") - self.change_state(0, 0) - else: - pass - # self.drpdwn_prof_name.setStyleSheet("border: 1px solid black;") - - def validate_prof_mail(self): - if self.app_group_box.isEnabled(): - if self.prof_mail.hasAcceptableInput(): - self.prof_mail.setStyleSheet("border: 1px solid green;") - self.mail_mand.setText("") - self.change_state(1, 1) - else: - self.prof_mail.setStyleSheet("border: 1px solid red;") - self.mail_mand.setText("*") - self.change_state(1, 0) - else: - self.prof_mail.setStyleSheet("border: 1px solid black;") - - def validate_prof_tel(self): - if self.app_group_box.isEnabled(): - if self.prof_tel_nr.text() != "": - self.prof_tel_nr.setStyleSheet("border: 1px solid green;") - self.telnr_mand.setText("") - self.change_state(2, 1) - else: - self.prof_tel_nr.setStyleSheet("border: 1px solid red;") - self.telnr_mand.setText("*") - self.change_state(2, 0) - - def validate_app_name(self): - if self.app_group_box.isEnabled(): - if self.app_name.hasAcceptableInput(): - self.app_name.setStyleSheet("border: 1px solid green;") - self.appname_mand.setText("") - self.change_state(3, 1) - else: - self.app_name.setStyleSheet("border: 1px solid red;") - self.appname_mand.setText("*") - self.change_state(3, 0) - - def validate_app_fach(self): - if self.app_group_box.isEnabled(): - if self.app_fach.currentText() != "": - self.app_fach.setStyleSheet("border: 1px solid green;") - self.fach_mand.setText("") - self.change_state(4, 1) - else: - self.app_fach.setStyleSheet("border: 1px solid red;") - self.fach_mand.setText("*") - self.change_state(4, 0) - - def validate_semester(self): - if self.app_group_box.isEnabled(): - if ( - (self.sem_sommer.isChecked() or self.sem_winter.isChecked()) - and self.sem_year.hasAcceptableInput() - ) or self.check_eternal_app.isChecked(): - self._mand.setText("") - self.change_state(5, 1) - self.check_eternal_app.setEnabled(True) - else: - self._mand.setText("*") - self.change_state(5, 0) - self.check_eternal_app.setEnabled(False) - - def change_state(self, index, state): - global valid_input - valid_input = list(valid_input) - valid_input[index] = state - valid_input = tuple(valid_input) - - def set_state(self): - # set state of semester and year - if self.check_eternal_app.isChecked(): - self.sem_winter.setEnabled(False) - self.sem_sommer.setEnabled(False) - self.sem_year.setEnabled(False) - else: - self.sem_winter.setEnabled(True) - self.sem_sommer.setEnabled(True) - self.sem_year.setEnabled(True) - - def validate_fields(self): - return all(valid_input) - - # def req_fields_filled(self): - # # check if all required fields are filled - # values = [] - # for item in self.app_group_box.findChildren(QtWidgets.QLabel): - # # if label name contains "req" and the text is empty, return false - # if "mand" in item.objectName() and item.text() == "": - # values.append(True) - # elif "mand" in item.objectName() and item.text() != "": - # values.append(False) - # return all(values) - # - def buttonClicked(self): - print("Button clicked") - - def set_prof_data(self): - if "," not in self.drpdwn_prof_name.currentText(): - self.prof_mail.clear() - self.prof_tel_nr.clear() - return - selected_prof = self.drpdwn_prof_name.currentText() - data = self.db.getProfData(selected_prof) - # ic(data) - prof_title = data[2] - if prof_title == "None": - prof_title = "Kein Titel" - self.prof_title.setText(prof_title) - self.prof_tel_nr.setText(data[1]) - self.prof_mail.setText(data[0]) - - def get_index_of_value(self, table_widget, value): - for i in range(table_widget.rowCount()): - for j in range(table_widget.columnCount()): - if ( - table_widget.item(i, j) is not None - and table_widget.item(i, j).text() == value - ): - return i, j - return None - - def load_app_data(self, app_id=None): - self.cancel_active_selection.setEnabled(True) - if isinstance(app_id, str): - # double click the tableWidget_apparate row with the given app_id - row, column = self.get_index_of_value(self.tableWidget_apparate, app_id) - # set the current index to the row - self.tableWidget_apparate.setCurrentCell(row, 0) - self.check_send_mail.hide() - app_pos = self.tableWidget_apparate.currentIndex() - appnr = self.tableWidget_apparate.item(app_pos.row(), 0).text() - appname = self.tableWidget_apparate.item(app_pos.row(), 1).text() - self.sem_sommer.setEnabled(False) - self.sem_winter.setEnabled(False) - self.sem_year.setEnabled(False) - self.dokument_list.setRowCount(0) - self.chkbx_show_del_media.setEnabled(True) - appdata = self.db.getApparatData(appnr, appname) - self.populate_frame(appdata) - self.btn_apparat_save.hide() - self.btn_reserve.show() - self.chkbx_show_del_media.show() - self.groupBox_2.show() - self.groupBox.show() - - self.drpdwn_app_nr.setDisabled(True) - self.update_app_media_list() - self.update_documemt_list() - - def update_documemt_list(self): - app_id = self.active_apparat - prof_id = self.db.getProfId( - self.drpdwn_prof_name.currentText().replace(", ", " ") - ) - files = self.db.getFiles(app_id, prof_id) - for file in files: - self.dokument_list.insertRow(0) - self.dokument_list.setItem(0, 0, QtWidgets.QTableWidgetItem(file[0])) - self.dokument_list.setItem(0, 1, QtWidgets.QTableWidgetItem(file[1])) - self.dokument_list.setItem(0, 2, QtWidgets.QTableWidgetItem("")) - self.dokument_list.setItem(0, 3, QtWidgets.QTableWidgetItem("Database")) - - # def btn_load_apparat(self): - # # remove all rows from table - # #get all - # self.tableWidget_apparate.sortItems(0, QtCore.Qt.SortOrder.AscendingOrder) - # self.app_group_box.setDisabled(True) - # for child in self.app_group_box.findChildren(QtWidgets.QLineEdit): - # child.clear() - - def btn_create_new_apparat(self): - self.groupBox.show() - self.groupBox_2.show() - global valid_input - # *create a new apparat - self.btn_apparat_save.show() if self.btn_apparat_save.isHidden() else None - # clear dokumemt_list - self.dokument_list.setRowCount(0) - self.cancel_active_selection.setEnabled(True) - self.app_group_box.setEnabled(True) - - self.sem_year.setEnabled(True) - self.sem_sommer.setEnabled(True) - self.sem_winter.setEnabled(True) - self.chkbx_show_del_media.setEnabled(True) - self.drpdwn_app_nr.setEnabled(True) - self.app_fach.setEnabled(True) - - if self.tableWidget_apparat_media.rowCount() > 0: - self.tableWidget_apparat_media.setRowCount(0) - # clear all fields - for item in self.app_group_box.findChildren(QtWidgets.QLineEdit): - item.clear() - self.drpdwn_app_nr.clear() - self.prof_title.clear() - self.drpdwn_prof_name.clear() - # set drop down menu for apparat numbers to only available numbers - self.drpdwn_app_nr.addItems( - [str(i) for i in APP_NRS if i not in self.db.getUnavailableApparatNumbers()] - ) - - valid_input = (0, 0, 0, 0, 0, 0) - self.populate_prof_dropdown() - # self.horizontalLayout_6.show() - # increase size by 300px - - def update_progress_label(self, curr, total): - text = f"Medium {curr}/{total}" - self.logger.log_info(text) - self.progress_label.setText(text) - # update tableWidget_apparat_media - self.update_app_media_list() - - def hide_progress_label(self): - self.logger.log_info("Finished adding media, hiding progress label") - self.progress_label.hide() - self.progress_label.setText("Bitte warten...") - self.line_2.hide() - self.label_info.hide() - - def btn_add_medium(self): - if not self.app_group_box.isEnabled(): - self.confirm_popup("Bitte erst einen Apparat auswählen!") - return - - def __new_ui(): - dialog = QtWidgets.QDialog() - frame = Medien() - frame.setupUi(dialog) - dialog.exec() - mode = frame.get_mode() - data = frame.get_list_data() - return mode, data, dialog.result() - - self.progress_label.show() - self.line_2.show() - self.label_info.show() - self.progress_label.setText("Bitte warten...") - mode, data, result = __new_ui() - if result == 1: - if data == []: - self.confirm_popup("Bitte mindestens ein Medium hinzufügen!") - - app_id = self.active_apparat - prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) - # check if app_id is in database - if not self.db.checkApparatExists(app_id): - # create apparat - self.btn_save_apparat() - # create a thread that updates the progress label after each medium - self.bookGrabber = BookGrabber( - mode=mode, app_id=app_id, prof_id=prof_id, data=data - ) - # grabber.mode = mode - # grabber.data = data - # grabber.app_id = app_id - # grabber.prof_id = prof_id - self.bookGrabber.finished.connect(self.bookGrabber.deleteLater) - self.bookGrabber.finished.connect(self.hide_progress_label) - self.bookGrabber.finished.connect(self.update_app_media_list) - self.bookGrabber.updateSignal.connect(self.update_progress_label) - - self.bookGrabber.start() - # run grabber.deletelater - - # for book in data: - # # self.progress_label.setText(f"Medium {ct}/{len(data)}") - # # update the progress label - # self.logger.log_info(f"trying to add BookData for Signature {book}") - # webdata = WebRequest().get_ppn(book).get_data() - # bd: BookData = BibTextTransformer(mode).get_data(webdata).return_data() - # bd.signature = book - # self.db.addBookToDatabase(bookdata=bd, app_id=app_id, prof_id=prof_id) - - # get all media list books - - else: - return - - def check_availability(self): - # self.threadeds.clear() - - def _update_progress(current, all_titles): - self.avail_status.setText("{}/{}".format(current, all_titles)) - - def _hide_progress_label(): - self.label_20.hide() - self.avail_status.hide() - self.avail_status.setText("0/0") - - # get all links from the table - # if no index in tableWidget_apparat_media is selected, check all - if self.tableWidget_apparat_media.currentRow() == -1: - links = [ - self.tableWidget_apparat_media.item(i, 1).text() - for i in range(self.tableWidget_apparat_media.rowCount()) - if self.tableWidget_apparat_media.item(i, 4).text() == "❌" - or self.tableWidget_apparat_media.item(i, 4).text() == "" - ] - else: - links = [ - self.tableWidget_apparat_media.item( - self.tableWidget_apparat_media.currentRow(), 1 - ).text() - ] - items = len(links) - self.label_20.setText("Verfügbarkeit wird geprüft, bitte warten...") - self.label_20.show() - self.avail_status.setText(f"0/{items}") - self.avail_status.show() - books = self.db.getBooks( - self.active_apparat, - self.db.getProfId(self.drpdwn_prof_name.currentText()), - deleted=0, - ) - - # thread = QThread() - appnumber = self.active_apparat - print(links) - self.availChecker = AvailChecker(links, appnumber, books=books) - # availcheck.moveToThread(thread) - # availcheck.finished.connect(thread.quit) - self.availChecker.finished.connect(self.availChecker.deleteLater) - self.availChecker.finished.connect(self.update_app_media_list) - self.availChecker.updateProgress.connect(_update_progress) - self.availChecker.finished.connect(_hide_progress_label) - self.availChecker.start() - # kill availcheck after completion - - # self.threadeds.append(thread) - # self.grabbers.append(availcheck) - - def btn_cancel_active_selection(self): - # clear the rows of the table - self.tableWidget_apparat_media.setRowCount(0) - self.dokument_list.setRowCount(0) - self.app_group_box.setEnabled(False) - self.app_fach.setCurrentText("") - self.chkbx_show_del_media.hide() - self.check_send_mail.hide() - self.btn_reserve.hide() - self.groupBox_2.hide() - self.groupBox.hide() - self.check_eternal_app.setEnabled(False) - # set all radio buttons to unchecked - self.sem_sommer.setChecked(False) - self.sem_winter.setChecked(False) - - for child in self.app_group_box.findChildren(QtWidgets.QLineEdit): - child.clear() - - def update_app_media_list(self): - deleted = 0 if not self.chkbx_show_del_media.isChecked() else 1 - app_id = self.active_apparat - prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) - books: list[dict[int, BookData, int]] = self.db.getBooks( - app_id, prof_id, deleted - ) - - # print(books) - # take the dataclass from the tuple - # booklist:list[BookData]=[book[0] for book in books] - self.tableWidget_apparat_media.setRowCount(0) - for book in books: - book["id"] - book_data = book["bookdata"] - availability = book["available"] - # bd = BookData().from_string(book) - # print(bd, type(bd)) - # create a new row below the last one - self.tableWidget_apparat_media.insertRow( - self.tableWidget_apparat_media.rowCount() - ) - # #set the data - self.tableWidget_apparat_media.setItem( - self.tableWidget_apparat_media.rowCount() - 1, - 0, - QtWidgets.QTableWidgetItem(book_data.title), - ) - self.tableWidget_apparat_media.setItem( - self.tableWidget_apparat_media.rowCount() - 1, - 1, - QtWidgets.QTableWidgetItem(book_data.signature), - ) - self.tableWidget_apparat_media.setItem( - self.tableWidget_apparat_media.rowCount() - 1, - 2, - QtWidgets.QTableWidgetItem(book_data.edition), - ) - self.tableWidget_apparat_media.setItem( - self.tableWidget_apparat_media.rowCount() - 1, - 3, - QtWidgets.QTableWidgetItem(book_data.author), - ) - self.tableWidget_apparat_media.setItem( - self.tableWidget_apparat_media.rowCount() - 1, - 6, - QtWidgets.QTableWidgetItem(book_data.link), - ) - if availability == 1: - # display green checkmark at column 4 in the row - self.tableWidget_apparat_media.setItem( - self.tableWidget_apparat_media.rowCount() - 1, - 4, - QtWidgets.QTableWidgetItem("✅"), - ) - # set tooltip - self.tableWidget_apparat_media.item( - self.tableWidget_apparat_media.rowCount() - 1, 4 - ).setToolTip("Das Medium wurde im Apparat gefunden") - else: - self.tableWidget_apparat_media.setItem( - self.tableWidget_apparat_media.rowCount() - 1, - 4, - QtWidgets.QTableWidgetItem("❌"), - ) - self.tableWidget_apparat_media.item( - self.tableWidget_apparat_media.rowCount() - 1, 4 - ).setToolTip("Das Medium wurde nicht im Apparat gefunden") - - # make table link clickable - self.tableWidget_apparat_media.itemClicked.connect(self.open_link) - - def open_link(self, item): - def __openLink(link): - if link == "": - return - if "http" not in link: - link = "https://" + link - - webbrowser.open(link) - - # get the name of the column - columnname = self.tableWidget_apparat_media.horizontalHeaderItem( - item.column() - ).text() - if columnname == "Link": - __openLink(item.text()) - else: - pass - - def text_to_clipboard(self): - app_id = self.active_apparat - text = f"SQ=select distinct akkey from aupr01 where aufst='{app_id}' union select pr_isn from aks4pd where akruf ='{app_id}'" - clipboard = QtWidgets.QApplication.clipboard() - clipboard.setText(text) - - def populate_prof_dropdown(self): - profs = self.db.getProfs() - # add empty entry to dropdown and set it as current - self.drpdwn_prof_name.addItem("Kein Name") - for prof in profs: - self.drpdwn_prof_name.addItem(f"{prof[3]}, {prof[2]}") - - def add_document(self): - print("Add document") - picker = FilePicker() - files = picker.pick_files() - - for file in files: - print(file) - filename = file.split("/")[-1] - filetype = filename.split(".")[-1] - self.dokument_list.insertRow(0) - self.dokument_list.setItem(0, 0, QtWidgets.QTableWidgetItem(filename)) - self.dokument_list.setItem(0, 1, QtWidgets.QTableWidgetItem(filetype)) - self.dokument_list.setItem(0, 2, QtWidgets.QTableWidgetItem("*")) - self.dokument_list.setItem(0, 3, QtWidgets.QTableWidgetItem(file)) - # set tooltip of row 3 to the file path for each row - self.dokument_list.item(0, 3).setToolTip(file) - - # self.db.insert_file(files, self.active_apparat, self.db.get_prof_id(self.drpdwn_prof_name.currentText())) - - def open_document(self): - _selected_doc_name = "" - _selected_doc_filetype = "" - try: - _selected_doc_name = self.dokument_list.item( - self.dokument_list.currentRow(), 0 - ).text() - _selected_doc_location = self.dokument_list.item( - self.dokument_list.currentRow(), 3 - ).text() - _selected_doc_filetype = self.dokument_list.item( - self.dokument_list.currentRow(), 1 - ).text() - except AttributeError: - self.confirm_popup("Bitte erst ein Dokument auswählen!") - return - if not _selected_doc_location == "Database": - path = Path(_selected_doc_location) - path: Path = path + "/" + _selected_doc_name - if os.getenv("OS") == "Windows_NT": - path = path.resolve() - os.startfile(path) - else: - path = path.resolve() - os.system(f"open {path}") - else: - recreateFile( - _selected_doc_name, self.active_apparat, filetype=_selected_doc_filetype - ) - # # if ~ in path, replace it with the home directory - # if "~" in path: - # path = path.replace("~", str(Path.home())) - # path = Path(path) - - def add_media_from_file(self): - def __open_dialog(signatures): - dialog = QtWidgets.QDialog() - frame = parsed_titles_ui() - frame.setupUi(dialog) - dialog.show() - frame.signatures = signatures - frame.populate_table() - frame.progressBar.setMaximum(len(signatures)) - frame.progressBar.setValue(0) - frame.progressBar.show() - frame.count.setText(str(len(signatures))) - frame.toolButton.click() - data = frame.return_data() - print(data) - # if no data was returned, return - - return data - # get - - # if files are in the table, and are selected, check for books in the file - if self.dokument_list.rowCount() == 0: - return - else: - # if file is selected, check for books in the file - if self.dokument_list.currentRow() != -1: - print("File selected") - file = self.dokument_list.item( - self.dokument_list.currentRow(), 3 - ).text() - - file_type = self.dokument_list.item( - self.dokument_list.currentRow(), 1 - ).text() - file_location = self.dokument_list.item( - self.dokument_list.currentRow(), 3 - ).text() - file_name = self.dokument_list.item( - self.dokument_list.currentRow(), 0 - ).text() - if file_location == "Database": - # create a temporaty file to use, delete it after use - temp_file = tempfile.NamedTemporaryFile( - delete=False, suffix="." + file_type - ) - temp_file.write( - self.db.getBlob(file_name, int(self.active_apparat)) - ) - temp_file.close() - file = temp_file.name - print(file) - if file_type == "pdf": - # Todo: implement parser here - self.confirm_popup("PDF Dateien werden nochnicht unterstützt!") - return - if file_type == "csv": - signatures = csv_to_list(file) - data = __open_dialog(signatures) - # get the app_id and prof_id - app_id = self.active_apparat - prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) - # add the data to the database - for book in data: - if type(book) != BookData: - continue - self.db.addBookToDatabase( - bookdata=book, app_id=app_id, prof_id=prof_id - ) - if file_type == "docx": - data = word_docx_to_csv(file) - signatures = [ - i - for i in data["Standnummer"].values - if i != "\u2002\u2002\u2002\u2002\u2002" - ] - data = __open_dialog(signatures) - # if no data was returned, return - if data == []: - return - # get the app_id and prof_id - app_id = self.active_apparat - prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) - # add the data to the database - for book in data: - if type(book) != BookData: - continue - self.db.addBookToDatabase( - bookdata=book, app_id=app_id, prof_id=prof_id - ) - self.update_app_media_list() - print(len(signatures)) - - def btn_check_file_threaded(self): - print("Checking file") - # get active app_id and prof_id - self.tableWidget_apparate.setEnabled(False) - self.tableWidget_apparate.setToolTip( - "Bitte warten, bis alle Medien hinzugefügt wurden" - ) - app_id = self.active_apparat - prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) - # check if apparat in database - - # if app_id not in database, create apparat - if not self.db.checkApparatExistsById(app_id): - # create apparat - print("Creating apparat") - self.btn_save_apparat() - if self.dokument_list.rowCount() == 0: - print("No file selected") - self.tableWidget_apparate.setEnabled(True) - self.tableWidget_apparate.setToolTip("") - return - else: - # if file is selected, check for books in the file - print("File selected") - file = self.dokument_list.item(self.dokument_list.currentRow(), 3).text() - - file_type = self.dokument_list.item( - self.dokument_list.currentRow(), 1 - ).text() - file_location = self.dokument_list.item( - self.dokument_list.currentRow(), 3 - ).text() - file_name = self.dokument_list.item( - self.dokument_list.currentRow(), 0 - ).text() - if file_location == "Database": - file = recreateFile(file_name, app_id, file_type, open=False) - else: - self.add_files() - if file_type == "pdf": - # Todo: implement parser here - self.confirm_popup("PDF Dateien werden noch nicht unterstützt!") - return - if file_type == "csv": - signatures = csv_to_list(file) - # add the data to the database - if file_type == "docx": - data = word_docx_to_csv(file) - signatures = [ - i - for i in data["Standnummer"].values - if i != "\u2002\u2002\u2002\u2002\u2002" - ] - - signatures = [i for i in signatures if i != ""] - # ic(signatures) - print("starting thread") - self.autoGrabber = BookGrabber( - mode="ARRAY", app_id=app_id, prof_id=prof_id, data=signatures - ) - # grabber.mode = "ARRAY" - # grabber.data = signatures - # grabber.app_id = app_id - # grabber.prof_id = prof_id - # grabber.moveToThread(thread) - self.label_info.show() - self.progress_label.show() - self.line_2.show() - # grabber.finished.connect(thread.quit) - self.autoGrabber.finished.connect(self.autoGrabber.deleteLater) - self.autoGrabber.finished.connect(self.hide_progress_label) - self.autoGrabber.finished.connect(self.update_app_media_list) - self.autoGrabber.finished.connect(self.unlock_apparate) - self.autoGrabber.updateSignal.connect(self.update_progress_label) - # worker.finished.connect(worker.deleteLater) - - self.autoGrabber.start() - # self.thread = thread - # kill grabber after completion - # self.grabbers.append(grabber) - - def unlock_apparate(self): - self.tableWidget_apparate.setEnabled(True) - self.tableWidget_apparate.setToolTip("") - - def btn_save_apparat(self): - def __clear_fields(): - self.drpdwn_app_nr.clear() - self.prof_title.clear() - self.drpdwn_prof_name.clearMask() - self.app_name.clear() - self.prof_mail.clear() - self.prof_tel_nr.clear() - self.app_fach.setCurrentText("") - self.app_name.clear() - self.sem_year.clear() - self.dokument_list.setRowCount(0) - self.sem_winter.setChecked(False) - self.sem_sommer.setChecked(False) - self.check_eternal_app.setChecked(False) - self.prof_id_adis.clear() - self.prof_id_adis.clear() - self.apparat_id_adis.clear() - self.drpdwn_prof_name.clear() - self.tableWidget_apparat_media.setRowCount(0) - self.app_group_box.setEnabled(False) - self.groupBox_2.hide() - self.groupBox.hide() - self.check_send_mail.setChecked(False) - self.cancel_active_selection.setEnabled(False) - - if not self.validate_fields(): - self.confirm_popup("Bitte alle Pflichtfelder ausfüllen!") - return - appd = ApparatData() - appd.appnr = self.active_apparat - appd.prof_title = ( - None if self.prof_title.text() == "" else self.prof_title.text() - ) - appd.profname = self.drpdwn_prof_name.currentText() - appd.appname = self.app_name.text() - appd.semester = self.generateSemester() - appd.dauerapp = 1 if self.check_eternal_app.isChecked() else 0 - appd.prof_tel = self.prof_tel_nr.text() - appd.prof_mail = self.prof_mail.text() - appd.app_fach = self.app_fach.currentText() - appd.erstellsemester = self.generateSemester() - appd.deleted = 0 - appd.prof_adis_id = self.prof_id_adis.text() - appd.apparat_adis_id = self.apparat_id_adis.text() - if self.dokument_list.rowCount() > 0: - self.add_files() - if not self.validate_fields(): - pass - self.db.createApparat(appd) - # if self.dokument_list.rowCount() > 0: - self.add_files() - appdata = self.db.getAllAparats() - # merge self.appdata and appdata, remove duplicates - self.apparats = list(set(self.apparats + appdata)) - self.apparats = natsorted(self.apparats, key=lambda x: x[4], reverse=True) - self.update_apparat_list() - - # self.btn_load_apparat() - - if self.check_send_mail.isChecked(): - self.contact_prof( - apparat=appd.appnr, mail="Information zum Semesterapparat" - ) - __clear_fields() - - def send_mail_preview(self): - pass - - @property - def active_apparat(self): - return self.drpdwn_app_nr.currentText() - - def add_files(self): - files = [] - for i in range(self.dokument_list.rowCount()): - files.append( - { - "name": self.dokument_list.item(i, 0).text(), - "type": self.dokument_list.item(i, 1).text(), - "date": self.dokument_list.item(i, 2).text(), - "path": self.dokument_list.item(i, 3).text(), - } - ) - self.dokument_list.item(i, 2).setText("") - self.db.insertFile( - files, - self.active_apparat, - self.db.getProfId(self.drpdwn_prof_name.currentText()), - ) - - def update_apparat_list(self): - # get a list of new apparats based on self.apparats and self.old_apparats - new_apparats = [ - apparat for apparat in self.apparats if apparat not in self.old_apparats - ] - print(new_apparats) - # insert the new apparats into the table - for apparat in new_apparats: - self.insert_apparat_into_table(apparat) - # sort the table by apparat number using natural sorting - self.tableWidget_apparate.sortItems(0, QtCore.Qt.SortOrder.AscendingOrder) - self.old_apparats = self.apparats - - def insert_apparat_into_table(self, apparat): - # ic(apparat) - def __dauer_check(apparat): - return "Ja" if apparat[7] == 1 else "Nein" - - self.tableWidget_apparate.insertRow(0) - self.tableWidget_apparate.setItem( - 0, 0, QtWidgets.QTableWidgetItem(str(apparat[4])) - ) - self.tableWidget_apparate.setItem( - 0, 1, QtWidgets.QTableWidgetItem(str(apparat[1])) - ) - self.tableWidget_apparate.setItem( - 0, - 2, - QtWidgets.QTableWidgetItem( - self.db.getProfNameById(apparat[2], add_title=False) - ), - ) - self.tableWidget_apparate.setItem( - 0, - 3, - QtWidgets.QTableWidgetItem( - str(apparat[8]) if apparat[8] is not None else apparat[5] - ), - ) - self.tableWidget_apparate.setItem( - 0, 4, QtWidgets.QTableWidgetItem(__dauer_check(apparat)) - ) - self.tableWidget_apparate.setItem( - 0, 5, QtWidgets.QTableWidgetItem(str(apparat[13])) - ) - self.logger.log_info(f"Inserted apparat {apparat[4]}") - - def open_context_menu(self, position): - menu = QtWidgets.QMenu() - extend_action = menu.addAction("Verlängern") - contact_action = menu.addAction("Kontaktieren") - delete_action = menu.addAction("Löschen") - remind_action = menu.addAction("Erinnerung") - menu.addAction(extend_action) - menu.addActions([contact_action, delete_action, remind_action]) - extend_action.triggered.connect(self.extend_apparat) - delete_action.triggered.connect(self.delete_apparat) - contact_action.triggered.connect(self.contact_prof) - remind_action.triggered.connect(self.reminder) - menu.exec(self.tableWidget_apparate.mapToGlobal(position)) - - def statistics_table_context_menu(self, position): - menu = QtWidgets.QMenu() - restore_action = menu.addAction("Wiederherstellen") - menu.addAction(restore_action) - restore_action.triggered.connect(self.restore_apparat) - menu.exec(self.tableWidget.mapToGlobal(position)) - - def restore_apparat(self): - row = self.tableWidget.currentRow() - apparat = self.tableWidget.item(row, 1).text() - ic(apparat) - apparat_id = self.db.getApparatId(apparat) - # restore the apparat - self.db.restoreApparat(apparat_id) - # update the table - self.reload() - - def reminder(self): - self.logger.log_info("Opening reminder dialog") - dialog = QtWidgets.QDialog() - reminder = reminder_ui() - reminder.setupUi(dialog) - dialog.exec() - if dialog.result() == QtWidgets.QDialog.DialogCode.Accepted: - data = reminder.return_message() - print(data) - self.db.addMessage( - data, - self.active_user, - self.active_apparat if self.active_apparat != "" else None, - ) - self.calendarWidget.setMessages([data]) - self.calendarWidget.updateCells() - # self.db.update_bookdata(data, book_id) - # self.db.update_bookdata(data) - self.logger.log_info("Commited message to database") - # self.update_app_media_list() - - def get_reminders(self): - messages = self.db.getMessages() - self.logger.log_info(f"Got {len(messages)} messages from database") - self.calendarWidget.setMessages(messages) - self.calendarWidget.updateCells() - - def open_reminder(self): - def __update_message(): - message_select = self.spin_select_message.value() - try: - message = messages[message_select - 1] - except IndexError: - self.message_frame.hide() - return - self.message_box.setText(message["message"]) - appnr = message["appnr"] - appnr = "/" if appnr is None else str(appnr) - self.line_app_info.setText(appnr) - - def __delete_message(): - message = messages[self.spin_select_message.value() - 1] - self.db.deleteMessage(message["id"]) - # remove message from list - messages.remove(message) - self.spin_select_message.setMaximum(len(messages)) - self.spin_select_message.setValue(1) - self.label_total_day_messages.setText("/ " + str(len(messages))) - # - - selected_date = self.calendarWidget.selectedDate().toString("yyyy-MM-dd") - print(selected_date) - messages = self.db.getMessages(selected_date) - if messages == []: - self.message_frame.hide() if self.message_frame.isVisible() else None - return - print(messages) - message_count = len(messages) - self.spin_select_message.setMaximum(message_count) - self.message_frame.show() - self.label_total_day_messages.setText("/ " + str(message_count)) - # if there is only one message, disable the spinbox - ( - self.spin_select_message.setEnabled(False) - if message_count == 1 - else self.spin_select_message.setEnabled(True) - ) - self.spin_select_message.setValue(1) - # load the first message - __update_message() - # on valuechanged, update the message - self.spin_select_message.valueChanged.connect(__update_message) - self.btn_delete_message.clicked.connect(__delete_message) - - def open_settings(self): - settings = settings_ui(self.active_user) - settings.exec() - if settings.result() == QtWidgets.QDialog.DialogCode.Accepted: - data = settings.return_data() - print(data) - OmegaConf.save(data, "config.yaml") - # re-load the config - OmegaConf.load("config.yaml") - self.logger.log_info("Saved settings to config.yaml") - self.reload() - - def reload(self): - # create a new connection to the database, refresh table data and replace the old connection - self.db = Database() - self.apparats = self.db.getAllAparats(deleted=0) - self.apparats = natsorted(self.apparats, key=lambda x: x[4], reverse=True) - self.tableWidget_apparate.setRowCount(0) - for apparat in self.apparats: - self.insert_apparat_into_table(apparat) - - def media_context_menu(self, position): - menu = QtWidgets.QMenu() - delete_action = menu.addAction("Löschen") - edit_action = menu.addAction("Bearbeiten") - menu.addAction(delete_action) - menu.addAction(edit_action) - delete_action.triggered.connect(self.delete_medium) - edit_action.triggered.connect(self.edit_medium) - menu.exec(self.tableWidget_apparat_media.mapToGlobal(position)) - - def edit_medium(self): - book = self.tableWidget_apparat_media.item( - self.tableWidget_apparat_media.currentRow(), 1 - ).text() - data = self.db.getBookBasedOnSignature( - app_id=self.active_apparat, - signature=book, - prof_id=self.db.getProfId(self.drpdwn_prof_name.currentText()), - ) - book_id = self.db.getBookIdBasedOnSignature( - self.active_apparat, - self.db.getProfId(self.drpdwn_prof_name.currentText()), - book, - ) - widget = QtWidgets.QDialog() - bookedit = edit_bookdata_ui() - bookedit.setupUi(widget) - # change title of dialog - widget.setWindowTitle("Metadaten") - bookedit.populate_fields(data) - widget.exec() - if widget.result() == QtWidgets.QDialog.DialogCode.Accepted: - data = bookedit.get_data() - print(data) - self.db.updateBookdata(data, book_id) - # self.db.update_bookdata(data) - print("accepted") - self.update_app_media_list() - else: - return - pass - - def delete_medium(self): - selected_apparat_id = self.tableWidget_apparate.item( - self.tableWidget_apparate.currentRow(), 0 - ).text() - # check how many rows are selected - selected_rows = self.tableWidget_apparat_media.selectionModel().selectedRows() - if len(selected_rows) == 1: - signature = self.tableWidget_apparat_media.item( - self.tableWidget_apparat_media.currentRow(), 1 - ).text() - book_id = self.db.getBookIdBasedOnSignature( - selected_apparat_id, - prof_id=self.db.getProfId(self.drpdwn_prof_name.currentText()), - signature=signature, - ) - message = f'Soll das Medium "{self.tableWidget_apparat_media.item(self.tableWidget_apparat_media.currentRow(),0).text()}" wirklich gelöscht werden?' - state = self.confirm_popup(message) - print(state) - if state == 1: - self.db.deleteBook(book_id) - self.update_app_media_list() - self.contact_prof(mail="deleted") - pass - else: - # get all selected rows - ranges = self.tableWidget_apparat_media.selectedRanges() - rows = [] - for r in ranges: - for row in range(r.topRow(), r.bottomRow() + 1): - rows.append(row) - print(rows) - message = f"Sollen die {len(rows)} Medien wirklich gelöscht werden?" - state = self.confirm_popup(message) - if state == 1: - for _ in rows: - signature = self.tableWidget_apparat_media.item(_, 1).text() - book_id = self.db.getBookIdBasedOnSignature( - selected_apparat_id, - prof_id=self.db.getProfId(self.drpdwn_prof_name.currentText()), - signature=signature, - ) - self.db.deleteBook(book_id) - self.update_app_media_list() - - def extend_apparat(self): - framework = QtWidgets.QDialog() - frame = App_Ext_Dialog() - frame.setupUi(framework) - frame.sem_year.setText(str(QtCore.QDate.currentDate().year())) - framework.exec() - # return data from dialog if ok is pressed - if framework.result() == QtWidgets.QDialog.DialogCode.Accepted: - data = frame.get_data() - print(data) - # return data - selected_apparat_id = self.tableWidget_apparate.item( - self.tableWidget_apparate.currentRow(), 0 - ).text() - print(selected_apparat_id) - # update self.apparats with the new data - # find matching apparat - # for apparat in self.apparats: - # if apparat[4] == int(selected_apparat_id): - # apparat[5]=data["semester"] - # apparat[7]=data["dauerapp"] - # break - # self.old_apparats = self.apparats - self.db.setNewSemesterDate( - selected_apparat_id, data["semester"], dauerapp=data["dauerapp"] - ) - else: - return - - def contact_prof(self, apparat=None, mail=""): - print(apparat) - if self.active_apparat == "": - if apparat is False: - self.confirm_popup("Bitte erst einen Apparat auswählen!") - return - else: - # TODO: stuff - pass - else: - if apparat: - active_apparat_id = apparat - else: - active_apparat_id = self.drpdwn_app_nr.currentText() - print(active_apparat_id) - profname = self.drpdwn_prof_name.currentText().replace(",", "").split(" ") - profname = f"{profname[1]} {profname[0]}" - prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) - pmail = self.db.getSpecificProfData(prof_id, ["mail"]) - # create a new thread to show the mail interface and send the mail - self.mail_thread = Mail_Dialog( - app_id=active_apparat_id, - prof_name=profname, - prof_mail=pmail, - app_name=self.app_name.text(), - app_subject=self.app_fach.currentText(), - ) - self.mail_thread.show() - - def delete_apparat(self): - selected_apparat_id = self.tableWidget_apparate.item( - self.tableWidget_apparate.currentRow(), 0 - ).text() - message = f"Soll der Apparat {selected_apparat_id} wirklich gelöscht werden?" - state = self.confirm_popup(message) - print(state) - if state == 1: - self.db.deleteApparat(selected_apparat_id, generateSemesterByDate()) - # delete the corresponding entry from self.apparats - for apparat in self.apparats: - if apparat[4] == int(selected_apparat_id): - self.apparats.remove(apparat) - break - self.old_apparats = self.apparats - print(self.apparats) - # remove the row from the table - self.tableWidget_apparate.removeRow(self.tableWidget_apparate.currentRow()) - # send mail to prof - self.contact_prof(mail="deleted", apparat=selected_apparat_id) - # if state==QtWidgets.QDialog.DialogCode.Accepted: - # self.db.delete_apparat(selected_apparat_id) - # pass - - -def launch_gui(): - print("trying to login") - print("checking if database available") - # database = config.database.path + config.database.name - # print(database) - # if not os.path.exists(database): - # print("Database not found, creating new database") - # db = Database() - # db.create_database() - app = QtWidgets.QApplication(sys.argv) - login_dialog = QtWidgets.QDialog() - ui = login_ui() - ui.setupUi(login_dialog) - login_dialog.exec() # This will block until the dialog is closed - - if ui.lresult == 1: - # if login is successful, open main window - # show login dialog - print(ui.lusername) - MainWindow = QtWidgets.QMainWindow() - aui = Ui(MainWindow, username=ui.lusername) - - print(aui.active_user) - MainWindow.show() - # atexit.register() - atexit.register(delete_temp_contents) - atexit.register(aui.validate_thread.quit) - sys.exit(app.exec()) - - elif ui.lresult == 0: - warning_dialog = QtWidgets.QMessageBox() - warning_dialog.setIcon(QtWidgets.QMessageBox.Icon.Warning) - warning_dialog.setText("Invalid username or password. Please try again.") - warning_dialog.setWindowTitle("Login Failed") - warning_dialog.exec() - elif ui.lresult == 2: - # TODO: implement admin functionality here - """change passwords for apparats, change passwords for users, list users, create and delete users etc""" - # open a console window - # console = "" - print("admin") - atexit.register(delete_temp_contents) - - -if __name__ == "__main__": - print("This is the main window") - # app = QtWidgets.QApplication(sys.argv) - # window = MainWindow() - # app.exec() - # open login screen - launch_gui() diff --git a/src/ui/Ui_plotdata.py b/src/ui/Ui_plotdata.py deleted file mode 100644 index e0ee261..0000000 --- a/src/ui/Ui_plotdata.py +++ /dev/null @@ -1,47 +0,0 @@ -# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\plotdata.ui' -# -# Created by: PyQt6 UI code generator 6.3.1 -# -# WARNING: Any manual changes made to this file will be lost when pyuic6 is -# run again. Do not edit this file unless you know what you are doing. - - -from PyQt6 import QtCore, QtWidgets - - -class Ui_MainWindow(object): - def setupUi(self, MainWindow): - MainWindow.setObjectName("MainWindow") - MainWindow.resize(640, 480) - self.centralwidget = QtWidgets.QWidget(MainWindow) - self.centralwidget.setObjectName("centralwidget") - self.graphicsView = QtWidgets.QGraphicsView(self.centralwidget) - self.graphicsView.setGeometry(QtCore.QRect(330, 10, 256, 192)) - self.graphicsView.setObjectName("graphicsView") - self.widget = QtWidgets.QWidget(self.centralwidget) - self.widget.setGeometry(QtCore.QRect(10, 0, 251, 271)) - self.widget.setObjectName("widget") - self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget) - self.stackedWidget.setGeometry(QtCore.QRect(300, 220, 291, 201)) - self.stackedWidget.setObjectName("stackedWidget") - self.page = QtWidgets.QWidget() - self.page.setObjectName("page") - self.stackedWidget.addWidget(self.page) - self.page_2 = QtWidgets.QWidget() - self.page_2.setObjectName("page_2") - self.stackedWidget.addWidget(self.page_2) - MainWindow.setCentralWidget(self.centralwidget) - self.menubar = QtWidgets.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 640, 21)) - self.menubar.setObjectName("menubar") - MainWindow.setMenuBar(self.menubar) - self.statusbar = QtWidgets.QStatusBar(MainWindow) - self.statusbar.setObjectName("statusbar") - MainWindow.setStatusBar(self.statusbar) - - self.retranslateUi(MainWindow) - QtCore.QMetaObject.connectSlotsByName(MainWindow) - - def retranslateUi(self, MainWindow): - _translate = QtCore.QCoreApplication.translate - MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) diff --git a/src/ui/Ui_semesterapparat_ui.ts b/src/ui/Ui_semesterapparat_ui.ts deleted file mode 100644 index 69b16be..0000000 --- a/src/ui/Ui_semesterapparat_ui.ts +++ /dev/null @@ -1,232 +0,0 @@ - - - - - MainWindow - - - MainWindow - - - - - Load the Semesterapparate from the database - - - - - App. aufrufen - - - - - neu. App anlegen - - - - - Auswahl abbrechen - - - - - AppNr - - - - - App Name - - - - - Professor - - - - - gültig bis - - - - - Dauerapparat - - - - - KontoNr - - - - - Apparatsdetails - - - - - Dokumentname - - - - - Dateityp - - - - - Neu? - - - - - path - - - - - Apparatsname - - - - - Winter - - - - - Prof. Name - - - - - Sommer - - - - - Prof. Titel - - - - - Semester - - - - - 2023 - - - - - Apparatsnummer - - - - - Speichern - - - - - Aktualisieren - - - - - Mail - - - - - Tel - - - - - Fach - - - - - * - - - - - Dokument hinzufügen - - - - - Dokument öffnen - - - - - Buchtitel - - - - - Signatur - - - - - Auflage - - - - - Autor - - - - - Link - - - - - Medienliste - - - - - gel. Medien anzeigen - - - - - Medien hinzufügen - - - - - Tab 1 - - - - - Tab 2 - - - - - Datei - - - - - Einstellungen - - - - - Beenden - - - - diff --git a/src/ui/Ui_setupwizard.py b/src/ui/Ui_setupwizard.py deleted file mode 100644 index d2e4689..0000000 --- a/src/ui/Ui_setupwizard.py +++ /dev/null @@ -1,86 +0,0 @@ -# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\setupwizard.ui' -# -# Created by: PyQt6 UI code generator 6.3.1 -# -# WARNING: Any manual changes made to this file will be lost when pyuic6 is -# run again. Do not edit this file unless you know what you are doing. - - -from PyQt6 import QtCore, QtGui, QtWidgets - - -class Ui_Wizard(object): - def setupUi(self, Wizard): - Wizard.setObjectName("Wizard") - Wizard.resize(640, 480) - Wizard.setMaximumSize(QtCore.QSize(640, 480)) - self.wizardPage1 = QtWidgets.QWizardPage() - self.wizardPage1.setObjectName("wizardPage1") - self.textBrowser = QtWidgets.QTextBrowser(self.wizardPage1) - self.textBrowser.setGeometry(QtCore.QRect(200, 10, 256, 192)) - self.textBrowser.setObjectName("textBrowser") - Wizard.addPage(self.wizardPage1) - self.wizardPage2 = QtWidgets.QWizardPage() - self.wizardPage2.setObjectName("wizardPage2") - self.label = QtWidgets.QLabel(self.wizardPage2) - self.label.setGeometry(QtCore.QRect(10, 0, 131, 16)) - self.label.setObjectName("label") - self.label_2 = QtWidgets.QLabel(self.wizardPage2) - self.label_2.setGeometry(QtCore.QRect(10, 40, 71, 16)) - self.label_2.setObjectName("label_2") - self.default_apps = QtWidgets.QCheckBox(self.wizardPage2) - self.default_apps.setGeometry(QtCore.QRect(100, 40, 70, 17)) - self.default_apps.setText("") - self.default_apps.setObjectName("default_apps") - self.label_3 = QtWidgets.QLabel(self.wizardPage2) - self.label_3.setGeometry(QtCore.QRect(10, 70, 61, 16)) - self.label_3.setObjectName("label_3") - self.custom_applications = QtWidgets.QFrame(self.wizardPage2) - self.custom_applications.setGeometry(QtCore.QRect(280, 10, 331, 361)) - self.custom_applications.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) - self.custom_applications.setFrameShadow(QtWidgets.QFrame.Shadow.Raised) - self.custom_applications.setObjectName("custom_applications") - self.save_path = QtWidgets.QLineEdit(self.wizardPage2) - self.save_path.setGeometry(QtCore.QRect(80, 70, 113, 20)) - self.save_path.setObjectName("save_path") - self.btn_save_path_select = QtWidgets.QToolButton(self.wizardPage2) - self.btn_save_path_select.setGeometry(QtCore.QRect(200, 70, 25, 19)) - self.btn_save_path_select.setObjectName("btn_save_path_select") - Wizard.addPage(self.wizardPage2) - - self.retranslateUi(Wizard) - QtCore.QMetaObject.connectSlotsByName(Wizard) - - def retranslateUi(self, Wizard): - _translate = QtCore.QCoreApplication.translate - Wizard.setWindowTitle(_translate("Wizard", "Wizard")) - self.textBrowser.setHtml( - _translate( - "Wizard", - '\n' - '\n" - '

Setup für das Semesterapparatsprogram.

\n' - '


\n' - '

Im Anschluss werden wichtige Einstellungen gesetzt, welche auch im späteren Verlauf verändert werden können.

\n' - '


', - ) - ) - self.label.setText(_translate("Wizard", "Grundeinstellungen")) - self.label_2.setToolTip( - _translate( - "Wizard", - "Opens the downloaded files with the default applications set in the OS", - ) - ) - self.label_2.setText(_translate("Wizard", "Default Apps")) - self.label_3.setToolTip( - _translate( - "Wizard", - "Path where the downloaded files are stored. Defaults to ~/Desktop/SemapFiles", - ) - ) - self.label_3.setText(_translate("Wizard", "Save Path")) - self.save_path.setPlaceholderText(_translate("Wizard", "~/Desktop/SemapFiles")) - self.btn_save_path_select.setText(_translate("Wizard", "...")) diff --git a/src/ui/dialogs/apparat_extend_ui.py b/src/ui/dialogs/apparat_extend_ui.py deleted file mode 100644 index 0df8e88..0000000 --- a/src/ui/dialogs/apparat_extend_ui.py +++ /dev/null @@ -1,130 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################ -## Form generated from reading UI file 'apparat_extend.ui' -## -## Created by: Qt User Interface Compiler version 6.4.0 -## -## WARNING! All changes made in this file will be lost when recompiling UI file! -################################################################################ - -from PyQt6.QtCore import ( - QCoreApplication, - QDate, - QDateTime, - QLocale, - QMetaObject, - QObject, - QPoint, - QRect, - QSize, - Qt, - QTime, - QUrl, -) -from PyQt6.QtGui import ( - QBrush, - QColor, - QConicalGradient, - QCursor, - QFont, - QFontDatabase, - QGradient, - QIcon, - QImage, - QKeySequence, - QLinearGradient, - QPainter, - QPalette, - QPixmap, - QRadialGradient, - QTransform, -) -from PyQt6.QtWidgets import ( - QAbstractButton, - QApplication, - QCheckBox, - QDialog, - QDialogButtonBox, - QFrame, - QLabel, - QLineEdit, - QRadioButton, - QSizePolicy, - QWidget, -) - - -class Ui_Dialog(object): - def setupUi(self, Dialog): - if not Dialog.objectName(): - Dialog.setObjectName("Dialog") - Dialog.resize(388, 103) - sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(Dialog.sizePolicy().hasHeightForWidth()) - Dialog.setSizePolicy(sizePolicy) - Dialog.setMinimumSize(QSize(388, 103)) - Dialog.setMaximumSize(QSize(388, 103)) - self.buttonBox = QDialogButtonBox(Dialog) - self.buttonBox.setObjectName("buttonBox") - self.buttonBox.setGeometry(QRect(290, 30, 81, 241)) - self.buttonBox.setOrientation(Qt.Vertical) - self.buttonBox.setStandardButtons( - QDialogButtonBox.Abort | QDialogButtonBox.Save - ) - self.label = QLabel(Dialog) - self.label.setObjectName("label") - self.label.setGeometry(QRect(10, 0, 281, 31)) - font = QFont() - font.setPointSize(10) - self.label.setFont(font) - self.frame = QFrame(Dialog) - self.frame.setObjectName("frame") - self.frame.setGeometry(QRect(10, 30, 241, 41)) - self.frame.setFrameShape(QFrame.StyledPanel) - self.frame.setFrameShadow(QFrame.Raised) - self.line = QFrame(self.frame) - self.line.setObjectName("line") - self.line.setGeometry(QRect(120, 0, 3, 61)) - self.line.setFrameShape(QFrame.VLine) - self.line.setFrameShadow(QFrame.Sunken) - self.rad_sommer = QRadioButton(self.frame) - self.rad_sommer.setObjectName("rad_sommer") - self.rad_sommer.setGeometry(QRect(10, 10, 82, 21)) - self.rad_winter = QRadioButton(self.frame) - self.rad_winter.setObjectName("rad_winter") - self.rad_winter.setGeometry(QRect(140, 10, 82, 21)) - self.sem_year = QLineEdit(Dialog) - self.sem_year.setObjectName("sem_year") - self.sem_year.setGeometry(QRect(10, 70, 121, 20)) - self.checkBox = QCheckBox(Dialog) - self.checkBox.setObjectName("checkBox") - self.checkBox.setGeometry(QRect(150, 70, 91, 21)) - - self.retranslateUi(Dialog) - self.buttonBox.accepted.connect(Dialog.accept) - self.buttonBox.rejected.connect(Dialog.reject) - - QMetaObject.connectSlotsByName(Dialog) - - # setupUi - - def retranslateUi(self, Dialog): - Dialog.setWindowTitle(QCoreApplication.translate("Dialog", "Dialog", None)) - self.label.setText( - QCoreApplication.translate( - "Dialog", "Bis wann soll der Apparat verl\u00e4ngert werden?", None - ) - ) - self.rad_sommer.setText(QCoreApplication.translate("Dialog", "Sommer", None)) - self.rad_winter.setText(QCoreApplication.translate("Dialog", "Winter", None)) - self.sem_year.setPlaceholderText( - QCoreApplication.translate("Dialog", "2023", None) - ) - self.checkBox.setText( - QCoreApplication.translate("Dialog", "Dauerapparat", None) - ) - - # retranslateUi diff --git a/src/ui/dialogs/confirm_extend_ui.py b/src/ui/dialogs/confirm_extend_ui.py deleted file mode 100644 index 8c6287b..0000000 --- a/src/ui/dialogs/confirm_extend_ui.py +++ /dev/null @@ -1,81 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################ -## Form generated from reading UI file 'confirm_extend.ui' -## -## Created by: Qt User Interface Compiler version 6.4.0 -## -## WARNING! All changes made in this file will be lost when recompiling UI file! -################################################################################ - -from PyQt6.QtCore import ( - QCoreApplication, - QDate, - QDateTime, - QLocale, - QMetaObject, - QObject, - QPoint, - QRect, - QSize, - Qt, - QTime, - QUrl, -) -from PyQt6.QtGui import ( - QBrush, - QColor, - QConicalGradient, - QCursor, - QFont, - QFontDatabase, - QGradient, - QIcon, - QImage, - QKeySequence, - QLinearGradient, - QPainter, - QPalette, - QPixmap, - QRadialGradient, - QTransform, -) -from PyQt6.QtWidgets import ( - QAbstractButton, - QApplication, - QDialog, - QDialogButtonBox, - QSizePolicy, - QTextEdit, - QWidget, -) - - -class Ui_extend_confirm(object): - def setupUi(self, extend_confirm): - if not extend_confirm.objectName(): - extend_confirm.setObjectName("extend_confirm") - extend_confirm.resize(380, 97) - self.buttonBox = QDialogButtonBox(extend_confirm) - self.buttonBox.setObjectName("buttonBox") - self.buttonBox.setGeometry(QRect(290, 20, 81, 241)) - self.buttonBox.setOrientation(Qt.Vertical) - self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok) - self.textEdit = QTextEdit(extend_confirm) - self.textEdit.setObjectName("textEdit") - self.textEdit.setGeometry(QRect(10, 10, 271, 81)) - - self.retranslateUi(extend_confirm) - self.buttonBox.accepted.connect(extend_confirm.accept) - self.buttonBox.rejected.connect(extend_confirm.reject) - - QMetaObject.connectSlotsByName(extend_confirm) - - # setupUi - - def retranslateUi(self, extend_confirm): - extend_confirm.setWindowTitle( - QCoreApplication.translate("extend_confirm", "Dialog", None) - ) - - # retranslateUi diff --git a/src/ui/dialogs/ext_app.py b/src/ui/dialogs/ext_app.py deleted file mode 100644 index 4985e76..0000000 --- a/src/ui/dialogs/ext_app.py +++ /dev/null @@ -1,57 +0,0 @@ -# Form implementation generated from reading ui file 'ui/dialogs/extend_apparat.ui' -# -# Created by: PyQt6 UI code generator 6.3.1 -# -# WARNING: Any manual changes made to this file will be lost when pyuic6 is -# run again. Do not edit this file unless you know what you are doing. - - -from PyQt6 import QtCore, QtGui, QtWidgets - - -class Ui_Frame(object): - def setupUi(self, Frame): - Frame.setObjectName("Frame") - Frame.resize(317, 126) - self.label = QtWidgets.QLabel(Frame) - self.label.setGeometry(QtCore.QRect(60, 20, 231, 16)) - self.label.setObjectName("label") - self.buttonBox = QtWidgets.QDialogButtonBox(Frame) - self.buttonBox.setGeometry(QtCore.QRect(90, 90, 156, 23)) - self.buttonBox.setStandardButtons( - QtWidgets.QDialogButtonBox.StandardButton.Cancel - | QtWidgets.QDialogButtonBox.StandardButton.Ok - ) - self.buttonBox.setObjectName("buttonBox") - self.sem_winter = QtWidgets.QRadioButton(Frame) - self.sem_winter.setGeometry(QtCore.QRect(60, 40, 82, 17)) - self.sem_winter.setObjectName("sem_winter") - self.sem_sommer = QtWidgets.QRadioButton(Frame) - self.sem_sommer.setGeometry(QtCore.QRect(60, 60, 82, 17)) - self.sem_sommer.setObjectName("sem_sommer") - self.sem_year = QtWidgets.QLineEdit(Frame) - self.sem_year.setGeometry(QtCore.QRect(160, 50, 113, 20)) - self.sem_year.setObjectName("sem_year") - - self.retranslateUi(Frame) - QtCore.QMetaObject.connectSlotsByName(Frame) - - def retranslateUi(self, Frame): - _translate = QtCore.QCoreApplication.translate - Frame.setWindowTitle(_translate("Frame", "Frame")) - self.label.setText( - _translate("Frame", "Bis wann soll der Apparat verlängert werden?") - ) - self.sem_winter.setText(_translate("Frame", "Winter")) - self.sem_sommer.setText(_translate("Frame", "Sommer")) - - -if __name__ == "__main__": - import sys - - app = QtWidgets.QApplication(sys.argv) - Frame = QtWidgets.QFrame() - ui = Ui_Frame() - ui.setupUi(Frame) - Frame.show() - sys.exit(app.exec()) diff --git a/src/ui/mainwindow.py b/src/ui/mainwindow.py deleted file mode 100644 index 89cf610..0000000 --- a/src/ui/mainwindow.py +++ /dev/null @@ -1,408 +0,0 @@ -# Form implementation generated from reading ui file 'untitled.ui' -# -# Created by: PyQt6 UI code generator 6.3.1 -# -# WARNING: Any manual changes made to this file will be lost when pyuic6 is -# run again. Do not edit this file unless you know what you are doing. - - -from PyQt6 import QtCore, QtGui, QtWidgets - - -class Ui_MainWindow(object): - def setupUi(self, MainWindow): - MainWindow.setObjectName("MainWindow") - MainWindow.resize(1280, 720) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Policy.Expanding, - QtWidgets.QSizePolicy.Policy.Expanding, - ) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) - MainWindow.setSizePolicy(sizePolicy) - self.centralwidget = QtWidgets.QWidget(MainWindow) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Fixed - ) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.centralwidget.sizePolicy().hasHeightForWidth() - ) - self.centralwidget.setSizePolicy(sizePolicy) - self.centralwidget.setObjectName("centralwidget") - self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget) - self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 1271, 671)) - self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") - self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) - self.verticalLayout.setContentsMargins(0, 0, 0, 0) - self.verticalLayout.setObjectName("verticalLayout") - self.horizontalLayout = QtWidgets.QHBoxLayout() - self.horizontalLayout.setObjectName("horizontalLayout") - self.gridLayout = QtWidgets.QGridLayout() - self.gridLayout.setObjectName("gridLayout") - self.tabWidget = QtWidgets.QTabWidget(self.verticalLayoutWidget) - self.tabWidget.setObjectName("tabWidget") - self.tab = QtWidgets.QWidget() - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Policy.Preferred, - QtWidgets.QSizePolicy.Policy.Preferred, - ) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.tab.sizePolicy().hasHeightForWidth()) - self.tab.setSizePolicy(sizePolicy) - self.tab.setObjectName("tab") - self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.tab) - self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(0, 0, 1261, 161)) - self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2") - self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2) - self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) - self.horizontalLayout_2.setObjectName("horizontalLayout_2") - self.formLayout = QtWidgets.QFormLayout() - self.formLayout.setObjectName("formLayout") - self.verticalLayout_2 = QtWidgets.QVBoxLayout() - self.verticalLayout_2.setObjectName("verticalLayout_2") - spacerItem = QtWidgets.QSpacerItem( - 20, - 40, - QtWidgets.QSizePolicy.Policy.Minimum, - QtWidgets.QSizePolicy.Policy.Expanding, - ) - self.verticalLayout_2.addItem(spacerItem) - self.load_app = QtWidgets.QPushButton(self.horizontalLayoutWidget_2) - self.load_app.setObjectName("load_app") - self.verticalLayout_2.addWidget(self.load_app) - self.create_new_app = QtWidgets.QPushButton(self.horizontalLayoutWidget_2) - self.create_new_app.setObjectName("create_new_app") - self.verticalLayout_2.addWidget(self.create_new_app) - spacerItem1 = QtWidgets.QSpacerItem( - 20, - 40, - QtWidgets.QSizePolicy.Policy.Minimum, - QtWidgets.QSizePolicy.Policy.Expanding, - ) - self.verticalLayout_2.addItem(spacerItem1) - self.formLayout.setLayout( - 0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.verticalLayout_2 - ) - self.tableWidget_apparate = QtWidgets.QTableWidget( - self.horizontalLayoutWidget_2 - ) - self.tableWidget_apparate.setObjectName("tableWidget_apparate") - self.tableWidget_apparate.setColumnCount(4) - self.tableWidget_apparate.setRowCount(0) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(0, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(1, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(2, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(3, item) - self.formLayout.setWidget( - 0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.tableWidget_apparate - ) - self.horizontalLayout_3 = QtWidgets.QHBoxLayout() - self.horizontalLayout_3.setObjectName("horizontalLayout_3") - self.formLayout.setLayout( - 2, QtWidgets.QFormLayout.ItemRole.LabelRole, self.horizontalLayout_3 - ) - self.horizontalLayout_4 = QtWidgets.QHBoxLayout() - self.horizontalLayout_4.setObjectName("horizontalLayout_4") - self.formLayout.setLayout( - 1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.horizontalLayout_4 - ) - self.horizontalLayout_2.addLayout(self.formLayout) - self.line = QtWidgets.QFrame(self.tab) - self.line.setGeometry(QtCore.QRect(0, 160, 1261, 21)) - self.line.setFrameShape(QtWidgets.QFrame.Shape.HLine) - self.line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) - self.line.setObjectName("line") - self.gridLayoutWidget_2 = QtWidgets.QWidget(self.tab) - self.gridLayoutWidget_2.setGeometry(QtCore.QRect(0, 180, 1261, 461)) - self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2") - self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget_2) - self.gridLayout_2.setContentsMargins(0, 0, 0, 0) - self.gridLayout_2.setObjectName("gridLayout_2") - self.tableWidget_apparat_media = QtWidgets.QTableWidget(self.gridLayoutWidget_2) - self.tableWidget_apparat_media.setObjectName("tableWidget_apparat_media") - self.tableWidget_apparat_media.setColumnCount(4) - self.tableWidget_apparat_media.setRowCount(0) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(0, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(1, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(2, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(3, item) - self.gridLayout_2.addWidget(self.tableWidget_apparat_media, 3, 0, 1, 1) - self.label = QtWidgets.QLabel(self.gridLayoutWidget_2) - font = QtGui.QFont() - font.setPointSize(11) - font.setBold(True) - font.setWeight(75) - self.label.setFont(font) - self.label.setObjectName("label") - self.gridLayout_2.addWidget(self.label, 1, 0, 1, 1) - self.app_group_box = QtWidgets.QGroupBox(self.gridLayoutWidget_2) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Policy.Preferred, - QtWidgets.QSizePolicy.Policy.Expanding, - ) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.app_group_box.sizePolicy().hasHeightForWidth() - ) - self.app_group_box.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setPointSize(12) - font.setBold(True) - font.setWeight(75) - self.app_group_box.setFont(font) - self.app_group_box.setAlignment( - QtCore.Qt.AlignmentFlag.AlignLeading - | QtCore.Qt.AlignmentFlag.AlignLeft - | QtCore.Qt.AlignmentFlag.AlignVCenter - ) - self.app_group_box.setCheckable(False) - self.app_group_box.setObjectName("app_group_box") - self.tableWidget = QtWidgets.QTableWidget(self.app_group_box) - self.tableWidget.setGeometry(QtCore.QRect(820, 20, 256, 192)) - self.tableWidget.setObjectName("tableWidget") - self.tableWidget.setColumnCount(2) - self.tableWidget.setRowCount(0) - item = QtWidgets.QTableWidgetItem() - self.tableWidget.setHorizontalHeaderItem(0, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget.setHorizontalHeaderItem(1, item) - self.frame = QtWidgets.QFrame(self.app_group_box) - self.frame.setGeometry(QtCore.QRect(10, 30, 731, 151)) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Fixed - ) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth()) - self.frame.setSizePolicy(sizePolicy) - self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) - self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised) - self.frame.setObjectName("frame") - self.drpdwn_prof_title = QtWidgets.QComboBox(self.frame) - self.drpdwn_prof_title.setGeometry(QtCore.QRect(110, 50, 69, 22)) - self.drpdwn_prof_title.setObjectName("drpdwn_prof_title") - self.label_5 = QtWidgets.QLabel(self.frame) - self.label_5.setGeometry(QtCore.QRect(250, 20, 91, 21)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_5.setFont(font) - self.label_5.setObjectName("label_5") - self.lineEdit = QtWidgets.QLineEdit(self.frame) - self.lineEdit.setGeometry(QtCore.QRect(110, 80, 121, 20)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.lineEdit.setFont(font) - self.lineEdit.setObjectName("lineEdit") - self.sem_winter = QtWidgets.QRadioButton(self.frame) - self.sem_winter.setGeometry(QtCore.QRect(340, 50, 82, 17)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.sem_winter.setFont(font) - self.sem_winter.setObjectName("sem_winter") - self.label_4 = QtWidgets.QLabel(self.frame) - self.label_4.setGeometry(QtCore.QRect(10, 80, 71, 21)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_4.setFont(font) - self.label_4.setObjectName("label_4") - self.drpdwn_app_nr = QtWidgets.QComboBox(self.frame) - self.drpdwn_app_nr.setGeometry(QtCore.QRect(110, 20, 69, 22)) - self.drpdwn_app_nr.setObjectName("drpdwn_app_nr") - self.app_name = QtWidgets.QLineEdit(self.frame) - self.app_name.setGeometry(QtCore.QRect(340, 20, 113, 20)) - self.app_name.setObjectName("app_name") - self.sem_sommer = QtWidgets.QRadioButton(self.frame) - self.sem_sommer.setGeometry(QtCore.QRect(340, 70, 82, 17)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.sem_sommer.setFont(font) - self.sem_sommer.setObjectName("sem_sommer") - self.label_3 = QtWidgets.QLabel(self.frame) - self.label_3.setGeometry(QtCore.QRect(10, 50, 61, 20)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_3.setFont(font) - self.label_3.setObjectName("label_3") - self.label_6 = QtWidgets.QLabel(self.frame) - self.label_6.setGeometry(QtCore.QRect(270, 60, 51, 21)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_6.setFont(font) - self.label_6.setObjectName("label_6") - self.sem_year = QtWidgets.QLineEdit(self.frame) - self.sem_year.setGeometry(QtCore.QRect(410, 60, 113, 20)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.sem_year.setFont(font) - self.sem_year.setObjectName("sem_year") - self.label_2 = QtWidgets.QLabel(self.frame) - self.label_2.setGeometry(QtCore.QRect(10, 20, 101, 21)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_2.setFont(font) - self.label_2.setObjectName("label_2") - self.btn_apparat_save = QtWidgets.QPushButton(self.frame) - self.btn_apparat_save.setGeometry(QtCore.QRect(260, 120, 75, 23)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.btn_apparat_save.setFont(font) - self.btn_apparat_save.setObjectName("btn_apparat_save") - self.btn_apparat_apply = QtWidgets.QPushButton(self.frame) - self.btn_apparat_apply.setGeometry(QtCore.QRect(350, 120, 75, 23)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.btn_apparat_apply.setFont(font) - self.btn_apparat_apply.setObjectName("btn_apparat_apply") - self.checkBox = QtWidgets.QCheckBox(self.frame) - self.checkBox.setGeometry(QtCore.QRect(340, 90, 101, 17)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.checkBox.setFont(font) - self.checkBox.setObjectName("checkBox") - self.btn_add_document = QtWidgets.QPushButton(self.app_group_box) - self.btn_add_document.setGeometry(QtCore.QRect(1100, 40, 131, 25)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.btn_add_document.setFont(font) - self.btn_add_document.setObjectName("btn_add_document") - self.btn_open_document = QtWidgets.QPushButton(self.app_group_box) - self.btn_open_document.setGeometry(QtCore.QRect(1100, 80, 131, 25)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.btn_open_document.setFont(font) - self.btn_open_document.setObjectName("btn_open_document") - self.toolButton = QtWidgets.QToolButton(self.app_group_box) - self.toolButton.setGeometry(QtCore.QRect(1110, 110, 25, 19)) - self.toolButton.setObjectName("toolButton") - self.gridLayout_2.addWidget(self.app_group_box, 2, 0, 1, 1) - self.tabWidget.addTab(self.tab, "") - self.tab_2 = QtWidgets.QWidget() - self.tab_2.setObjectName("tab_2") - self.tabWidget.addTab(self.tab_2, "") - self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1) - self.horizontalLayout.addLayout(self.gridLayout) - self.verticalLayout.addLayout(self.horizontalLayout) - MainWindow.setCentralWidget(self.centralwidget) - self.menubar = QtWidgets.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 1280, 21)) - self.menubar.setObjectName("menubar") - self.menuDatei = QtWidgets.QMenu(self.menubar) - self.menuDatei.setObjectName("menuDatei") - self.menuEinstellungen = QtWidgets.QMenu(self.menubar) - self.menuEinstellungen.setObjectName("menuEinstellungen") - MainWindow.setMenuBar(self.menubar) - self.statusbar = QtWidgets.QStatusBar(MainWindow) - self.statusbar.setObjectName("statusbar") - MainWindow.setStatusBar(self.statusbar) - self.menubar.addAction(self.menuDatei.menuAction()) - self.menubar.addAction(self.menuEinstellungen.menuAction()) - - self.retranslateUi(MainWindow) - self.tabWidget.setCurrentIndex(0) - QtCore.QMetaObject.connectSlotsByName(MainWindow) - - def retranslateUi(self, MainWindow): - _translate = QtCore.QCoreApplication.translate - MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) - self.load_app.setToolTip( - _translate("MainWindow", "Load the Semesterapparate from the database") - ) - self.load_app.setText(_translate("MainWindow", "App. Laden")) - self.create_new_app.setText(_translate("MainWindow", "neu. App anlegen")) - item = self.tableWidget_apparate.horizontalHeaderItem(0) - item.setText(_translate("MainWindow", "AppNr")) - item = self.tableWidget_apparate.horizontalHeaderItem(1) - item.setText(_translate("MainWindow", "App Name")) - item = self.tableWidget_apparate.horizontalHeaderItem(2) - item.setText(_translate("MainWindow", "Professor")) - item = self.tableWidget_apparate.horizontalHeaderItem(3) - item.setText(_translate("MainWindow", "Dauerapparat")) - item = self.tableWidget_apparat_media.horizontalHeaderItem(0) - item.setText(_translate("MainWindow", "Buchtitel")) - item = self.tableWidget_apparat_media.horizontalHeaderItem(1) - item.setText(_translate("MainWindow", "Autor")) - item = self.tableWidget_apparat_media.horizontalHeaderItem(2) - item.setText(_translate("MainWindow", "Auflage")) - item = self.tableWidget_apparat_media.horizontalHeaderItem(3) - item.setText(_translate("MainWindow", "Signatur")) - self.label.setText(_translate("MainWindow", "Medienliste")) - self.app_group_box.setTitle(_translate("MainWindow", "Apparatsdetails")) - item = self.tableWidget.horizontalHeaderItem(0) - item.setText(_translate("MainWindow", "Dokumentname")) - item = self.tableWidget.horizontalHeaderItem(1) - item.setText(_translate("MainWindow", "Typ")) - self.label_5.setText(_translate("MainWindow", "Apparatsname")) - self.lineEdit.setPlaceholderText(_translate("MainWindow", "Nachname, Vorname")) - self.sem_winter.setText(_translate("MainWindow", "Winter")) - self.label_4.setText(_translate("MainWindow", "Prof. Name")) - self.sem_sommer.setText(_translate("MainWindow", "Sommer")) - self.label_3.setText(_translate("MainWindow", "Prof. Titel")) - self.label_6.setText(_translate("MainWindow", "Semester")) - self.sem_year.setPlaceholderText(_translate("MainWindow", "2023")) - self.label_2.setText(_translate("MainWindow", "Apparatsnummer")) - self.btn_apparat_save.setText(_translate("MainWindow", "Speichern")) - self.btn_apparat_apply.setText(_translate("MainWindow", "Aktualisieren")) - self.checkBox.setText(_translate("MainWindow", "Dauerapparat")) - self.btn_add_document.setText(_translate("MainWindow", "Dokument hinzufügen")) - self.btn_open_document.setText(_translate("MainWindow", "Dokument öffnen")) - self.toolButton.setText(_translate("MainWindow", "...")) - self.tabWidget.setTabText( - self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Tab 1") - ) - self.tabWidget.setTabText( - self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Tab 2") - ) - self.menuDatei.setTitle(_translate("MainWindow", "Datei")) - self.menuEinstellungen.setTitle(_translate("MainWindow", "Einstellungen")) - - -if __name__ == "__main__": - import sys - - app = QtWidgets.QApplication(sys.argv) - MainWindow = QtWidgets.QMainWindow() - ui = Ui_MainWindow() - ui.setupUi(MainWindow) - MainWindow.show() - sys.exit(app.exec()) diff --git a/src/ui/plotdata.ui b/src/ui/plotdata.ui deleted file mode 100644 index 9ec94dc..0000000 --- a/src/ui/plotdata.ui +++ /dev/null @@ -1,64 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 640 - 480 - - - - MainWindow - - - - - - 330 - 10 - 256 - 192 - - - - - - - 10 - 0 - 251 - 271 - - - - - - - 300 - 220 - 291 - 201 - - - - - - - - - - 0 - 0 - 640 - 21 - - - - - - - - diff --git a/src/ui/plotdata_ui.py b/src/ui/plotdata_ui.py deleted file mode 100644 index f0738dc..0000000 --- a/src/ui/plotdata_ui.py +++ /dev/null @@ -1,47 +0,0 @@ -# Form implementation generated from reading ui file '/home/alexander/GitHub/Semesterapparate/ui/plotdata.ui' -# -# Created by: PyQt6 UI code generator 6.5.3 -# -# WARNING: Any manual changes made to this file will be lost when pyuic6 is -# run again. Do not edit this file unless you know what you are doing. - - -from PyQt6 import QtCore, QtGui, QtWidgets - - -class Ui_MainWindow(object): - def setupUi(self, MainWindow): - MainWindow.setObjectName("MainWindow") - MainWindow.resize(640, 480) - self.centralwidget = QtWidgets.QWidget(parent=MainWindow) - self.centralwidget.setObjectName("centralwidget") - self.graphicsView = QtWidgets.QGraphicsView(parent=self.centralwidget) - self.graphicsView.setGeometry(QtCore.QRect(330, 10, 256, 192)) - self.graphicsView.setObjectName("graphicsView") - self.widget = QtWidgets.QWidget(parent=self.centralwidget) - self.widget.setGeometry(QtCore.QRect(10, 0, 251, 271)) - self.widget.setObjectName("widget") - self.stackedWidget = QtWidgets.QStackedWidget(parent=self.centralwidget) - self.stackedWidget.setGeometry(QtCore.QRect(300, 220, 291, 201)) - self.stackedWidget.setObjectName("stackedWidget") - self.page = QtWidgets.QWidget() - self.page.setObjectName("page") - self.stackedWidget.addWidget(self.page) - self.page_2 = QtWidgets.QWidget() - self.page_2.setObjectName("page_2") - self.stackedWidget.addWidget(self.page_2) - MainWindow.setCentralWidget(self.centralwidget) - self.menubar = QtWidgets.QMenuBar(parent=MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 640, 21)) - self.menubar.setObjectName("menubar") - MainWindow.setMenuBar(self.menubar) - self.statusbar = QtWidgets.QStatusBar(parent=MainWindow) - self.statusbar.setObjectName("statusbar") - MainWindow.setStatusBar(self.statusbar) - - self.retranslateUi(MainWindow) - QtCore.QMetaObject.connectSlotsByName(MainWindow) - - def retranslateUi(self, MainWindow): - _translate = QtCore.QCoreApplication.translate - MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) diff --git a/src/ui/resources.qrc b/src/ui/resources.qrc deleted file mode 100644 index aa2997d..0000000 --- a/src/ui/resources.qrc +++ /dev/null @@ -1,14 +0,0 @@ - - - icons/warning.png - - - icons/critical.png - - - icons/information.png - - - icons/question.png - - diff --git a/src/ui/resources_rc.py b/src/ui/resources_rc.py deleted file mode 100644 index 47c9635..0000000 --- a/src/ui/resources_rc.py +++ /dev/null @@ -1,162 +0,0 @@ -# Resource object code (Python 3) -# Created by: object code -# Created by: The Resource Compiler for Qt version 6.6.2 -# WARNING! All changes made in this file will be lost! - -from PyQt6 import QtCore - -qt_resource_data = b"\ -\x00\x00\x00\xde\ -\x89\ -PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ -\x00\x00 \x00\x00\x00 \x02\x03\x00\x00\x00\x0e\x14\x92g\ -\x00\x00\x00\x0cPLTEe-g\xff\xff\x00\x99\x99\ -\x99\x00\x00\x00\xb2\x18W>\x00\x00\x00\x01tRNS\ -\x00@\xe6\xd8f\x00\x00\x00\x80IDATx\xdaU\ -\xcc\xb1\x0d\xc3 \x10\x85\xe1\x93\xa8Q\xf6HO\x9d)\ -\x9e\xa8\x82\xd7\x88h`\x14\xca\x88)\xb2\xc4\xed`e\ -\x888\xdc\x9d-\x9b\xbfy_\xf5h\xf4\xa0=\xfe\xd8\ -:\xbc\x0ed\x83G\xaa3\x02b\x9b\xc1\xc0j(\x06\ -\x87\x8d\xf3\x04?\x90\xea\x15a \xb6+\x18E\x8eN\ -8\x08\xb2\xe2\xa9\xf0\x8aT\x05P\x04`\x01b\x13\x14\ -\x16\xb0\x02\xab`\x81A\xfb\x9e\x08\xba\xb1\xd3m\x93~\ -\x9d\xa8ko\xa2\xbb\xa2\xfd\x01\xa6\xe9X\x86\xbd\xa6E\ - \x00\x00\x00\x00IEND\xaeB`\x82\ -\x00\x00\x00\xf5\ -\x89\ -PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ -\x00\x00 \x00\x00\x00 \x04\x03\x00\x00\x00\x81Tg\xc7\ -\x00\x00\x00\x0fPLTEet-\xff\xff\xff\x99\x99\ -\x99\x00\x00\xff\x00\x00\x00\x06\xefPJ\x00\x00\x00\x01t\ -RNS\x00@\xe6\xd8f\x00\x00\x00\x94IDAT\ -x\xda\xad\x91\xd1\x09\x03!\x10D\x17\xb9\x066g\x01\ -fH\x03\xc1\x06\xa2\xd8\x7fM\xc9:\x1eC$\x9fy\ -?\xe2\xe3\xad\x88\xda$\x01(&pw\xf7\x1b\xb4w\ -r\x99\xe4\x17\x85\x22\xfa\xb3>\xdd=+\xa8\xb5\xc6\xf2\ -b \x91\x19\xac\x91\x99P\x88\xce\x09\x91\x0b\xc5\x19g\ -H\xd0P\xe0/\x22}\x89\xfeCpf\x89\x1c\xefv\ -p?M\x0faM\x17\x07\xcc\x22!\x0c\x82\xe1d\x00\ -\xebQG\x8b~\xe8+\xf0\x18\xd13\xa0A\x0ba\x22\ -}D\xf4\xe2\xd8\x85\xb5]\x1c\xbb0\xec\x22Q\xbc\x01\ -\x01\xb7#\x93\xf0\xcb\xa6\x83\x00\x00\x00\x00IEND\ -\xaeB`\x82\ -\x00\x00\x00\xfc\ -\x89\ -PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ -\x00\x00 \x00\x00\x00 \x02\x03\x00\x00\x00\x0e\x14\x92g\ -\x00\x00\x00\x0cPLTEe-g\xff\xff\xff\x99\x99\ -\x99\xff\x00\x00\x9e\xb6)\xe3\x00\x00\x00\x01tRNS\ -\x00@\xe6\xd8f\x00\x00\x00\x9eIDATx\xdaM\ -\x8e\xb1\x0d\xc20\x10E\xbfBI\xc1\x1eP0B\xa6\ -8\xa5\xf4(\xf6()#/\x11\x96H\x0deD\x1f\ -)\xb2p>w!'\xf1\xaa\xa7\xfb\xdf\xbe\x03p\xe2\ -\x07;-\xf9\x00l\xc0\xdf\xe8B\xe5H\xc8\x97\x0a\x8d\ -\xd5*\xc6f\x95'\x19\x99T:\xd6\xa0\xd2V\xe1\xd2\ -i\xbb\xa5\xc4)\xa8\x90S\x90\xc8Ue\x11\xe1.U\ -:\xb2\xa8P\x02\xff\xc5#/\x17\x7f^\xfc\xc3\xd9W\ -\xcc\xbet\xf03z?\xac\x07h\x94\x04\x8c&o\x00\ -w\x93A\xe5|T\xd0\x8c\x9a$(7n\x19F\x93\ -\xb3&\xc65\x03\xf8\x02;d\xa4\x1d\xa53i\xfd\x00\ -\x00\x00\x00IEND\xaeB`\x82\ -\x00\x00\x00\xfc\ -\x89\ -PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ -\x00\x00 \x00\x00\x00 \x04\x03\x00\x00\x00\x81Tg\xc7\ -\x00\x00\x00\x0fPLTEet-\xff\xff\xff\x99\x99\ -\x99\x00\x00\xff\x00\x00\x00\x06\xefPJ\x00\x00\x00\x01t\ -RNS\x00@\xe6\xd8f\x00\x00\x00\x9bIDAT\ -x\xda\x85\xd1\xc1\x0d\x03!\x0cD\xd1\x11\xda\x06\x1c(\ -\x00\xac4\x80h \xfa\xaf)\xf1:\xc6\x84K\xe6\ -\xb2\xda\xa7\x0f\x17p/0s\x86\x8f\x0b\x11=\xd8\xff\ -Ig\x12\xc8\x96\x15\xca\x82\xe4AkM>/\x0b\x22\ -\xc5V%Y\x01\x91%v\xe2\x0bCO8\xa4\xac\x10\ -\xab\xdc\xe1\xa0\xcd\x0d\xbc\xa0\x9e@\xff\x80\x16\x84\x9fb\ -\x18\xc4V\x0dP6H\x9c\x81k;2\x04\xd0\xb7+\ -\x19\xb0\xc4\x03`\x92nJ \x0b\xb3K?\xfd)\xf8\ -9\xa5\x97\xc0\x84\xbb\x00|\xe1\x03\x19\xfb\xae\x13\xd0O\ -\xb8N\x00\x9f\x10\x14\xde\xf9|#;u\x5c\xf4%\x00\ -\x00\x00\x00IEND\xaeB`\x82\ -" - -qt_resource_name = b"\ -\x00\x08\ -\x0b\xca\xa3^\ -\x00q\ -\x00u\x00e\x00s\x00t\x00i\x00o\x00n\ -\x00\x08\ -\x09\x0a\xf4<\ -\x00c\ -\x00r\x00i\x00t\x00i\x00c\x00a\x00l\ -\x00\x0b\ -\x09\xd86\x9e\ -\x00i\ -\x00n\x00f\x00o\x00r\x00m\x00a\x00t\x00i\x00o\x00n\ -\x00\x0a\ -\x04S\x86\xf5\ -\x00w\ -\x00a\x00r\x00n\x00_\x00i\x00m\x00a\x00g\x00e\ -\x00\x05\ -\x00o\xa6S\ -\x00i\ -\x00c\x00o\x00n\x00s\ -\x00\x0b\ -\x00\xb5E\xe7\ -\x00w\ -\x00a\x00r\x00n\x00i\x00n\x00g\x00.\x00p\x00n\x00g\ -\x00\x0f\ -\x06\xb2\xe7'\ -\x00i\ -\x00n\x00f\x00o\x00r\x00m\x00a\x00t\x00i\x00o\x00n\x00.\x00p\x00n\x00g\ -\x00\x0c\ -\x04-B\xa7\ -\x00c\ -\x00r\x00i\x00t\x00i\x00c\x00a\x00l\x00.\x00p\x00n\x00g\ -\x00\x0c\ -\x03v\xc2\x07\ -\x00q\ -\x00u\x00e\x00s\x00t\x00i\x00o\x00n\x00.\x00p\x00n\x00g\ -" - -qt_resource_struct = b"\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00H\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0b\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x16\x00\x02\x00\x00\x00\x01\x00\x00\x00\x09\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00,\x00\x02\x00\x00\x00\x01\x00\x00\x00\x07\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x05\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00b\x00\x02\x00\x00\x00\x01\x00\x00\x00\x06\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x02\xdb\ -\x00\x00\x01\x8e,\x5c5%\ -\x00\x00\x00b\x00\x02\x00\x00\x00\x01\x00\x00\x00\x08\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x00\xe2\ -\x00\x00\x01\x8e,\x5c5\x22\ -\x00\x00\x00b\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0a\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x01\x00\x00\x01\xdb\ -\x00\x00\x01\x8e,\x5c5!\ -\x00\x00\x00b\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0c\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00r\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x8e,\x5c5'\ -" - - -def qInitResources(): - QtCore.qRegisterResourceData( - 0x03, qt_resource_struct, qt_resource_name, qt_resource_data - ) - - -def qCleanupResources(): - QtCore.qUnregisterResourceData( - 0x03, qt_resource_struct, qt_resource_name, qt_resource_data - ) - - -qInitResources() diff --git a/src/ui/sap.py b/src/ui/sap.py deleted file mode 100644 index 5bfbc06..0000000 --- a/src/ui/sap.py +++ /dev/null @@ -1,573 +0,0 @@ -# Form implementation generated from reading ui file 'ui/semesterapparat_ui.ui' -# -# Created by: PyQt6 UI code generator 6.3.1 -# -# WARNING: Any manual changes made to this file will be lost when pyuic6 is -# run again. Do not edit this file unless you know what you are doing. - - -from PyQt6 import QtCore, QtGui, QtWidgets - - -class Ui_MainWindow(object): - def setupUi(self, MainWindow): - MainWindow.setObjectName("MainWindow") - MainWindow.resize(1280, 747) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Policy.Expanding, - QtWidgets.QSizePolicy.Policy.Expanding, - ) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) - MainWindow.setSizePolicy(sizePolicy) - self.centralwidget = QtWidgets.QWidget(MainWindow) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Fixed - ) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.centralwidget.sizePolicy().hasHeightForWidth() - ) - self.centralwidget.setSizePolicy(sizePolicy) - self.centralwidget.setObjectName("centralwidget") - self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget) - self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 1271, 691)) - self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") - self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) - self.verticalLayout.setContentsMargins(0, 0, 0, 0) - self.verticalLayout.setObjectName("verticalLayout") - self.horizontalLayout = QtWidgets.QHBoxLayout() - self.horizontalLayout.setObjectName("horizontalLayout") - self.gridLayout = QtWidgets.QGridLayout() - self.gridLayout.setObjectName("gridLayout") - self.tabWidget = QtWidgets.QTabWidget(self.verticalLayoutWidget) - self.tabWidget.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) - self.tabWidget.setObjectName("tabWidget") - self.tab = QtWidgets.QWidget() - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Policy.Preferred, - QtWidgets.QSizePolicy.Policy.Preferred, - ) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.tab.sizePolicy().hasHeightForWidth()) - self.tab.setSizePolicy(sizePolicy) - self.tab.setObjectName("tab") - self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.tab) - self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(0, 0, 1261, 161)) - self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2") - self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2) - self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) - self.horizontalLayout_2.setObjectName("horizontalLayout_2") - self.formLayout = QtWidgets.QFormLayout() - self.formLayout.setObjectName("formLayout") - self.verticalLayout_2 = QtWidgets.QVBoxLayout() - self.verticalLayout_2.setObjectName("verticalLayout_2") - spacerItem = QtWidgets.QSpacerItem( - 20, - 40, - QtWidgets.QSizePolicy.Policy.Minimum, - QtWidgets.QSizePolicy.Policy.Expanding, - ) - self.verticalLayout_2.addItem(spacerItem) - self.load_app = QtWidgets.QPushButton(self.horizontalLayoutWidget_2) - self.load_app.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) - self.load_app.setObjectName("load_app") - self.verticalLayout_2.addWidget(self.load_app) - self.create_new_app = QtWidgets.QPushButton(self.horizontalLayoutWidget_2) - self.create_new_app.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) - self.create_new_app.setObjectName("create_new_app") - self.verticalLayout_2.addWidget(self.create_new_app) - spacerItem1 = QtWidgets.QSpacerItem( - 20, - 40, - QtWidgets.QSizePolicy.Policy.Minimum, - QtWidgets.QSizePolicy.Policy.Expanding, - ) - self.verticalLayout_2.addItem(spacerItem1) - self.formLayout.setLayout( - 0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.verticalLayout_2 - ) - self.tableWidget_apparate = QtWidgets.QTableWidget( - self.horizontalLayoutWidget_2 - ) - self.tableWidget_apparate.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) - self.tableWidget_apparate.setEditTriggers( - QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers - ) - self.tableWidget_apparate.setObjectName("tableWidget_apparate") - self.tableWidget_apparate.setColumnCount(4) - self.tableWidget_apparate.setRowCount(0) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(0, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(1, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(2, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(3, item) - self.formLayout.setWidget( - 0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.tableWidget_apparate - ) - self.horizontalLayout_3 = QtWidgets.QHBoxLayout() - self.horizontalLayout_3.setObjectName("horizontalLayout_3") - self.formLayout.setLayout( - 2, QtWidgets.QFormLayout.ItemRole.LabelRole, self.horizontalLayout_3 - ) - self.horizontalLayout_4 = QtWidgets.QHBoxLayout() - self.horizontalLayout_4.setObjectName("horizontalLayout_4") - self.formLayout.setLayout( - 1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.horizontalLayout_4 - ) - self.horizontalLayout_2.addLayout(self.formLayout) - self.line = QtWidgets.QFrame(self.tab) - self.line.setGeometry(QtCore.QRect(0, 160, 1261, 21)) - self.line.setFrameShape(QtWidgets.QFrame.Shape.HLine) - self.line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) - self.line.setObjectName("line") - self.gridLayoutWidget_2 = QtWidgets.QWidget(self.tab) - self.gridLayoutWidget_2.setGeometry(QtCore.QRect(0, 180, 1261, 461)) - self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2") - self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget_2) - self.gridLayout_2.setContentsMargins(0, 0, 0, 0) - self.gridLayout_2.setObjectName("gridLayout_2") - self.app_group_box = QtWidgets.QGroupBox(self.gridLayoutWidget_2) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Policy.Preferred, - QtWidgets.QSizePolicy.Policy.Expanding, - ) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.app_group_box.sizePolicy().hasHeightForWidth() - ) - self.app_group_box.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setPointSize(12) - font.setBold(True) - font.setWeight(75) - self.app_group_box.setFont(font) - self.app_group_box.setAlignment( - QtCore.Qt.AlignmentFlag.AlignLeading - | QtCore.Qt.AlignmentFlag.AlignLeft - | QtCore.Qt.AlignmentFlag.AlignVCenter - ) - self.app_group_box.setCheckable(False) - self.app_group_box.setObjectName("app_group_box") - self.dokument_list = QtWidgets.QTableWidget(self.app_group_box) - self.dokument_list.setGeometry(QtCore.QRect(830, 20, 256, 192)) - font = QtGui.QFont() - font.setKerning(False) - self.dokument_list.setFont(font) - self.dokument_list.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) - self.dokument_list.setSelectionMode( - QtWidgets.QAbstractItemView.SelectionMode.SingleSelection - ) - self.dokument_list.setObjectName("dokument_list") - self.dokument_list.setColumnCount(4) - self.dokument_list.setRowCount(0) - item = QtWidgets.QTableWidgetItem() - font = QtGui.QFont() - font.setFamily("Arial") - font.setPointSize(8) - item.setFont(font) - self.dokument_list.setHorizontalHeaderItem(0, item) - item = QtWidgets.QTableWidgetItem() - font = QtGui.QFont() - font.setFamily("Arial") - font.setPointSize(8) - item.setFont(font) - self.dokument_list.setHorizontalHeaderItem(1, item) - item = QtWidgets.QTableWidgetItem() - font = QtGui.QFont() - font.setFamily("Arial") - font.setPointSize(8) - item.setFont(font) - self.dokument_list.setHorizontalHeaderItem(2, item) - item = QtWidgets.QTableWidgetItem() - self.dokument_list.setHorizontalHeaderItem(3, item) - self.frame = QtWidgets.QFrame(self.app_group_box) - self.frame.setEnabled(True) - self.frame.setGeometry(QtCore.QRect(10, 30, 731, 151)) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Fixed - ) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth()) - self.frame.setSizePolicy(sizePolicy) - self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) - self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised) - self.frame.setObjectName("frame") - self.drpdwn_prof_title = QtWidgets.QComboBox(self.frame) - self.drpdwn_prof_title.setGeometry(QtCore.QRect(110, 50, 69, 22)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.drpdwn_prof_title.setFont(font) - self.drpdwn_prof_title.setEditable(True) - self.drpdwn_prof_title.setObjectName("drpdwn_prof_title") - self.label_5 = QtWidgets.QLabel(self.frame) - self.label_5.setGeometry(QtCore.QRect(250, 20, 91, 21)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_5.setFont(font) - self.label_5.setObjectName("label_5") - self.sem_winter = QtWidgets.QRadioButton(self.frame) - self.sem_winter.setGeometry(QtCore.QRect(340, 50, 82, 17)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.sem_winter.setFont(font) - self.sem_winter.setObjectName("sem_winter") - self.label_4 = QtWidgets.QLabel(self.frame) - self.label_4.setGeometry(QtCore.QRect(10, 80, 71, 21)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_4.setFont(font) - self.label_4.setObjectName("label_4") - self.drpdwn_app_nr = QtWidgets.QComboBox(self.frame) - self.drpdwn_app_nr.setGeometry(QtCore.QRect(110, 20, 69, 22)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.drpdwn_app_nr.setFont(font) - self.drpdwn_app_nr.setEditable(True) - self.drpdwn_app_nr.setObjectName("drpdwn_app_nr") - self.app_name = QtWidgets.QLineEdit(self.frame) - self.app_name.setGeometry(QtCore.QRect(340, 20, 113, 20)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.app_name.setFont(font) - self.app_name.setObjectName("app_name") - self.sem_sommer = QtWidgets.QRadioButton(self.frame) - self.sem_sommer.setGeometry(QtCore.QRect(340, 70, 82, 17)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.sem_sommer.setFont(font) - self.sem_sommer.setObjectName("sem_sommer") - self.label_3 = QtWidgets.QLabel(self.frame) - self.label_3.setGeometry(QtCore.QRect(10, 50, 61, 20)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_3.setFont(font) - self.label_3.setObjectName("label_3") - self.label_6 = QtWidgets.QLabel(self.frame) - self.label_6.setGeometry(QtCore.QRect(270, 60, 51, 21)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_6.setFont(font) - self.label_6.setObjectName("label_6") - self.sem_year = QtWidgets.QLineEdit(self.frame) - self.sem_year.setGeometry(QtCore.QRect(410, 60, 113, 20)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.sem_year.setFont(font) - self.sem_year.setMaxLength(4) - self.sem_year.setObjectName("sem_year") - self.label_2 = QtWidgets.QLabel(self.frame) - self.label_2.setGeometry(QtCore.QRect(10, 20, 101, 21)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_2.setFont(font) - self.label_2.setObjectName("label_2") - self.btn_apparat_save = QtWidgets.QPushButton(self.frame) - self.btn_apparat_save.setGeometry(QtCore.QRect(260, 120, 75, 23)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.btn_apparat_save.setFont(font) - self.btn_apparat_save.setObjectName("btn_apparat_save") - self.btn_apparat_apply = QtWidgets.QPushButton(self.frame) - self.btn_apparat_apply.setGeometry(QtCore.QRect(350, 120, 75, 23)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.btn_apparat_apply.setFont(font) - self.btn_apparat_apply.setObjectName("btn_apparat_apply") - self.check_eternal_app = QtWidgets.QCheckBox(self.frame) - self.check_eternal_app.setGeometry(QtCore.QRect(340, 90, 101, 17)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.check_eternal_app.setFont(font) - self.check_eternal_app.setObjectName("check_eternal_app") - self.label_8 = QtWidgets.QLabel(self.frame) - self.label_8.setGeometry(QtCore.QRect(10, 110, 71, 21)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_8.setFont(font) - self.label_8.setObjectName("label_8") - self.prof_mail = QtWidgets.QLineEdit(self.frame) - self.prof_mail.setGeometry(QtCore.QRect(110, 110, 121, 20)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.prof_mail.setFont(font) - self.prof_mail.setPlaceholderText("") - self.prof_mail.setObjectName("prof_mail") - self.label_9 = QtWidgets.QLabel(self.frame) - self.label_9.setGeometry(QtCore.QRect(10, 130, 71, 21)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_9.setFont(font) - self.label_9.setObjectName("label_9") - self.prof_tel_nr = QtWidgets.QLineEdit(self.frame) - self.prof_tel_nr.setGeometry(QtCore.QRect(110, 130, 121, 20)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.prof_tel_nr.setFont(font) - self.prof_tel_nr.setPlaceholderText("") - self.prof_tel_nr.setObjectName("prof_tel_nr") - self.label_10 = QtWidgets.QLabel(self.frame) - self.label_10.setGeometry(QtCore.QRect(470, 20, 51, 21)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_10.setFont(font) - self.label_10.setObjectName("label_10") - self.app_fach = QtWidgets.QLineEdit(self.frame) - self.app_fach.setGeometry(QtCore.QRect(510, 20, 113, 20)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.app_fach.setFont(font) - self.app_fach.setObjectName("app_fach") - self.drpdwn_prof_name = QtWidgets.QComboBox(self.frame) - self.drpdwn_prof_name.setGeometry(QtCore.QRect(110, 80, 121, 22)) - font = QtGui.QFont() - font.setPointSize(8) - font.setBold(False) - font.setWeight(50) - self.drpdwn_prof_name.setFont(font) - self.drpdwn_prof_name.setFocusPolicy(QtCore.Qt.FocusPolicy.StrongFocus) - self.drpdwn_prof_name.setEditable(True) - self.drpdwn_prof_name.setCurrentText("") - self.drpdwn_prof_name.setInsertPolicy( - QtWidgets.QComboBox.InsertPolicy.InsertAlphabetically - ) - self.drpdwn_prof_name.setFrame(True) - self.drpdwn_prof_name.setObjectName("drpdwn_prof_name") - self.btn_add_document = QtWidgets.QPushButton(self.app_group_box) - self.btn_add_document.setGeometry(QtCore.QRect(1100, 40, 131, 25)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.btn_add_document.setFont(font) - self.btn_add_document.setObjectName("btn_add_document") - self.btn_open_document = QtWidgets.QPushButton(self.app_group_box) - self.btn_open_document.setGeometry(QtCore.QRect(1100, 80, 131, 25)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.btn_open_document.setFont(font) - self.btn_open_document.setObjectName("btn_open_document") - self.toolButton = QtWidgets.QToolButton(self.app_group_box) - self.toolButton.setGeometry(QtCore.QRect(1110, 110, 25, 19)) - self.toolButton.setObjectName("toolButton") - self.label_7 = QtWidgets.QLabel(self.app_group_box) - self.label_7.setGeometry(QtCore.QRect(20, 200, 47, 21)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.label_7.setFont(font) - self.label_7.setObjectName("label_7") - self.search_media = QtWidgets.QLineEdit(self.app_group_box) - self.search_media.setGeometry(QtCore.QRect(80, 200, 211, 20)) - font = QtGui.QFont() - font.setPointSize(9) - font.setBold(False) - font.setWeight(50) - self.search_media.setFont(font) - self.search_media.setObjectName("search_media") - self.label = QtWidgets.QLabel(self.app_group_box) - self.label.setGeometry(QtCore.QRect(10, 180, 1259, 18)) - font = QtGui.QFont() - font.setPointSize(11) - font.setBold(True) - font.setWeight(75) - self.label.setFont(font) - self.label.setObjectName("label") - self.gridLayout_2.addWidget(self.app_group_box, 1, 0, 1, 1) - self.tableWidget_apparat_media = QtWidgets.QTableWidget(self.gridLayoutWidget_2) - self.tableWidget_apparat_media.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) - self.tableWidget_apparat_media.setObjectName("tableWidget_apparat_media") - self.tableWidget_apparat_media.setColumnCount(4) - self.tableWidget_apparat_media.setRowCount(0) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(0, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(1, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(2, item) - item = QtWidgets.QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(3, item) - self.gridLayout_2.addWidget(self.tableWidget_apparat_media, 2, 0, 1, 1) - self.search = QtWidgets.QPushButton(self.tab) - self.search.setGeometry(QtCore.QRect(130, 640, 75, 20)) - self.search.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) - self.search.setObjectName("search") - self.add_medium = QtWidgets.QPushButton(self.tab) - self.add_medium.setGeometry(QtCore.QRect(10, 640, 111, 20)) - self.add_medium.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) - self.add_medium.setObjectName("add_medium") - self.tabWidget.addTab(self.tab, "") - self.tab_2 = QtWidgets.QWidget() - self.tab_2.setObjectName("tab_2") - self.tabWidget.addTab(self.tab_2, "") - self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1) - self.horizontalLayout.addLayout(self.gridLayout) - self.verticalLayout.addLayout(self.horizontalLayout) - MainWindow.setCentralWidget(self.centralwidget) - self.menubar = QtWidgets.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 1280, 21)) - self.menubar.setObjectName("menubar") - self.menuDatei = QtWidgets.QMenu(self.menubar) - self.menuDatei.setObjectName("menuDatei") - self.menuEinstellungen = QtWidgets.QMenu(self.menubar) - self.menuEinstellungen.setObjectName("menuEinstellungen") - MainWindow.setMenuBar(self.menubar) - self.statusbar = QtWidgets.QStatusBar(MainWindow) - self.statusbar.setObjectName("statusbar") - MainWindow.setStatusBar(self.statusbar) - self.menubar.addAction(self.menuDatei.menuAction()) - self.menubar.addAction(self.menuEinstellungen.menuAction()) - - self.retranslateUi(MainWindow) - self.tabWidget.setCurrentIndex(0) - QtCore.QMetaObject.connectSlotsByName(MainWindow) - MainWindow.setTabOrder(self.drpdwn_app_nr, self.drpdwn_prof_title) - MainWindow.setTabOrder(self.drpdwn_prof_title, self.drpdwn_prof_name) - MainWindow.setTabOrder(self.drpdwn_prof_name, self.prof_mail) - MainWindow.setTabOrder(self.prof_mail, self.prof_tel_nr) - MainWindow.setTabOrder(self.prof_tel_nr, self.app_name) - MainWindow.setTabOrder(self.app_name, self.app_fach) - MainWindow.setTabOrder(self.app_fach, self.sem_winter) - MainWindow.setTabOrder(self.sem_winter, self.sem_sommer) - MainWindow.setTabOrder(self.sem_sommer, self.sem_year) - MainWindow.setTabOrder(self.sem_year, self.check_eternal_app) - MainWindow.setTabOrder(self.check_eternal_app, self.btn_add_document) - MainWindow.setTabOrder(self.btn_add_document, self.btn_open_document) - MainWindow.setTabOrder(self.btn_open_document, self.toolButton) - MainWindow.setTabOrder(self.toolButton, self.btn_apparat_save) - MainWindow.setTabOrder(self.btn_apparat_save, self.btn_apparat_apply) - MainWindow.setTabOrder(self.btn_apparat_apply, self.search_media) - - def retranslateUi(self, MainWindow): - _translate = QtCore.QCoreApplication.translate - MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) - self.load_app.setToolTip( - _translate("MainWindow", "Load the Semesterapparate from the database") - ) - self.load_app.setText(_translate("MainWindow", "App. aufrufen")) - self.create_new_app.setText(_translate("MainWindow", "neu. App anlegen")) - item = self.tableWidget_apparate.horizontalHeaderItem(0) - item.setText(_translate("MainWindow", "AppNr")) - item = self.tableWidget_apparate.horizontalHeaderItem(1) - item.setText(_translate("MainWindow", "App Name")) - item = self.tableWidget_apparate.horizontalHeaderItem(2) - item.setText(_translate("MainWindow", "Professor")) - item = self.tableWidget_apparate.horizontalHeaderItem(3) - item.setText(_translate("MainWindow", "Dauerapparat")) - self.app_group_box.setTitle(_translate("MainWindow", "Apparatsdetails")) - item = self.dokument_list.horizontalHeaderItem(0) - item.setText(_translate("MainWindow", "Dokumentname")) - item = self.dokument_list.horizontalHeaderItem(1) - item.setText(_translate("MainWindow", "Dateityp")) - item = self.dokument_list.horizontalHeaderItem(2) - item.setText(_translate("MainWindow", "Neu?")) - item = self.dokument_list.horizontalHeaderItem(3) - item.setText(_translate("MainWindow", "path")) - self.label_5.setText(_translate("MainWindow", "Apparatsname")) - self.sem_winter.setText(_translate("MainWindow", "Winter")) - self.label_4.setText(_translate("MainWindow", "Prof. Name")) - self.sem_sommer.setText(_translate("MainWindow", "Sommer")) - self.label_3.setText(_translate("MainWindow", "Prof. Titel")) - self.label_6.setText(_translate("MainWindow", "Semester")) - self.sem_year.setPlaceholderText(_translate("MainWindow", "2023")) - self.label_2.setText(_translate("MainWindow", "Apparatsnummer")) - self.btn_apparat_save.setText(_translate("MainWindow", "Speichern")) - self.btn_apparat_apply.setText(_translate("MainWindow", "Aktualisieren")) - self.check_eternal_app.setText(_translate("MainWindow", "Dauerapparat")) - self.label_8.setText(_translate("MainWindow", "Mail")) - self.label_9.setText(_translate("MainWindow", "Tel")) - self.label_10.setText(_translate("MainWindow", "Fach")) - self.btn_add_document.setText(_translate("MainWindow", "Dokument hinzufügen")) - self.btn_open_document.setText(_translate("MainWindow", "Dokument öffnen")) - self.toolButton.setText(_translate("MainWindow", "...")) - self.label_7.setText(_translate("MainWindow", "Suche")) - self.search_media.setPlaceholderText( - _translate("MainWindow", "Buch oder Signatur") - ) - self.label.setText(_translate("MainWindow", "Medienliste")) - item = self.tableWidget_apparat_media.horizontalHeaderItem(0) - item.setText(_translate("MainWindow", "Buchtitel")) - item = self.tableWidget_apparat_media.horizontalHeaderItem(1) - item.setText(_translate("MainWindow", "Autor")) - item = self.tableWidget_apparat_media.horizontalHeaderItem(2) - item.setText(_translate("MainWindow", "Auflage")) - item = self.tableWidget_apparat_media.horizontalHeaderItem(3) - item.setText(_translate("MainWindow", "Signatur")) - self.search.setToolTip( - _translate( - "MainWindow", - "Sucht im Katalog nach allen Medien, die die Apparatsnummer enthalten", - ) - ) - self.search.setText(_translate("MainWindow", "Suche")) - self.add_medium.setText(_translate("MainWindow", "Medium hinzufügen")) - self.tabWidget.setTabText( - self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Tab 1") - ) - self.tabWidget.setTabText( - self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Tab 2") - ) - self.menuDatei.setTitle(_translate("MainWindow", "Datei")) - self.menuEinstellungen.setTitle(_translate("MainWindow", "Einstellungen")) - - -if __name__ == "__main__": - import sys - - app = QtWidgets.QApplication(sys.argv) - MainWindow = QtWidgets.QMainWindow() - ui = Ui_MainWindow() - ui.setupUi(MainWindow) - MainWindow.show() - sys.exit(app.exec()) diff --git a/src/ui/semesterapparat_ui.ts b/src/ui/semesterapparat_ui.ts deleted file mode 100644 index 6a28a55..0000000 --- a/src/ui/semesterapparat_ui.ts +++ /dev/null @@ -1,234 +0,0 @@ - - - - - MainWindow - - - MainWindow - - - - - Tab 1 - - - - - Load the Semesterapparate from the database - - - - - App. aufrufen - - - - - neu. App anlegen - - - - - AppNr - - - - - App Name - - - - - Professor - - - - - - Dauerapparat - - - - - KontoNr - - - - - Dateityp - - - - - Neu? - - - - - path - - - - - Mail - - - - - Tel - - - - - Fach - - - - - - - - - - * - - - - - Buchtitel - - - - - Autor - - - - - Auflage - - - - - Signatur - - - - - Beenden - - - - - Apparatsdetails - - - - - Dokumentname - - - - - Apparatsname - - - - - Winter - - - - - Prof. Name - - - - - Sommer - - - - - Prof. Titel - - - - - Semester - - - - - 2023 - - - - - Apparatsnummer - - - - - Speichern - - - - - Aktualisieren - - - - - Dokument hinzufügen - - - - - Dokument öffnen - - - - - - Suche - - - - - Buch oder Signatur - - - - - Medienliste - - - - - Sucht im Katalog nach allen Medien, die die Apparatsnummer enthalten - - - - - Medium hinzufügen - - - - - Tab 2 - - - - - Datei - - - - - Einstellungen - - - - diff --git a/src/ui/semesterapparat_ui_ui.py b/src/ui/semesterapparat_ui_ui.py deleted file mode 100644 index b5fc69e..0000000 --- a/src/ui/semesterapparat_ui_ui.py +++ /dev/null @@ -1,1963 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################ -## Form generated from reading UI file 'semesterapparat_ui.ui' -## -## Created by: Qt User Interface Compiler version 6.6.2 -## -## WARNING! All changes made in this file will be lost when recompiling UI file! -################################################################################ - -from PyQt6.QtCore import ( - QCoreApplication, - QDate, - QDateTime, - QLocale, - QMetaObject, - QObject, - QPoint, - QRect, - QSize, - Qt, - QTime, - QUrl, -) -from PyQt6.QtGui import ( - QBrush, - QColor, - QConicalGradient, - QCursor, - QFont, - QFontDatabase, - QGradient, - QIcon, - QImage, - QKeySequence, - QLinearGradient, - QPainter, - QPalette, - QPixmap, - QRadialGradient, - QTransform, - QWidgetAction, -) -from PyQt6.QtWidgets import ( - QAbstractItemView, - QAbstractScrollArea, - QApplication, - QCalendarWidget, - QCheckBox, - QComboBox, - QFormLayout, - QFrame, - QGridLayout, - QGroupBox, - QHBoxLayout, - QHeaderView, - QLabel, - QLineEdit, - QMainWindow, - QMenu, - QMenuBar, - QPushButton, - QRadioButton, - QSizePolicy, - QSpacerItem, - QSpinBox, - QStackedWidget, - QStatusBar, - QTableWidget, - QTableWidgetItem, - QTabWidget, - QTextEdit, - QVBoxLayout, - QWidget, -) - - -class Ui_MainWindow(object): - def setupUi(self, MainWindow): - if not MainWindow.objectName(): - MainWindow.setObjectName("MainWindow") - MainWindow.setWindowModality(Qt.WindowModal) - MainWindow.setEnabled(True) - MainWindow.resize(1601, 800) - sizePolicy = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) - MainWindow.setSizePolicy(sizePolicy) - MainWindow.setMinimumSize(QSize(1278, 800)) - MainWindow.setMaximumSize(QSize(1920, 800)) - MainWindow.setContextMenuPolicy(Qt.NoContextMenu) - self.actionBeenden = QWidgetAction(MainWindow) - self.actionBeenden.setObjectName("actionBeenden") - self.actionBeenden.setShortcutVisibleInContextMenu(True) - self.actionEinstellungen = QWidgetAction(MainWindow) - self.actionEinstellungen.setObjectName("actionEinstellungen") - self.actionEinstellungen.setShortcutVisibleInContextMenu(True) - self.actionDokumentation = QWidgetAction(MainWindow) - self.actionDokumentation.setObjectName("actionDokumentation") - self.actionDokumentation.setShortcutContext(Qt.ApplicationShortcut) - self.centralwidget = QWidget(MainWindow) - self.centralwidget.setObjectName("centralwidget") - sizePolicy.setHeightForWidth( - self.centralwidget.sizePolicy().hasHeightForWidth() - ) - self.centralwidget.setSizePolicy(sizePolicy) - self.verticalLayoutWidget = QWidget(self.centralwidget) - self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") - self.verticalLayoutWidget.setGeometry(QRect(0, 0, 1271, 761)) - self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget) - self.verticalLayout.setObjectName("verticalLayout") - self.verticalLayout.setContentsMargins(0, 0, 0, 0) - self.horizontalLayout = QHBoxLayout() - self.horizontalLayout.setObjectName("horizontalLayout") - self.gridLayout = QGridLayout() - self.gridLayout.setObjectName("gridLayout") - self.tabWidget = QTabWidget(self.verticalLayoutWidget) - self.tabWidget.setObjectName("tabWidget") - self.tabWidget.setFocusPolicy(Qt.NoFocus) - self.tab = QWidget() - self.tab.setObjectName("tab") - sizePolicy1 = QSizePolicy( - QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred - ) - sizePolicy1.setHorizontalStretch(0) - sizePolicy1.setVerticalStretch(0) - sizePolicy1.setHeightForWidth(self.tab.sizePolicy().hasHeightForWidth()) - self.tab.setSizePolicy(sizePolicy1) - self.horizontalLayoutWidget_2 = QWidget(self.tab) - self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2") - self.horizontalLayoutWidget_2.setGeometry(QRect(0, 0, 1261, 163)) - self.horizontalLayout_2 = QHBoxLayout(self.horizontalLayoutWidget_2) - self.horizontalLayout_2.setObjectName("horizontalLayout_2") - self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) - self.formLayout = QFormLayout() - self.formLayout.setObjectName("formLayout") - self.verticalLayout_2 = QVBoxLayout() - self.verticalLayout_2.setObjectName("verticalLayout_2") - self.verticalSpacer = QSpacerItem( - 20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding - ) - - self.verticalLayout_2.addItem(self.verticalSpacer) - - self.load_app = QPushButton(self.horizontalLayoutWidget_2) - self.load_app.setObjectName("load_app") - self.load_app.setFocusPolicy(Qt.NoFocus) - - self.verticalLayout_2.addWidget(self.load_app) - - self.create_new_app = QPushButton(self.horizontalLayoutWidget_2) - self.create_new_app.setObjectName("create_new_app") - self.create_new_app.setFocusPolicy(Qt.NoFocus) - - self.verticalLayout_2.addWidget(self.create_new_app) - - self.cancel_active_selection = QPushButton(self.horizontalLayoutWidget_2) - self.cancel_active_selection.setObjectName("cancel_active_selection") - self.cancel_active_selection.setFocusPolicy(Qt.NoFocus) - - self.verticalLayout_2.addWidget(self.cancel_active_selection) - - self.verticalSpacer_2 = QSpacerItem( - 20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding - ) - - self.verticalLayout_2.addItem(self.verticalSpacer_2) - - self.formLayout.setLayout(1, QFormLayout.LabelRole, self.verticalLayout_2) - - self.tableWidget_apparate = QTableWidget(self.horizontalLayoutWidget_2) - if self.tableWidget_apparate.columnCount() < 6: - self.tableWidget_apparate.setColumnCount(6) - __qtablewidgetitem = QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(0, __qtablewidgetitem) - __qtablewidgetitem1 = QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(1, __qtablewidgetitem1) - __qtablewidgetitem2 = QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(2, __qtablewidgetitem2) - __qtablewidgetitem3 = QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(3, __qtablewidgetitem3) - __qtablewidgetitem4 = QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(4, __qtablewidgetitem4) - __qtablewidgetitem5 = QTableWidgetItem() - self.tableWidget_apparate.setHorizontalHeaderItem(5, __qtablewidgetitem5) - self.tableWidget_apparate.setObjectName("tableWidget_apparate") - self.tableWidget_apparate.setFocusPolicy(Qt.NoFocus) - self.tableWidget_apparate.setSizeAdjustPolicy( - QAbstractScrollArea.AdjustToContents - ) - self.tableWidget_apparate.setEditTriggers(QAbstractItemView.SelectedClicked) - self.tableWidget_apparate.setAlternatingRowColors(True) - self.tableWidget_apparate.setTextElideMode(Qt.ElideMiddle) - self.tableWidget_apparate.setSortingEnabled(True) - self.tableWidget_apparate.horizontalHeader().setCascadingSectionResizes(True) - - self.formLayout.setWidget(1, QFormLayout.FieldRole, self.tableWidget_apparate) - - self.horizontalLayout_4 = QHBoxLayout() - self.horizontalLayout_4.setObjectName("horizontalLayout_4") - - self.formLayout.setLayout(2, QFormLayout.FieldRole, self.horizontalLayout_4) - - self.horizontalLayout_3 = QHBoxLayout() - self.horizontalLayout_3.setObjectName("horizontalLayout_3") - - self.formLayout.setLayout(3, QFormLayout.LabelRole, self.horizontalLayout_3) - - self.horizontalLayout_2.addLayout(self.formLayout) - - self.line = QFrame(self.tab) - self.line.setObjectName("line") - self.line.setGeometry(QRect(0, 160, 1261, 21)) - self.line.setFrameShape(QFrame.HLine) - self.line.setFrameShadow(QFrame.Sunken) - self.gridLayoutWidget_2 = QWidget(self.tab) - self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2") - self.gridLayoutWidget_2.setEnabled(True) - self.gridLayoutWidget_2.setGeometry(QRect(0, 180, 1261, 511)) - self.gridLayout_2 = QGridLayout(self.gridLayoutWidget_2) - self.gridLayout_2.setObjectName("gridLayout_2") - self.gridLayout_2.setContentsMargins(0, 0, 0, 0) - self.app_group_box = QGroupBox(self.gridLayoutWidget_2) - self.app_group_box.setObjectName("app_group_box") - sizePolicy2 = QSizePolicy( - QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed - ) - sizePolicy2.setHorizontalStretch(0) - sizePolicy2.setVerticalStretch(0) - sizePolicy2.setHeightForWidth( - self.app_group_box.sizePolicy().hasHeightForWidth() - ) - self.app_group_box.setSizePolicy(sizePolicy2) - self.app_group_box.setMinimumSize(QSize(0, 210)) - font = QFont() - font.setPointSize(12) - font.setBold(True) - self.app_group_box.setFont(font) - self.app_group_box.setAlignment( - Qt.AlignLeading | Qt.AlignLeft | Qt.AlignVCenter - ) - self.app_group_box.setCheckable(False) - self.dokument_list = QTableWidget(self.app_group_box) - if self.dokument_list.columnCount() < 4: - self.dokument_list.setColumnCount(4) - font1 = QFont() - font1.setFamilies(["Arial"]) - font1.setPointSize(8) - __qtablewidgetitem6 = QTableWidgetItem() - __qtablewidgetitem6.setFont(font1) - self.dokument_list.setHorizontalHeaderItem(0, __qtablewidgetitem6) - __qtablewidgetitem7 = QTableWidgetItem() - __qtablewidgetitem7.setFont(font1) - self.dokument_list.setHorizontalHeaderItem(1, __qtablewidgetitem7) - __qtablewidgetitem8 = QTableWidgetItem() - __qtablewidgetitem8.setFont(font1) - self.dokument_list.setHorizontalHeaderItem(2, __qtablewidgetitem8) - __qtablewidgetitem9 = QTableWidgetItem() - self.dokument_list.setHorizontalHeaderItem(3, __qtablewidgetitem9) - self.dokument_list.setObjectName("dokument_list") - self.dokument_list.setGeometry(QRect(765, 20, 321, 181)) - font2 = QFont() - font2.setPointSize(10) - font2.setBold(False) - font2.setKerning(False) - self.dokument_list.setFont(font2) - self.dokument_list.setFocusPolicy(Qt.NoFocus) - self.dokument_list.setAcceptDrops(True) - self.dokument_list.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToContents) - self.dokument_list.setDragEnabled(True) - self.dokument_list.setDragDropMode(QAbstractItemView.DropOnly) - self.dokument_list.setDefaultDropAction(Qt.LinkAction) - self.dokument_list.setSelectionMode(QAbstractItemView.SingleSelection) - self.frame = QFrame(self.app_group_box) - self.frame.setObjectName("frame") - self.frame.setEnabled(True) - self.frame.setGeometry(QRect(10, 30, 1241, 151)) - sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth()) - self.frame.setSizePolicy(sizePolicy) - self.frame.setFrameShape(QFrame.StyledPanel) - self.frame.setFrameShadow(QFrame.Raised) - self.label_5 = QLabel(self.frame) - self.label_5.setObjectName("label_5") - self.label_5.setGeometry(QRect(250, 20, 91, 21)) - font3 = QFont() - font3.setPointSize(9) - font3.setBold(False) - self.label_5.setFont(font3) - self.sem_winter = QRadioButton(self.frame) - self.sem_winter.setObjectName("sem_winter") - self.sem_winter.setGeometry(QRect(340, 50, 82, 17)) - self.sem_winter.setFont(font3) - self.sem_winter.setFocusPolicy(Qt.NoFocus) - self.label_4 = QLabel(self.frame) - self.label_4.setObjectName("label_4") - self.label_4.setGeometry(QRect(10, 80, 71, 21)) - self.label_4.setFont(font3) - self.drpdwn_app_nr = QComboBox(self.frame) - self.drpdwn_app_nr.setObjectName("drpdwn_app_nr") - self.drpdwn_app_nr.setGeometry(QRect(110, 20, 69, 22)) - self.drpdwn_app_nr.setFont(font3) - self.drpdwn_app_nr.setInputMethodHints(Qt.ImhDigitsOnly) - self.drpdwn_app_nr.setEditable(True) - self.app_name = QLineEdit(self.frame) - self.app_name.setObjectName("app_name") - self.app_name.setGeometry(QRect(340, 20, 113, 20)) - self.app_name.setFont(font3) - self.app_name.setFocusPolicy(Qt.StrongFocus) - self.sem_sommer = QRadioButton(self.frame) - self.sem_sommer.setObjectName("sem_sommer") - self.sem_sommer.setGeometry(QRect(340, 70, 82, 17)) - self.sem_sommer.setFont(font3) - self.sem_sommer.setFocusPolicy(Qt.NoFocus) - self.label_3 = QLabel(self.frame) - self.label_3.setObjectName("label_3") - self.label_3.setGeometry(QRect(10, 50, 61, 20)) - self.label_3.setFont(font3) - self.label_6 = QLabel(self.frame) - self.label_6.setObjectName("label_6") - self.label_6.setGeometry(QRect(270, 60, 61, 21)) - self.label_6.setFont(font3) - self.sem_year = QLineEdit(self.frame) - self.sem_year.setObjectName("sem_year") - self.sem_year.setGeometry(QRect(410, 60, 113, 20)) - self.sem_year.setFont(font3) - self.sem_year.setFocusPolicy(Qt.StrongFocus) - self.sem_year.setMaxLength(4) - self.label_2 = QLabel(self.frame) - self.label_2.setObjectName("label_2") - self.label_2.setGeometry(QRect(10, 20, 101, 21)) - self.label_2.setFont(font3) - self.btn_apparat_save = QPushButton(self.frame) - self.btn_apparat_save.setObjectName("btn_apparat_save") - self.btn_apparat_save.setGeometry(QRect(260, 120, 75, 23)) - self.btn_apparat_save.setFont(font3) - self.btn_apparat_apply = QPushButton(self.frame) - self.btn_apparat_apply.setObjectName("btn_apparat_apply") - self.btn_apparat_apply.setGeometry(QRect(350, 120, 75, 23)) - self.btn_apparat_apply.setFont(font3) - self.check_eternal_app = QCheckBox(self.frame) - self.check_eternal_app.setObjectName("check_eternal_app") - self.check_eternal_app.setGeometry(QRect(340, 90, 101, 17)) - self.check_eternal_app.setFont(font3) - self.label_8 = QLabel(self.frame) - self.label_8.setObjectName("label_8") - self.label_8.setGeometry(QRect(10, 110, 71, 21)) - self.label_8.setFont(font3) - self.prof_mail = QLineEdit(self.frame) - self.prof_mail.setObjectName("prof_mail") - self.prof_mail.setGeometry(QRect(110, 110, 121, 20)) - self.prof_mail.setFont(font3) - self.prof_mail.setInputMethodHints(Qt.ImhEmailCharactersOnly) - self.prof_mail.setMaxLength(200) - self.label_9 = QLabel(self.frame) - self.label_9.setObjectName("label_9") - self.label_9.setGeometry(QRect(10, 130, 71, 21)) - self.label_9.setFont(font3) - self.prof_tel_nr = QLineEdit(self.frame) - self.prof_tel_nr.setObjectName("prof_tel_nr") - self.prof_tel_nr.setGeometry(QRect(110, 130, 121, 20)) - self.prof_tel_nr.setFont(font3) - self.prof_tel_nr.setInputMethodHints(Qt.ImhDigitsOnly) - self.label_10 = QLabel(self.frame) - self.label_10.setObjectName("label_10") - self.label_10.setGeometry(QRect(470, 20, 51, 21)) - self.label_10.setFont(font3) - self.drpdwn_prof_name = QComboBox(self.frame) - self.drpdwn_prof_name.setObjectName("drpdwn_prof_name") - self.drpdwn_prof_name.setGeometry(QRect(110, 80, 121, 22)) - font4 = QFont() - font4.setPointSize(8) - font4.setBold(False) - self.drpdwn_prof_name.setFont(font4) - self.drpdwn_prof_name.setFocusPolicy(Qt.StrongFocus) - self.drpdwn_prof_name.setEditable(True) - self.drpdwn_prof_name.setInsertPolicy(QComboBox.InsertAlphabetically) - self.drpdwn_prof_name.setFrame(True) - self.mail_mand = QLabel(self.frame) - self.mail_mand.setObjectName("mail_mand") - self.mail_mand.setGeometry(QRect(100, 110, 47, 21)) - self.mail_mand.setFont(font3) - self.telnr_mand = QLabel(self.frame) - self.telnr_mand.setObjectName("telnr_mand") - self.telnr_mand.setGeometry(QRect(100, 130, 47, 21)) - self.telnr_mand.setFont(font3) - self.profname_mand = QLabel(self.frame) - self.profname_mand.setObjectName("profname_mand") - self.profname_mand.setGeometry(QRect(100, 80, 47, 21)) - self.profname_mand.setFont(font3) - self.appname_mand = QLabel(self.frame) - self.appname_mand.setObjectName("appname_mand") - self.appname_mand.setGeometry(QRect(330, 20, 16, 21)) - self.appname_mand.setFont(font3) - self.fach_mand = QLabel(self.frame) - self.fach_mand.setObjectName("fach_mand") - self.fach_mand.setGeometry(QRect(500, 20, 47, 21)) - self.fach_mand.setFont(font3) - self.fach_mand.setFocusPolicy(Qt.NoFocus) - self._mand = QLabel(self.frame) - self._mand.setObjectName("_mand") - self._mand.setGeometry(QRect(330, 60, 16, 21)) - self._mand.setFont(font3) - self.btn_add_document = QPushButton(self.frame) - self.btn_add_document.setObjectName("btn_add_document") - self.btn_add_document.setGeometry(QRect(1090, 20, 131, 25)) - self.btn_add_document.setFont(font3) - self.btn_open_document = QPushButton(self.frame) - self.btn_open_document.setObjectName("btn_open_document") - self.btn_open_document.setGeometry(QRect(1090, 60, 131, 25)) - self.btn_open_document.setFont(font3) - self.check_file = QPushButton(self.frame) - self.check_file.setObjectName("check_file") - self.check_file.setGeometry(QRect(1090, 100, 131, 51)) - self.check_file.setFont(font3) - self.formLayoutWidget_2 = QWidget(self.frame) - self.formLayoutWidget_2.setObjectName("formLayoutWidget_2") - self.formLayoutWidget_2.setGeometry(QRect(550, 70, 202, 80)) - self.formLayout_3 = QFormLayout(self.formLayoutWidget_2) - self.formLayout_3.setObjectName("formLayout_3") - self.formLayout_3.setContentsMargins(0, 0, 0, 0) - self.label_12 = QLabel(self.formLayoutWidget_2) - self.label_12.setObjectName("label_12") - self.label_12.setFont(font3) - - self.formLayout_3.setWidget(0, QFormLayout.LabelRole, self.label_12) - - self.prof_id_adis = QLineEdit(self.formLayoutWidget_2) - self.prof_id_adis.setObjectName("prof_id_adis") - self.prof_id_adis.setFont(font3) - - self.formLayout_3.setWidget(0, QFormLayout.FieldRole, self.prof_id_adis) - - self.label_13 = QLabel(self.formLayoutWidget_2) - self.label_13.setObjectName("label_13") - self.label_13.setFont(font3) - - self.formLayout_3.setWidget(1, QFormLayout.LabelRole, self.label_13) - - self.apparat_id_adis = QLineEdit(self.formLayoutWidget_2) - self.apparat_id_adis.setObjectName("apparat_id_adis") - - self.formLayout_3.setWidget(1, QFormLayout.FieldRole, self.apparat_id_adis) - - self.check_send_mail = QCheckBox(self.frame) - self.check_send_mail.setObjectName("check_send_mail") - self.check_send_mail.setGeometry(QRect(450, 120, 91, 17)) - self.check_send_mail.setFont(font3) - self.frame_3 = QFrame(self.frame) - self.frame_3.setObjectName("frame_3") - self.frame_3.setGeometry(QRect(510, 0, 241, 61)) - self.frame_3.setFrameShape(QFrame.StyledPanel) - self.frame_3.setFrameShadow(QFrame.Raised) - self.gridLayoutWidget_5 = QWidget(self.frame_3) - self.gridLayoutWidget_5.setObjectName("gridLayoutWidget_5") - self.gridLayoutWidget_5.setGeometry(QRect(0, 0, 241, 61)) - self.gridLayout_6 = QGridLayout(self.gridLayoutWidget_5) - self.gridLayout_6.setObjectName("gridLayout_6") - self.gridLayout_6.setContentsMargins(0, 0, 0, 0) - self.app_fach = QComboBox(self.gridLayoutWidget_5) - self.app_fach.setObjectName("app_fach") - self.app_fach.setMaximumSize(QSize(16777215, 20)) - self.app_fach.setFont(font3) - - self.gridLayout_6.addWidget(self.app_fach, 0, 0, 1, 1) - - self.horizontalSpacer_7 = QSpacerItem( - 40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum - ) - - self.gridLayout_6.addItem(self.horizontalSpacer_7, 0, 1, 1, 1) - - self.prof_title = QLineEdit(self.frame) - self.prof_title.setObjectName("prof_title") - self.prof_title.setGeometry(QRect(110, 50, 71, 20)) - self.prof_title.setFont(font3) - self.prof_title.setFocusPolicy(Qt.StrongFocus) - self.mail_mand.raise_() - self._mand.raise_() - self.label_5.raise_() - self.sem_winter.raise_() - self.label_4.raise_() - self.drpdwn_app_nr.raise_() - self.sem_sommer.raise_() - self.label_3.raise_() - self.label_6.raise_() - self.sem_year.raise_() - self.label_2.raise_() - self.btn_apparat_save.raise_() - self.btn_apparat_apply.raise_() - self.check_eternal_app.raise_() - self.label_8.raise_() - self.label_9.raise_() - self.label_10.raise_() - self.telnr_mand.raise_() - self.profname_mand.raise_() - self.appname_mand.raise_() - self.fach_mand.raise_() - self.btn_add_document.raise_() - self.btn_open_document.raise_() - self.app_name.raise_() - self.prof_tel_nr.raise_() - self.drpdwn_prof_name.raise_() - self.prof_mail.raise_() - self.check_file.raise_() - self.formLayoutWidget_2.raise_() - self.check_send_mail.raise_() - self.frame_3.raise_() - self.prof_title.raise_() - self.frame.raise_() - self.dokument_list.raise_() - - self.gridLayout_2.addWidget(self.app_group_box, 1, 0, 1, 1) - - self.tableWidget_apparat_media = QTableWidget(self.gridLayoutWidget_2) - if self.tableWidget_apparat_media.columnCount() < 7: - self.tableWidget_apparat_media.setColumnCount(7) - __qtablewidgetitem10 = QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(0, __qtablewidgetitem10) - __qtablewidgetitem11 = QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(1, __qtablewidgetitem11) - __qtablewidgetitem12 = QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(2, __qtablewidgetitem12) - __qtablewidgetitem13 = QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(3, __qtablewidgetitem13) - __qtablewidgetitem14 = QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(4, __qtablewidgetitem14) - __qtablewidgetitem15 = QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(5, __qtablewidgetitem15) - __qtablewidgetitem16 = QTableWidgetItem() - self.tableWidget_apparat_media.setHorizontalHeaderItem(6, __qtablewidgetitem16) - self.tableWidget_apparat_media.setObjectName("tableWidget_apparat_media") - sizePolicy3 = QSizePolicy( - QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expanding - ) - sizePolicy3.setHorizontalStretch(0) - sizePolicy3.setVerticalStretch(0) - sizePolicy3.setHeightForWidth( - self.tableWidget_apparat_media.sizePolicy().hasHeightForWidth() - ) - self.tableWidget_apparat_media.setSizePolicy(sizePolicy3) - self.tableWidget_apparat_media.setMinimumSize(QSize(1259, 0)) - self.tableWidget_apparat_media.setFocusPolicy(Qt.NoFocus) - self.tableWidget_apparat_media.setContextMenuPolicy(Qt.CustomContextMenu) - self.tableWidget_apparat_media.setSizeAdjustPolicy( - QAbstractScrollArea.AdjustToContents - ) - self.tableWidget_apparat_media.setEditTriggers(QAbstractItemView.NoEditTriggers) - self.tableWidget_apparat_media.setAlternatingRowColors(True) - self.tableWidget_apparat_media.setSelectionBehavior( - QAbstractItemView.SelectRows - ) - self.tableWidget_apparat_media.setSortingEnabled(True) - self.tableWidget_apparat_media.horizontalHeader().setCascadingSectionResizes( - True - ) - - self.gridLayout_2.addWidget(self.tableWidget_apparat_media, 9, 0, 1, 1) - - self.label = QLabel(self.gridLayoutWidget_2) - self.label.setObjectName("label") - font5 = QFont() - font5.setPointSize(11) - font5.setBold(True) - self.label.setFont(font5) - - self.gridLayout_2.addWidget(self.label, 2, 0, 1, 1) - - self.horizontalLayout_5 = QHBoxLayout() - self.horizontalLayout_5.setObjectName("horizontalLayout_5") - self.horizontalSpacer = QSpacerItem( - 20, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum - ) - - self.horizontalLayout_5.addItem(self.horizontalSpacer) - - self.chkbx_show_del_media = QCheckBox(self.gridLayoutWidget_2) - self.chkbx_show_del_media.setObjectName("chkbx_show_del_media") - - self.horizontalLayout_5.addWidget(self.chkbx_show_del_media) - - self.horizontalSpacer_3 = QSpacerItem( - 40, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum - ) - - self.horizontalLayout_5.addItem(self.horizontalSpacer_3) - - self.btn_reserve = QPushButton(self.gridLayoutWidget_2) - self.btn_reserve.setObjectName("btn_reserve") - - self.horizontalLayout_5.addWidget(self.btn_reserve) - - self.add_layout = QHBoxLayout() - self.add_layout.setObjectName("add_layout") - self.label_info = QLabel(self.gridLayoutWidget_2) - self.label_info.setObjectName("label_info") - - self.add_layout.addWidget(self.label_info) - - self.line_2 = QFrame(self.gridLayoutWidget_2) - self.line_2.setObjectName("line_2") - self.line_2.setFrameShape(QFrame.VLine) - self.line_2.setFrameShadow(QFrame.Sunken) - - self.add_layout.addWidget(self.line_2) - - self.progress_label = QLabel(self.gridLayoutWidget_2) - self.progress_label.setObjectName("progress_label") - - self.add_layout.addWidget(self.progress_label) - - self.horizontalLayout_5.addLayout(self.add_layout) - - self.horizontalSpacer_4 = QSpacerItem( - 40, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum - ) - - self.horizontalLayout_5.addItem(self.horizontalSpacer_4) - - self.avail_layout = QHBoxLayout() - self.avail_layout.setObjectName("avail_layout") - - self.horizontalLayout_5.addLayout(self.avail_layout) - - self.label_20 = QLabel(self.gridLayoutWidget_2) - self.label_20.setObjectName("label_20") - - self.horizontalLayout_5.addWidget(self.label_20) - - self.line_3 = QFrame(self.gridLayoutWidget_2) - self.line_3.setObjectName("line_3") - self.line_3.setFrameShape(QFrame.VLine) - self.line_3.setFrameShadow(QFrame.Sunken) - - self.horizontalLayout_5.addWidget(self.line_3) - - self.avail_status = QLabel(self.gridLayoutWidget_2) - self.avail_status.setObjectName("avail_status") - - self.horizontalLayout_5.addWidget(self.avail_status) - - self.horizontalSpacer_2 = QSpacerItem( - 40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum - ) - - self.horizontalLayout_5.addItem(self.horizontalSpacer_2) - - self.gridLayout_2.addLayout(self.horizontalLayout_5, 4, 0, 1, 1) - - self.add_medium = QPushButton(self.tab) - self.add_medium.setObjectName("add_medium") - self.add_medium.setGeometry(QRect(0, 700, 121, 20)) - self.add_medium.setFocusPolicy(Qt.NoFocus) - self.tabWidget.addTab(self.tab, "") - self.tab_2 = QWidget() - self.tab_2.setObjectName("tab_2") - self.verticalLayoutWidget_2 = QWidget(self.tab_2) - self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2") - self.verticalLayoutWidget_2.setGeometry(QRect(0, 0, 1251, 721)) - self.verticalLayout_3 = QVBoxLayout(self.verticalLayoutWidget_2) - self.verticalLayout_3.setObjectName("verticalLayout_3") - self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) - self.tabWidget_2 = QTabWidget(self.verticalLayoutWidget_2) - self.tabWidget_2.setObjectName("tabWidget_2") - self.tabWidget_2.setMaximumSize(QSize(16777215, 250)) - self.tab_3 = QWidget() - self.tab_3.setObjectName("tab_3") - self.btn_search = QPushButton(self.tab_3) - self.btn_search.setObjectName("btn_search") - self.btn_search.setGeometry(QRect(10, 180, 75, 23)) - self.gridLayoutWidget = QWidget(self.tab_3) - self.gridLayoutWidget.setObjectName("gridLayoutWidget") - self.gridLayoutWidget.setGeometry(QRect(10, 10, 491, 161)) - self.gridLayout_3 = QGridLayout(self.gridLayoutWidget) - self.gridLayout_3.setObjectName("gridLayout_3") - self.gridLayout_3.setContentsMargins(0, 0, 0, 0) - self.label_7 = QLabel(self.gridLayoutWidget) - self.label_7.setObjectName("label_7") - - self.gridLayout_3.addWidget(self.label_7, 0, 0, 1, 1) - - self.box_erstellsemester = QComboBox(self.gridLayoutWidget) - self.box_erstellsemester.setObjectName("box_erstellsemester") - self.box_erstellsemester.setEditable(True) - - self.gridLayout_3.addWidget(self.box_erstellsemester, 1, 3, 1, 1) - - self.label_18 = QLabel(self.gridLayoutWidget) - self.label_18.setObjectName("label_18") - - self.gridLayout_3.addWidget(self.label_18, 2, 2, 1, 1) - - self.label_17 = QLabel(self.gridLayoutWidget) - self.label_17.setObjectName("label_17") - - self.gridLayout_3.addWidget(self.label_17, 0, 2, 1, 1) - - self.label_19 = QLabel(self.gridLayoutWidget) - self.label_19.setObjectName("label_19") - - self.gridLayout_3.addWidget(self.label_19, 1, 2, 1, 1) - - self.box_dauerapp = QComboBox(self.gridLayoutWidget) - self.box_dauerapp.setObjectName("box_dauerapp") - - self.gridLayout_3.addWidget(self.box_dauerapp, 2, 3, 1, 1) - - self.label_11 = QLabel(self.gridLayoutWidget) - self.label_11.setObjectName("label_11") - - self.gridLayout_3.addWidget(self.label_11, 1, 0, 1, 1) - - self.label_16 = QLabel(self.gridLayoutWidget) - self.label_16.setObjectName("label_16") - - self.gridLayout_3.addWidget(self.label_16, 2, 0, 1, 1) - - self.box_semester = QComboBox(self.gridLayoutWidget) - self.box_semester.setObjectName("box_semester") - self.box_semester.setEditable(True) - - self.gridLayout_3.addWidget(self.box_semester, 0, 3, 1, 1) - - self.box_appnrs = QComboBox(self.gridLayoutWidget) - self.box_appnrs.setObjectName("box_appnrs") - self.box_appnrs.setEditable(True) - - self.gridLayout_3.addWidget(self.box_appnrs, 0, 1, 1, 1) - - self.box_fach = QComboBox(self.gridLayoutWidget) - self.box_fach.setObjectName("box_fach") - self.box_fach.setEditable(True) - - self.gridLayout_3.addWidget(self.box_fach, 2, 1, 1, 1) - - self.box_person = QComboBox(self.gridLayoutWidget) - self.box_person.setObjectName("box_person") - self.box_person.setEditable(True) - - self.gridLayout_3.addWidget(self.box_person, 1, 1, 1, 1) - - self.verticalSpacer_3 = QSpacerItem( - 20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding - ) - - self.gridLayout_3.addItem(self.verticalSpacer_3, 4, 0, 1, 1) - - self.label_15 = QLabel(self.gridLayoutWidget) - self.label_15.setObjectName("label_15") - - self.gridLayout_3.addWidget(self.label_15, 3, 0, 1, 1) - - self.check_deletable = QCheckBox(self.gridLayoutWidget) - self.check_deletable.setObjectName("check_deletable") - self.check_deletable.setFocusPolicy(Qt.StrongFocus) - - self.gridLayout_3.addWidget(self.check_deletable, 3, 1, 1, 1) - - self.db_err_message = QLabel(self.tab_3) - self.db_err_message.setObjectName("db_err_message") - self.db_err_message.setGeometry(QRect(100, 180, 401, 23)) - self.tabWidget_2.addTab(self.tab_3, "") - self.tab_4 = QWidget() - self.tab_4.setObjectName("tab_4") - self.formLayoutWidget = QWidget(self.tab_4) - self.formLayoutWidget.setObjectName("formLayoutWidget") - self.formLayoutWidget.setGeometry(QRect(10, 10, 451, 151)) - self.formLayout_6 = QFormLayout(self.formLayoutWidget) - self.formLayout_6.setObjectName("formLayout_6") - self.formLayout_6.setContentsMargins(0, 0, 0, 0) - self.label_25 = QLabel(self.formLayoutWidget) - self.label_25.setObjectName("label_25") - - self.formLayout_6.setWidget(0, QFormLayout.LabelRole, self.label_25) - - self.book_search = QPushButton(self.formLayoutWidget) - self.book_search.setObjectName("book_search") - - self.formLayout_6.setWidget(3, QFormLayout.LabelRole, self.book_search) - - self.seach_by_signature = QLineEdit(self.formLayoutWidget) - self.seach_by_signature.setObjectName("seach_by_signature") - self.seach_by_signature.setClearButtonEnabled(True) - - self.formLayout_6.setWidget(0, QFormLayout.FieldRole, self.seach_by_signature) - - self.label_26 = QLabel(self.formLayoutWidget) - self.label_26.setObjectName("label_26") - - self.formLayout_6.setWidget(1, QFormLayout.LabelRole, self.label_26) - - self.search_by_title = QLineEdit(self.formLayoutWidget) - self.search_by_title.setObjectName("search_by_title") - self.search_by_title.setClearButtonEnabled(True) - - self.formLayout_6.setWidget(1, QFormLayout.FieldRole, self.search_by_title) - - self.verticalSpacer_4 = QSpacerItem( - 20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding - ) - - self.formLayout_6.setItem(2, QFormLayout.LabelRole, self.verticalSpacer_4) - - self.tabWidget_2.addTab(self.tab_4, "") - - self.verticalLayout_3.addWidget(self.tabWidget_2) - - self.stackedWidget_4 = QStackedWidget(self.verticalLayoutWidget_2) - self.stackedWidget_4.setObjectName("stackedWidget_4") - self.stackedWidget_4.setFrameShape(QFrame.StyledPanel) - self.stackedWidget_4.setFrameShadow(QFrame.Raised) - self.stackedWidget_4Page1 = QWidget() - self.stackedWidget_4Page1.setObjectName("stackedWidget_4Page1") - self.tabWidget_3 = QTabWidget(self.stackedWidget_4Page1) - self.tabWidget_3.setObjectName("tabWidget_3") - self.tabWidget_3.setGeometry(QRect(780, 10, 441, 441)) - self.tab_6 = QWidget() - self.tab_6.setObjectName("tab_6") - self.gridLayoutWidget_3 = QWidget(self.tab_6) - self.gridLayoutWidget_3.setObjectName("gridLayoutWidget_3") - self.gridLayoutWidget_3.setGeometry(QRect(0, 0, 431, 411)) - self.gridLayout_4 = QGridLayout(self.gridLayoutWidget_3) - self.gridLayout_4.setObjectName("gridLayout_4") - self.gridLayout_4.setContentsMargins(0, 0, 0, 0) - self.statistics_table = QTableWidget(self.gridLayoutWidget_3) - if self.statistics_table.columnCount() < 3: - self.statistics_table.setColumnCount(3) - __qtablewidgetitem17 = QTableWidgetItem() - self.statistics_table.setHorizontalHeaderItem(0, __qtablewidgetitem17) - __qtablewidgetitem18 = QTableWidgetItem() - self.statistics_table.setHorizontalHeaderItem(1, __qtablewidgetitem18) - __qtablewidgetitem19 = QTableWidgetItem() - self.statistics_table.setHorizontalHeaderItem(2, __qtablewidgetitem19) - self.statistics_table.setObjectName("statistics_table") - sizePolicy4 = QSizePolicy( - QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding - ) - sizePolicy4.setHorizontalStretch(0) - sizePolicy4.setVerticalStretch(0) - sizePolicy4.setHeightForWidth( - self.statistics_table.sizePolicy().hasHeightForWidth() - ) - self.statistics_table.setSizePolicy(sizePolicy4) - self.statistics_table.setMaximumSize(QSize(16777215, 16777215)) - self.statistics_table.setFocusPolicy(Qt.NoFocus) - self.statistics_table.setEditTriggers(QAbstractItemView.NoEditTriggers) - self.statistics_table.setAlternatingRowColors(True) - self.statistics_table.horizontalHeader().setCascadingSectionResizes(True) - self.statistics_table.horizontalHeader().setMinimumSectionSize(24) - self.statistics_table.horizontalHeader().setDefaultSectionSize(59) - self.statistics_table.horizontalHeader().setProperty("showSortIndicator", True) - self.statistics_table.horizontalHeader().setStretchLastSection(False) - - self.gridLayout_4.addWidget(self.statistics_table, 0, 0, 1, 1) - - self.tabWidget_3.addTab(self.tab_6, "") - self.tab_7 = QWidget() - self.tab_7.setObjectName("tab_7") - self.tabWidget_3.addTab(self.tab_7, "") - self.widget = QWidget(self.stackedWidget_4Page1) - self.widget.setObjectName("widget") - self.widget.setGeometry(QRect(10, 10, 761, 441)) - self.horizontalLayoutWidget_3 = QWidget(self.widget) - self.horizontalLayoutWidget_3.setObjectName("horizontalLayoutWidget_3") - self.horizontalLayoutWidget_3.setGeometry(QRect(0, 0, 761, 51)) - self.horizontalLayout_7 = QHBoxLayout(self.horizontalLayoutWidget_3) - self.horizontalLayout_7.setObjectName("horizontalLayout_7") - self.horizontalLayout_7.setContentsMargins(0, 0, 0, 0) - self.btn_del_select_apparats = QPushButton(self.horizontalLayoutWidget_3) - self.btn_del_select_apparats.setObjectName("btn_del_select_apparats") - self.btn_del_select_apparats.setFocusPolicy(Qt.StrongFocus) - - self.horizontalLayout_7.addWidget(self.btn_del_select_apparats) - - self.horizontalSpacer_5 = QSpacerItem( - 40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum - ) - - self.horizontalLayout_7.addItem(self.horizontalSpacer_5) - - self.table = QWidget(self.widget) - self.table.setObjectName("table") - self.table.setGeometry(QRect(0, 50, 761, 391)) - self.tableWidget = QTableWidget(self.table) - if self.tableWidget.columnCount() < 5: - self.tableWidget.setColumnCount(5) - __qtablewidgetitem20 = QTableWidgetItem() - self.tableWidget.setHorizontalHeaderItem(0, __qtablewidgetitem20) - __qtablewidgetitem21 = QTableWidgetItem() - self.tableWidget.setHorizontalHeaderItem(1, __qtablewidgetitem21) - __qtablewidgetitem22 = QTableWidgetItem() - self.tableWidget.setHorizontalHeaderItem(2, __qtablewidgetitem22) - __qtablewidgetitem23 = QTableWidgetItem() - self.tableWidget.setHorizontalHeaderItem(3, __qtablewidgetitem23) - __qtablewidgetitem24 = QTableWidgetItem() - self.tableWidget.setHorizontalHeaderItem(4, __qtablewidgetitem24) - self.tableWidget.setObjectName("tableWidget") - self.tableWidget.setGeometry(QRect(0, 0, 761, 391)) - self.tableWidget.setFocusPolicy(Qt.NoFocus) - self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers) - self.stackedWidget_4.addWidget(self.stackedWidget_4Page1) - self.page = QWidget() - self.page.setObjectName("page") - self.book_search_result = QTableWidget(self.page) - if self.book_search_result.columnCount() < 3: - self.book_search_result.setColumnCount(3) - __qtablewidgetitem25 = QTableWidgetItem() - self.book_search_result.setHorizontalHeaderItem(0, __qtablewidgetitem25) - __qtablewidgetitem26 = QTableWidgetItem() - self.book_search_result.setHorizontalHeaderItem(1, __qtablewidgetitem26) - __qtablewidgetitem27 = QTableWidgetItem() - self.book_search_result.setHorizontalHeaderItem(2, __qtablewidgetitem27) - self.book_search_result.setObjectName("book_search_result") - self.book_search_result.setGeometry(QRect(10, 20, 1081, 421)) - self.book_search_result.setFrameShadow(QFrame.Plain) - self.book_search_result.setEditTriggers(QAbstractItemView.NoEditTriggers) - self.book_search_result.setAlternatingRowColors(True) - self.book_search_result.horizontalHeader().setCascadingSectionResizes(True) - self.book_search_result.horizontalHeader().setStretchLastSection(True) - self.stackedWidget_4.addWidget(self.page) - - self.verticalLayout_3.addWidget(self.stackedWidget_4) - - self.tabWidget.addTab(self.tab_2, "") - self.tab_5 = QWidget() - self.tab_5.setObjectName("tab_5") - self.label_21 = QLabel(self.tab_5) - self.label_21.setObjectName("label_21") - self.label_21.setGeometry(QRect(10, 30, 47, 22)) - self.select_action_box = QComboBox(self.tab_5) - self.select_action_box.addItem("") - self.select_action_box.addItem("") - self.select_action_box.addItem("") - self.select_action_box.addItem("") - self.select_action_box.setObjectName("select_action_box") - self.select_action_box.setGeometry(QRect(70, 30, 181, 22)) - self.user_create_frame = QFrame(self.tab_5) - self.user_create_frame.setObjectName("user_create_frame") - self.user_create_frame.setGeometry(QRect(10, 60, 591, 141)) - self.user_create_frame.setFrameShape(QFrame.StyledPanel) - self.user_create_frame.setFrameShadow(QFrame.Raised) - self.gridLayoutWidget_4 = QWidget(self.user_create_frame) - self.gridLayoutWidget_4.setObjectName("gridLayoutWidget_4") - self.gridLayoutWidget_4.setGeometry(QRect(0, 0, 581, 141)) - self.gridLayout_5 = QGridLayout(self.gridLayoutWidget_4) - self.gridLayout_5.setObjectName("gridLayout_5") - self.gridLayout_5.setContentsMargins(0, 0, 0, 0) - self.label_22 = QLabel(self.gridLayoutWidget_4) - self.label_22.setObjectName("label_22") - - self.gridLayout_5.addWidget(self.label_22, 0, 0, 1, 1) - - self.user_create_frame_username = QLineEdit(self.gridLayoutWidget_4) - self.user_create_frame_username.setObjectName("user_create_frame_username") - self.user_create_frame_username.setMaximumSize(QSize(150, 16777215)) - - self.gridLayout_5.addWidget(self.user_create_frame_username, 0, 1, 1, 1) - - self.label_24 = QLabel(self.gridLayoutWidget_4) - self.label_24.setObjectName("label_24") - - self.gridLayout_5.addWidget(self.label_24, 0, 2, 1, 1) - - self.label_23 = QLabel(self.gridLayoutWidget_4) - self.label_23.setObjectName("label_23") - - self.gridLayout_5.addWidget(self.label_23, 1, 0, 1, 1) - - self.horizontalSpacer_6 = QSpacerItem( - 40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum - ) - - self.gridLayout_5.addItem(self.horizontalSpacer_6, 0, 4, 1, 1) - - self.user_frame_userrole = QComboBox(self.gridLayoutWidget_4) - self.user_frame_userrole.setObjectName("user_frame_userrole") - - self.gridLayout_5.addWidget(self.user_frame_userrole, 0, 3, 1, 1) - - self.user_create_frame_password = QLineEdit(self.gridLayoutWidget_4) - self.user_create_frame_password.setObjectName("user_create_frame_password") - self.user_create_frame_password.setMaximumSize(QSize(150, 16777215)) - - self.gridLayout_5.addWidget(self.user_create_frame_password, 1, 1, 1, 1) - - self.user_frame_addUser = QPushButton(self.gridLayoutWidget_4) - self.user_frame_addUser.setObjectName("user_frame_addUser") - - self.gridLayout_5.addWidget(self.user_frame_addUser, 1, 3, 1, 1) - - self.user_frame_err_message = QLabel(self.gridLayoutWidget_4) - self.user_frame_err_message.setObjectName("user_frame_err_message") - - self.gridLayout_5.addWidget(self.user_frame_err_message, 1, 4, 1, 1) - - self.user_delete_frame = QFrame(self.tab_5) - self.user_delete_frame.setObjectName("user_delete_frame") - self.user_delete_frame.setGeometry(QRect(10, 60, 591, 141)) - self.user_delete_frame.setFrameShape(QFrame.StyledPanel) - self.user_delete_frame.setFrameShadow(QFrame.Raised) - self.gridLayoutWidget_7 = QWidget(self.user_delete_frame) - self.gridLayoutWidget_7.setObjectName("gridLayoutWidget_7") - self.gridLayoutWidget_7.setGeometry(QRect(0, 0, 581, 141)) - self.gridLayout_8 = QGridLayout(self.gridLayoutWidget_7) - self.gridLayout_8.setObjectName("gridLayout_8") - self.gridLayout_8.setContentsMargins(0, 0, 0, 0) - self.horizontalLayout_8 = QHBoxLayout() - self.horizontalLayout_8.setObjectName("horizontalLayout_8") - self.horizontalSpacer_10 = QSpacerItem( - 40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum - ) - - self.horizontalLayout_8.addItem(self.horizontalSpacer_10) - - self.pushButton = QPushButton(self.gridLayoutWidget_7) - self.pushButton.setObjectName("pushButton") - - self.horizontalLayout_8.addWidget(self.pushButton) - - self.horizontalSpacer_11 = QSpacerItem( - 40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum - ) - - self.horizontalLayout_8.addItem(self.horizontalSpacer_11) - - self.gridLayout_8.addLayout(self.horizontalLayout_8, 1, 1, 1, 1) - - self.label_34 = QLabel(self.gridLayoutWidget_7) - self.label_34.setObjectName("label_34") - - self.gridLayout_8.addWidget(self.label_34, 0, 0, 1, 1) - - self.user_delete_frame_user_select = QComboBox(self.gridLayoutWidget_7) - self.user_delete_frame_user_select.setObjectName( - "user_delete_frame_user_select" - ) - - self.gridLayout_8.addWidget(self.user_delete_frame_user_select, 0, 1, 1, 1) - - self.user_delete_confirm = QRadioButton(self.gridLayoutWidget_7) - self.user_delete_confirm.setObjectName("user_delete_confirm") - self.user_delete_confirm.setLayoutDirection(Qt.RightToLeft) - - self.gridLayout_8.addWidget(self.user_delete_confirm, 1, 0, 1, 1) - - self.horizontalSpacer_12 = QSpacerItem( - 40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum - ) - - self.gridLayout_8.addItem(self.horizontalSpacer_12, 0, 2, 1, 1) - - self.user_delete_err_message = QLabel(self.gridLayoutWidget_7) - self.user_delete_err_message.setObjectName("user_delete_err_message") - - self.gridLayout_8.addWidget(self.user_delete_err_message, 1, 2, 1, 1) - - self.user_edit_frame = QFrame(self.tab_5) - self.user_edit_frame.setObjectName("user_edit_frame") - self.user_edit_frame.setGeometry(QRect(10, 60, 591, 141)) - self.user_edit_frame.setFrameShape(QFrame.StyledPanel) - self.user_edit_frame.setFrameShadow(QFrame.Raised) - self.gridLayoutWidget_10 = QWidget(self.user_edit_frame) - self.gridLayoutWidget_10.setObjectName("gridLayoutWidget_10") - self.gridLayoutWidget_10.setGeometry(QRect(0, 0, 581, 141)) - self.gridLayout_11 = QGridLayout(self.gridLayoutWidget_10) - self.gridLayout_11.setObjectName("gridLayout_11") - self.gridLayout_11.setContentsMargins(0, 0, 0, 0) - self.user_edit_frame_role_select = QComboBox(self.gridLayoutWidget_10) - self.user_edit_frame_role_select.setObjectName("user_edit_frame_role_select") - - self.gridLayout_11.addWidget(self.user_edit_frame_role_select, 0, 3, 1, 1) - - self.label_38 = QLabel(self.gridLayoutWidget_10) - self.label_38.setObjectName("label_38") - - self.gridLayout_11.addWidget(self.label_38, 0, 0, 1, 1) - - self.user_edit_frame_user_select = QComboBox(self.gridLayoutWidget_10) - self.user_edit_frame_user_select.setObjectName("user_edit_frame_user_select") - self.user_edit_frame_user_select.setMaximumSize(QSize(150, 16777215)) - - self.gridLayout_11.addWidget(self.user_edit_frame_user_select, 0, 1, 1, 1) - - self.update_user = QPushButton(self.gridLayoutWidget_10) - self.update_user.setObjectName("update_user") - - self.gridLayout_11.addWidget(self.update_user, 1, 3, 1, 1) - - self.label_40 = QLabel(self.gridLayoutWidget_10) - self.label_40.setObjectName("label_40") - - self.gridLayout_11.addWidget(self.label_40, 0, 2, 1, 1) - - self.label_39 = QLabel(self.gridLayoutWidget_10) - self.label_39.setObjectName("label_39") - - self.gridLayout_11.addWidget(self.label_39, 1, 0, 1, 1) - - self.user_edit_frame_new_password = QLineEdit(self.gridLayoutWidget_10) - self.user_edit_frame_new_password.setObjectName("user_edit_frame_new_password") - self.user_edit_frame_new_password.setMaximumSize(QSize(150, 16777215)) - - self.gridLayout_11.addWidget(self.user_edit_frame_new_password, 1, 1, 1, 1) - - self.horizontalSpacer_14 = QSpacerItem( - 40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum - ) - - self.gridLayout_11.addItem(self.horizontalSpacer_14, 0, 4, 1, 1) - - self.edit_faculty_member = QFrame(self.tab_5) - self.edit_faculty_member.setObjectName("edit_faculty_member") - self.edit_faculty_member.setGeometry(QRect(10, 60, 1051, 241)) - self.edit_faculty_member.setFrameShape(QFrame.StyledPanel) - self.edit_faculty_member.setFrameShadow(QFrame.Raised) - self.gridLayoutWidget_11 = QWidget(self.edit_faculty_member) - self.gridLayoutWidget_11.setObjectName("gridLayoutWidget_11") - self.gridLayoutWidget_11.setGeometry(QRect(0, 0, 751, 223)) - self.gridLayout_12 = QGridLayout(self.gridLayoutWidget_11) - self.gridLayout_12.setObjectName("gridLayout_12") - self.gridLayout_12.setContentsMargins(0, 0, 0, 0) - self.formLayout_2 = QFormLayout() - self.formLayout_2.setObjectName("formLayout_2") - self.label_43 = QLabel(self.gridLayoutWidget_11) - self.label_43.setObjectName("label_43") - - self.formLayout_2.setWidget(0, QFormLayout.LabelRole, self.label_43) - - self.edit_faculty_member_new_title = QComboBox(self.gridLayoutWidget_11) - self.edit_faculty_member_new_title.setObjectName( - "edit_faculty_member_new_title" - ) - self.edit_faculty_member_new_title.setEditable(True) - - self.formLayout_2.setWidget( - 0, QFormLayout.FieldRole, self.edit_faculty_member_new_title - ) - - self.label_44 = QLabel(self.gridLayoutWidget_11) - self.label_44.setObjectName("label_44") - - self.formLayout_2.setWidget(1, QFormLayout.LabelRole, self.label_44) - - self.edit_faculty_member_new_surname = QLineEdit(self.gridLayoutWidget_11) - self.edit_faculty_member_new_surname.setObjectName( - "edit_faculty_member_new_surname" - ) - - self.formLayout_2.setWidget( - 1, QFormLayout.FieldRole, self.edit_faculty_member_new_surname - ) - - self.label_45 = QLabel(self.gridLayoutWidget_11) - self.label_45.setObjectName("label_45") - - self.formLayout_2.setWidget(2, QFormLayout.LabelRole, self.label_45) - - self.user_faculty_member_new_name = QLineEdit(self.gridLayoutWidget_11) - self.user_faculty_member_new_name.setObjectName("user_faculty_member_new_name") - - self.formLayout_2.setWidget( - 2, QFormLayout.FieldRole, self.user_faculty_member_new_name - ) - - self.gridLayout_12.addLayout(self.formLayout_2, 2, 2, 1, 1) - - self.formLayout_4 = QFormLayout() - self.formLayout_4.setObjectName("formLayout_4") - self.edit_faculty_member_title = QLineEdit(self.gridLayoutWidget_11) - self.edit_faculty_member_title.setObjectName("edit_faculty_member_title") - self.edit_faculty_member_title.setFocusPolicy(Qt.TabFocus) - self.edit_faculty_member_title.setReadOnly(True) - - self.formLayout_4.setWidget( - 0, QFormLayout.LabelRole, self.edit_faculty_member_title - ) - - self.edit_faculty_member_select_member = QComboBox(self.gridLayoutWidget_11) - self.edit_faculty_member_select_member.setObjectName( - "edit_faculty_member_select_member" - ) - - self.formLayout_4.setWidget( - 0, QFormLayout.FieldRole, self.edit_faculty_member_select_member - ) - - self.label_46 = QLabel(self.gridLayoutWidget_11) - self.label_46.setObjectName("label_46") - - self.formLayout_4.setWidget(1, QFormLayout.LabelRole, self.label_46) - - self.faculty_member_old_telnr = QLineEdit(self.gridLayoutWidget_11) - self.faculty_member_old_telnr.setObjectName("faculty_member_old_telnr") - self.faculty_member_old_telnr.setFocusPolicy(Qt.ClickFocus) - self.faculty_member_old_telnr.setReadOnly(True) - - self.formLayout_4.setWidget( - 1, QFormLayout.FieldRole, self.faculty_member_old_telnr - ) - - self.label_49 = QLabel(self.gridLayoutWidget_11) - self.label_49.setObjectName("label_49") - - self.formLayout_4.setWidget(2, QFormLayout.LabelRole, self.label_49) - - self.faculty_member_oldmail = QLineEdit(self.gridLayoutWidget_11) - self.faculty_member_oldmail.setObjectName("faculty_member_oldmail") - self.faculty_member_oldmail.setFocusPolicy(Qt.NoFocus) - self.faculty_member_oldmail.setInputMethodHints(Qt.ImhNone) - self.faculty_member_oldmail.setReadOnly(True) - - self.formLayout_4.setWidget( - 2, QFormLayout.FieldRole, self.faculty_member_oldmail - ) - - self.gridLayout_12.addLayout(self.formLayout_4, 0, 2, 1, 1) - - self.formLayout_5 = QFormLayout() - self.formLayout_5.setObjectName("formLayout_5") - self.label_47 = QLabel(self.gridLayoutWidget_11) - self.label_47.setObjectName("label_47") - - self.formLayout_5.setWidget(0, QFormLayout.LabelRole, self.label_47) - - self.label_48 = QLabel(self.gridLayoutWidget_11) - self.label_48.setObjectName("label_48") - - self.formLayout_5.setWidget(1, QFormLayout.LabelRole, self.label_48) - - self.user_faculty_member_new_mail = QLineEdit(self.gridLayoutWidget_11) - self.user_faculty_member_new_mail.setObjectName("user_faculty_member_new_mail") - - self.formLayout_5.setWidget( - 0, QFormLayout.FieldRole, self.user_faculty_member_new_mail - ) - - self.user_faculty_member_new_telnr = QLineEdit(self.gridLayoutWidget_11) - self.user_faculty_member_new_telnr.setObjectName( - "user_faculty_member_new_telnr" - ) - - self.formLayout_5.setWidget( - 1, QFormLayout.FieldRole, self.user_faculty_member_new_telnr - ) - - self.gridLayout_12.addLayout(self.formLayout_5, 2, 4, 1, 1) - - self.label_41 = QLabel(self.gridLayoutWidget_11) - self.label_41.setObjectName("label_41") - - self.gridLayout_12.addWidget(self.label_41, 0, 0, 1, 1) - - self.update_faculty_member = QPushButton(self.gridLayoutWidget_11) - self.update_faculty_member.setObjectName("update_faculty_member") - - self.gridLayout_12.addWidget(self.update_faculty_member, 3, 4, 1, 1) - - self.label_42 = QLabel(self.gridLayoutWidget_11) - self.label_42.setObjectName("label_42") - - self.gridLayout_12.addWidget(self.label_42, 2, 0, 1, 1) - - self.tabWidget.addTab(self.tab_5, "") - - self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1) - - self.horizontalLayout.addLayout(self.gridLayout) - - self.verticalLayout.addLayout(self.horizontalLayout) - - self.horizontalLayoutWidget = QWidget(self.centralwidget) - self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") - self.horizontalLayoutWidget.setGeometry(QRect(1280, 360, 311, 391)) - self.horizontalLayout_6 = QHBoxLayout(self.horizontalLayoutWidget) - self.horizontalLayout_6.setObjectName("horizontalLayout_6") - self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0) - self.frame_creation_progress = QFrame(self.horizontalLayoutWidget) - self.frame_creation_progress.setObjectName("frame_creation_progress") - self.verticalLayout_4 = QVBoxLayout(self.frame_creation_progress) - self.verticalLayout_4.setSpacing(6) - self.verticalLayout_4.setObjectName("verticalLayout_4") - self.groupBox_2 = QGroupBox(self.frame_creation_progress) - self.groupBox_2.setObjectName("groupBox_2") - self.groupBox_2.setEnabled(True) - sizePolicy4.setHeightForWidth(self.groupBox_2.sizePolicy().hasHeightForWidth()) - self.groupBox_2.setSizePolicy(sizePolicy4) - self.appdata_check = QCheckBox(self.groupBox_2) - self.appdata_check.setObjectName("appdata_check") - self.appdata_check.setGeometry(QRect(20, 30, 241, 41)) - self.appdata_check.setFont(font4) - self.appdata_check.setFocusPolicy(Qt.NoFocus) - self.media_check = QCheckBox(self.groupBox_2) - self.media_check.setObjectName("media_check") - self.media_check.setGeometry(QRect(20, 70, 241, 41)) - self.media_check.setFont(font4) - self.media_check.setFocusPolicy(Qt.NoFocus) - self.ids_check = QCheckBox(self.groupBox_2) - self.ids_check.setObjectName("ids_check") - self.ids_check.setGeometry(QRect(20, 140, 241, 41)) - self.ids_check.setFont(font4) - self.ids_check.setFocusPolicy(Qt.NoFocus) - - self.verticalLayout_4.addWidget(self.groupBox_2) - - self.groupBox = QGroupBox(self.frame_creation_progress) - self.groupBox.setObjectName("groupBox") - sizePolicy4.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth()) - self.groupBox.setSizePolicy(sizePolicy4) - self.media_checked = QCheckBox(self.groupBox) - self.media_checked.setObjectName("media_checked") - self.media_checked.setGeometry(QRect(20, 30, 241, 41)) - font6 = QFont() - font6.setPointSize(8) - font6.setBold(False) - font6.setItal # ic(False) - font6.setUnderline(False) - font6.setKerning(True) - font6.setStyleStrategy(QFont.PreferDefault) - self.media_checked.setFont(font6) - self.media_checked.setFocusPolicy(Qt.NoFocus) - self.media_edited_check = QCheckBox(self.groupBox) - self.media_edited_check.setObjectName("media_edited_check") - self.media_edited_check.setGeometry(QRect(20, 70, 241, 41)) - self.media_edited_check.setFont(font6) - self.media_edited_check.setFocusPolicy(Qt.NoFocus) - self.app_created = QCheckBox(self.groupBox) - self.app_created.setObjectName("app_created") - self.app_created.setGeometry(QRect(20, 110, 161, 41)) - self.app_created.setFont(font6) - self.app_created.setFocusPolicy(Qt.NoFocus) - self.btn_copy_adis_command = QPushButton(self.groupBox) - self.btn_copy_adis_command.setObjectName("btn_copy_adis_command") - self.btn_copy_adis_command.setGeometry(QRect(170, 120, 101, 23)) - self.btn_copy_adis_command.setFont(font6) - self.btn_copy_adis_command.setAutoFillBackground(False) - icon = QIcon() - icon.addFile( - "../../../.designer/backup/icons/information.png", - QSize(), - QIcon.Normal, - QIcon.Off, - ) - self.btn_copy_adis_command.setIcon(icon) - self.btn_copy_adis_command.setCheckable(False) - self.btn_copy_adis_command.setChecked(False) - self.btn_copy_adis_command.setAutoDefault(False) - - self.verticalLayout_4.addWidget(self.groupBox) - - self.horizontalLayout_6.addWidget(self.frame_creation_progress) - - self.frame_2 = QFrame(self.centralwidget) - self.frame_2.setObjectName("frame_2") - self.frame_2.setGeometry(QRect(1280, 10, 301, 341)) - self.frame_2.setFrameShape(QFrame.StyledPanel) - self.frame_2.setFrameShadow(QFrame.Raised) - self.calendarWidget = QCalendarWidget(self.frame_2) - self.calendarWidget.setObjectName("calendarWidget") - self.calendarWidget.setGeometry(QRect(0, 0, 291, 191)) - self.calendarWidget.setFocusPolicy(Qt.NoFocus) - self.calendarWidget.setGridVisible(True) - self.calendarWidget.setVerticalHeaderFormat(QCalendarWidget.NoVerticalHeader) - self.message_frame = QFrame(self.frame_2) - self.message_frame.setObjectName("message_frame") - self.message_frame.setGeometry(QRect(0, 210, 301, 121)) - self.message_frame.setFrameShape(QFrame.StyledPanel) - self.message_frame.setFrameShadow(QFrame.Raised) - self.label_14 = QLabel(self.message_frame) - self.label_14.setObjectName("label_14") - self.label_14.setGeometry(QRect(10, 10, 47, 20)) - self.line_app_info = QLineEdit(self.message_frame) - self.line_app_info.setObjectName("line_app_info") - self.line_app_info.setEnabled(True) - self.line_app_info.setGeometry(QRect(60, 10, 31, 20)) - self.line_app_info.setFocusPolicy(Qt.NoFocus) - self.message_box = QTextEdit(self.message_frame) - self.message_box.setObjectName("message_box") - self.message_box.setGeometry(QRect(10, 40, 281, 71)) - self.message_box.setFocusPolicy(Qt.NoFocus) - self.btn_delete_message = QPushButton(self.message_frame) - self.btn_delete_message.setObjectName("btn_delete_message") - self.btn_delete_message.setGeometry(QRect(130, 10, 75, 23)) - self.btn_delete_message.setFocusPolicy(Qt.NoFocus) - self.spin_select_message = QSpinBox(self.message_frame) - self.spin_select_message.setObjectName("spin_select_message") - self.spin_select_message.setGeometry(QRect(210, 10, 74, 22)) - self.spin_select_message.setMinimum(1) - self.label_total_day_messages = QLabel(self.message_frame) - self.label_total_day_messages.setObjectName("label_total_day_messages") - self.label_total_day_messages.setGeometry(QRect(240, 10, 21, 22)) - MainWindow.setCentralWidget(self.centralwidget) - self.menubar = QMenuBar(MainWindow) - self.menubar.setObjectName("menubar") - self.menubar.setGeometry(QRect(0, 0, 1601, 30)) - self.menuDatei = QMenu(self.menubar) - self.menuDatei.setObjectName("menuDatei") - self.menuEinstellungen = QMenu(self.menubar) - self.menuEinstellungen.setObjectName("menuEinstellungen") - self.menuHelp = QMenu(self.menubar) - self.menuHelp.setObjectName("menuHelp") - MainWindow.setMenuBar(self.menubar) - self.statusbar = QStatusBar(MainWindow) - self.statusbar.setObjectName("statusbar") - MainWindow.setStatusBar(self.statusbar) - QWidget.setTabOrder(self.drpdwn_app_nr, self.drpdwn_prof_name) - QWidget.setTabOrder(self.drpdwn_prof_name, self.prof_mail) - QWidget.setTabOrder(self.prof_mail, self.prof_tel_nr) - QWidget.setTabOrder(self.prof_tel_nr, self.app_name) - QWidget.setTabOrder(self.app_name, self.sem_year) - QWidget.setTabOrder(self.sem_year, self.check_eternal_app) - QWidget.setTabOrder(self.check_eternal_app, self.btn_add_document) - QWidget.setTabOrder(self.btn_add_document, self.btn_open_document) - QWidget.setTabOrder(self.btn_open_document, self.check_file) - QWidget.setTabOrder(self.check_file, self.btn_apparat_save) - QWidget.setTabOrder(self.btn_apparat_save, self.btn_apparat_apply) - QWidget.setTabOrder(self.btn_apparat_apply, self.check_send_mail) - QWidget.setTabOrder(self.check_send_mail, self.chkbx_show_del_media) - QWidget.setTabOrder(self.chkbx_show_del_media, self.btn_reserve) - QWidget.setTabOrder(self.btn_reserve, self.prof_id_adis) - QWidget.setTabOrder(self.prof_id_adis, self.apparat_id_adis) - QWidget.setTabOrder(self.apparat_id_adis, self.tabWidget_2) - QWidget.setTabOrder(self.tabWidget_2, self.btn_del_select_apparats) - QWidget.setTabOrder(self.btn_del_select_apparats, self.tabWidget_3) - QWidget.setTabOrder(self.tabWidget_3, self.select_action_box) - QWidget.setTabOrder(self.select_action_box, self.user_create_frame_username) - QWidget.setTabOrder(self.user_create_frame_username, self.user_frame_userrole) - QWidget.setTabOrder(self.user_frame_userrole, self.user_create_frame_password) - QWidget.setTabOrder(self.user_create_frame_password, self.user_frame_addUser) - QWidget.setTabOrder(self.user_frame_addUser, self.user_delete_frame_user_select) - QWidget.setTabOrder( - self.user_delete_frame_user_select, self.user_delete_confirm - ) - QWidget.setTabOrder(self.user_delete_confirm, self.pushButton) - QWidget.setTabOrder(self.pushButton, self.user_edit_frame_user_select) - QWidget.setTabOrder( - self.user_edit_frame_user_select, self.user_edit_frame_role_select - ) - QWidget.setTabOrder( - self.user_edit_frame_role_select, self.user_edit_frame_new_password - ) - QWidget.setTabOrder(self.user_edit_frame_new_password, self.update_user) - QWidget.setTabOrder(self.update_user, self.edit_faculty_member_title) - QWidget.setTabOrder( - self.edit_faculty_member_title, self.edit_faculty_member_select_member - ) - QWidget.setTabOrder( - self.edit_faculty_member_select_member, self.faculty_member_old_telnr - ) - QWidget.setTabOrder(self.faculty_member_old_telnr, self.faculty_member_oldmail) - QWidget.setTabOrder( - self.faculty_member_oldmail, self.edit_faculty_member_new_title - ) - QWidget.setTabOrder( - self.edit_faculty_member_new_title, self.edit_faculty_member_new_surname - ) - QWidget.setTabOrder( - self.edit_faculty_member_new_surname, self.user_faculty_member_new_name - ) - QWidget.setTabOrder( - self.user_faculty_member_new_name, self.user_faculty_member_new_mail - ) - QWidget.setTabOrder( - self.user_faculty_member_new_mail, self.user_faculty_member_new_telnr - ) - QWidget.setTabOrder( - self.user_faculty_member_new_telnr, self.update_faculty_member - ) - QWidget.setTabOrder(self.update_faculty_member, self.box_fach) - QWidget.setTabOrder(self.box_fach, self.box_person) - QWidget.setTabOrder(self.box_person, self.btn_search) - QWidget.setTabOrder(self.btn_search, self.check_deletable) - QWidget.setTabOrder(self.check_deletable, self.box_erstellsemester) - QWidget.setTabOrder(self.box_erstellsemester, self.box_semester) - QWidget.setTabOrder(self.box_semester, self.box_dauerapp) - QWidget.setTabOrder(self.box_dauerapp, self.box_appnrs) - QWidget.setTabOrder(self.box_appnrs, self.btn_copy_adis_command) - QWidget.setTabOrder(self.btn_copy_adis_command, self.spin_select_message) - - self.menubar.addAction(self.menuDatei.menuAction()) - self.menubar.addAction(self.menuEinstellungen.menuAction()) - self.menubar.addAction(self.menuHelp.menuAction()) - self.menuDatei.addAction(self.actionBeenden) - self.menuEinstellungen.addAction(self.actionEinstellungen) - self.menuHelp.addAction(self.actionDokumentation) - - self.retranslateUi(MainWindow) - - self.tabWidget.setCurrentIndex(0) - self.tabWidget_2.setCurrentIndex(1) - self.stackedWidget_4.setCurrentIndex(1) - self.tabWidget_3.setCurrentIndex(1) - - QMetaObject.connectSlotsByName(MainWindow) - - # setupUi - - def retranslateUi(self, MainWindow): - MainWindow.setWindowTitle( - QCoreApplication.translate("MainWindow", "Semesterapparatsmanagement", None) - ) - # if QT_CONFIG(statustip) - MainWindow.setStatusTip("") - # endif // QT_CONFIG(statustip) - self.actionBeenden.setText( - QCoreApplication.translate("MainWindow", "Beenden", None) - ) - # if QT_CONFIG(shortcut) - self.actionBeenden.setShortcut( - QCoreApplication.translate("MainWindow", "Ctrl+Q", None) - ) - # endif // QT_CONFIG(shortcut) - self.actionEinstellungen.setText( - QCoreApplication.translate("MainWindow", "Einstellungen", None) - ) - # if QT_CONFIG(shortcut) - self.actionEinstellungen.setShortcut( - QCoreApplication.translate("MainWindow", "Alt+S", None) - ) - # endif // QT_CONFIG(shortcut) - self.actionDokumentation.setText( - QCoreApplication.translate("MainWindow", "Dokumentation", None) - ) - # if QT_CONFIG(shortcut) - self.actionDokumentation.setShortcut( - QCoreApplication.translate("MainWindow", "F1", None) - ) - # endif // QT_CONFIG(shortcut) - # if QT_CONFIG(tooltip) - self.load_app.setToolTip( - QCoreApplication.translate( - "MainWindow", "Load the Semesterapparate from the database", None - ) - ) - # endif // QT_CONFIG(tooltip) - self.load_app.setText( - QCoreApplication.translate("MainWindow", "App. aufrufen", None) - ) - self.create_new_app.setText( - QCoreApplication.translate("MainWindow", "neu. App anlegen", None) - ) - self.cancel_active_selection.setText( - QCoreApplication.translate("MainWindow", "Auswahl abbrechen", None) - ) - ___qtablewidgetitem = self.tableWidget_apparate.horizontalHeaderItem(0) - ___qtablewidgetitem.setText( - QCoreApplication.translate("MainWindow", "AppNr", None) - ) - ___qtablewidgetitem1 = self.tableWidget_apparate.horizontalHeaderItem(1) - ___qtablewidgetitem1.setText( - QCoreApplication.translate("MainWindow", "App Name", None) - ) - ___qtablewidgetitem2 = self.tableWidget_apparate.horizontalHeaderItem(2) - ___qtablewidgetitem2.setText( - QCoreApplication.translate("MainWindow", "Professor", None) - ) - ___qtablewidgetitem3 = self.tableWidget_apparate.horizontalHeaderItem(3) - ___qtablewidgetitem3.setText( - QCoreApplication.translate("MainWindow", "g\u00fcltig bis", None) - ) - ___qtablewidgetitem4 = self.tableWidget_apparate.horizontalHeaderItem(4) - ___qtablewidgetitem4.setText( - QCoreApplication.translate("MainWindow", "Dauerapparat", None) - ) - ___qtablewidgetitem5 = self.tableWidget_apparate.horizontalHeaderItem(5) - ___qtablewidgetitem5.setText( - QCoreApplication.translate("MainWindow", "KontoNr", None) - ) - self.app_group_box.setTitle( - QCoreApplication.translate("MainWindow", "Apparatsdetails", None) - ) - ___qtablewidgetitem6 = self.dokument_list.horizontalHeaderItem(0) - ___qtablewidgetitem6.setText( - QCoreApplication.translate("MainWindow", "Dokumentname", None) - ) - ___qtablewidgetitem7 = self.dokument_list.horizontalHeaderItem(1) - ___qtablewidgetitem7.setText( - QCoreApplication.translate("MainWindow", "Dateityp", None) - ) - ___qtablewidgetitem8 = self.dokument_list.horizontalHeaderItem(2) - ___qtablewidgetitem8.setText( - QCoreApplication.translate("MainWindow", "Neu?", None) - ) - ___qtablewidgetitem9 = self.dokument_list.horizontalHeaderItem(3) - ___qtablewidgetitem9.setText( - QCoreApplication.translate("MainWindow", "path", None) - ) - self.label_5.setText( - QCoreApplication.translate("MainWindow", "Apparatsname", None) - ) - self.sem_winter.setText( - QCoreApplication.translate("MainWindow", "Winter", None) - ) - self.label_4.setText( - QCoreApplication.translate("MainWindow", "Prof. Name", None) - ) - self.sem_sommer.setText( - QCoreApplication.translate("MainWindow", "Sommer", None) - ) - self.label_3.setText( - QCoreApplication.translate("MainWindow", "Prof. Titel", None) - ) - self.label_6.setText(QCoreApplication.translate("MainWindow", "Semester", None)) - self.sem_year.setPlaceholderText( - QCoreApplication.translate("MainWindow", "2023", None) - ) - self.label_2.setText( - QCoreApplication.translate("MainWindow", "Apparatsnummer", None) - ) - # if QT_CONFIG(statustip) - self.btn_apparat_save.setStatusTip( - QCoreApplication.translate("MainWindow", "searching", None) - ) - # endif // QT_CONFIG(statustip) - self.btn_apparat_save.setText( - QCoreApplication.translate("MainWindow", "Speichern", None) - ) - self.btn_apparat_apply.setText( - QCoreApplication.translate("MainWindow", "Aktualisieren", None) - ) - self.check_eternal_app.setText( - QCoreApplication.translate("MainWindow", "Dauerapparat", None) - ) - self.label_8.setText(QCoreApplication.translate("MainWindow", "Mail", None)) - self.prof_mail.setPlaceholderText("") - self.label_9.setText(QCoreApplication.translate("MainWindow", "Tel", None)) - self.prof_tel_nr.setPlaceholderText("") - self.label_10.setText(QCoreApplication.translate("MainWindow", "Fach", None)) - self.drpdwn_prof_name.setCurrentText("") - self.mail_mand.setText(QCoreApplication.translate("MainWindow", "*", None)) - self.telnr_mand.setText(QCoreApplication.translate("MainWindow", "*", None)) - self.profname_mand.setText(QCoreApplication.translate("MainWindow", "*", None)) - self.appname_mand.setText(QCoreApplication.translate("MainWindow", "*", None)) - self.fach_mand.setText(QCoreApplication.translate("MainWindow", "*", None)) - self._mand.setText(QCoreApplication.translate("MainWindow", "*", None)) - self.btn_add_document.setText( - QCoreApplication.translate("MainWindow", "Dokument hinzuf\u00fcgen", None) - ) - self.btn_open_document.setText( - QCoreApplication.translate("MainWindow", "Dokument \u00f6ffnen", None) - ) - # if QT_CONFIG(tooltip) - self.check_file.setToolTip( - QCoreApplication.translate( - "MainWindow", - "Abh\u00e4ngig von der Anzahl der Medien kann die Suche sehr lange dauern", - None, - ) - ) - # endif // QT_CONFIG(tooltip) - self.check_file.setText( - QCoreApplication.translate( - "MainWindow", "Medien aus Dokument\n" " hinzuf\u00fcgen", None - ) - ) - self.label_12.setText( - QCoreApplication.translate("MainWindow", "Prof-ID-aDIS", None) - ) - self.label_13.setText( - QCoreApplication.translate("MainWindow", "Apparat-ID-aDIS", None) - ) - self.check_send_mail.setText( - QCoreApplication.translate("MainWindow", "Mail senden", None) - ) - ___qtablewidgetitem10 = self.tableWidget_apparat_media.horizontalHeaderItem(0) - ___qtablewidgetitem10.setText( - QCoreApplication.translate("MainWindow", "Buchtitel", None) - ) - # if QT_CONFIG(tooltip) - ___qtablewidgetitem10.setToolTip( - QCoreApplication.translate( - "MainWindow", - "Es kann sein, dass der Buchtitel leer ist, dies kommt vor, wenn der Titel nicht passend formatiert ist", - None, - ) - ) - # endif // QT_CONFIG(tooltip) - ___qtablewidgetitem11 = self.tableWidget_apparat_media.horizontalHeaderItem(1) - ___qtablewidgetitem11.setText( - QCoreApplication.translate("MainWindow", "Signatur", None) - ) - ___qtablewidgetitem12 = self.tableWidget_apparat_media.horizontalHeaderItem(2) - ___qtablewidgetitem12.setText( - QCoreApplication.translate("MainWindow", "Auflage", None) - ) - ___qtablewidgetitem13 = self.tableWidget_apparat_media.horizontalHeaderItem(3) - ___qtablewidgetitem13.setText( - QCoreApplication.translate("MainWindow", "Autor", None) - ) - ___qtablewidgetitem14 = self.tableWidget_apparat_media.horizontalHeaderItem(4) - ___qtablewidgetitem14.setText( - QCoreApplication.translate("MainWindow", "im Apparat?", None) - ) - # if QT_CONFIG(tooltip) - ___qtablewidgetitem14.setToolTip( - QCoreApplication.translate( - "MainWindow", - "Diese Angabe ist nicht zuverl\u00e4ssig. Ist das \u274c vorhanden, kann das Medium im Apparat sein, aber aufgrund eines Bugs nicht gefunden worden", - None, - ) - ) - # endif // QT_CONFIG(tooltip) - ___qtablewidgetitem15 = self.tableWidget_apparat_media.horizontalHeaderItem(5) - ___qtablewidgetitem15.setText( - QCoreApplication.translate("MainWindow", "Vorgemerkt", None) - ) - ___qtablewidgetitem16 = self.tableWidget_apparat_media.horizontalHeaderItem(6) - ___qtablewidgetitem16.setText( - QCoreApplication.translate("MainWindow", "Link", None) - ) - self.label.setText( - QCoreApplication.translate("MainWindow", " Medienliste", None) - ) - self.chkbx_show_del_media.setText( - QCoreApplication.translate("MainWindow", "gel. Medien anzeigen", None) - ) - self.btn_reserve.setText( - QCoreApplication.translate("MainWindow", "im Apparat?", None) - ) - self.label_info.setText( - QCoreApplication.translate( - "MainWindow", "Medien werden hinzugef\u00fcgt", None - ) - ) - self.progress_label.setText( - QCoreApplication.translate("MainWindow", "Medium x/y", None) - ) - self.label_20.setText( - QCoreApplication.translate("MainWindow", "Medien werden gepr\u00fcft", None) - ) - self.avail_status.setText( - QCoreApplication.translate("MainWindow", "TextLabel", None) - ) - self.add_medium.setText( - QCoreApplication.translate("MainWindow", "Medien hinzuf\u00fcgen", None) - ) - self.tabWidget.setTabText( - self.tabWidget.indexOf(self.tab), - QCoreApplication.translate("MainWindow", "Anlegen", None), - ) - self.btn_search.setText( - QCoreApplication.translate("MainWindow", "Suchen", None) - ) - self.label_7.setText(QCoreApplication.translate("MainWindow", "Appnr.:", None)) - self.label_18.setText( - QCoreApplication.translate("MainWindow", "Dauerapp:", None) - ) - self.label_17.setText( - QCoreApplication.translate("MainWindow", "Endsemester:", None) - ) - self.label_19.setText( - QCoreApplication.translate("MainWindow", "Erstellsemester:", None) - ) - self.label_11.setText(QCoreApplication.translate("MainWindow", "Person:", None)) - self.label_16.setText(QCoreApplication.translate("MainWindow", "Fach:", None)) - self.label_15.setText( - QCoreApplication.translate("MainWindow", "L\u00f6schbar", None) - ) - self.check_deletable.setText("") - self.db_err_message.setText("") - self.tabWidget_2.setTabText( - self.tabWidget_2.indexOf(self.tab_3), - QCoreApplication.translate("MainWindow", "Statistik", None), - ) - self.label_25.setText( - QCoreApplication.translate("MainWindow", "Signatur", None) - ) - self.book_search.setText( - QCoreApplication.translate("MainWindow", "Suche", None) - ) - self.label_26.setText(QCoreApplication.translate("MainWindow", "Titel", None)) - self.tabWidget_2.setTabText( - self.tabWidget_2.indexOf(self.tab_4), - QCoreApplication.translate("MainWindow", "Suchen", None), - ) - ___qtablewidgetitem17 = self.statistics_table.horizontalHeaderItem(0) - ___qtablewidgetitem17.setText( - QCoreApplication.translate("MainWindow", "Semester", None) - ) - ___qtablewidgetitem18 = self.statistics_table.horizontalHeaderItem(1) - ___qtablewidgetitem18.setText( - QCoreApplication.translate("MainWindow", "Zugang", None) - ) - ___qtablewidgetitem19 = self.statistics_table.horizontalHeaderItem(2) - ___qtablewidgetitem19.setText( - QCoreApplication.translate("MainWindow", "Abgang", None) - ) - self.tabWidget_3.setTabText( - self.tabWidget_3.indexOf(self.tab_6), - QCoreApplication.translate("MainWindow", "Tabelle", None), - ) - self.tabWidget_3.setTabText( - self.tabWidget_3.indexOf(self.tab_7), - QCoreApplication.translate( - "MainWindow", "Erstellte und gel\u00f6schte Semesterapparate", None - ), - ) - self.btn_del_select_apparats.setText( - QCoreApplication.translate( - "MainWindow", "Ausgew\u00e4hlte L\u00f6schen", None - ) - ) - ___qtablewidgetitem20 = self.tableWidget.horizontalHeaderItem(1) - ___qtablewidgetitem20.setText( - QCoreApplication.translate("MainWindow", "Apparatsname", None) - ) - ___qtablewidgetitem21 = self.tableWidget.horizontalHeaderItem(2) - ___qtablewidgetitem21.setText( - QCoreApplication.translate("MainWindow", "Apparatsnummer", None) - ) - ___qtablewidgetitem22 = self.tableWidget.horizontalHeaderItem(3) - ___qtablewidgetitem22.setText( - QCoreApplication.translate("MainWindow", "Person", None) - ) - ___qtablewidgetitem23 = self.tableWidget.horizontalHeaderItem(4) - ___qtablewidgetitem23.setText( - QCoreApplication.translate("MainWindow", "Fach", None) - ) - ___qtablewidgetitem24 = self.book_search_result.horizontalHeaderItem(0) - ___qtablewidgetitem24.setText( - QCoreApplication.translate("MainWindow", "Titel", None) - ) - ___qtablewidgetitem25 = self.book_search_result.horizontalHeaderItem(1) - ___qtablewidgetitem25.setText( - QCoreApplication.translate("MainWindow", "Signatur", None) - ) - ___qtablewidgetitem26 = self.book_search_result.horizontalHeaderItem(2) - ___qtablewidgetitem26.setText( - QCoreApplication.translate("MainWindow", "Apparat", None) - ) - self.tabWidget.setTabText( - self.tabWidget.indexOf(self.tab_2), - QCoreApplication.translate("MainWindow", "Suchen / Statistik", None), - ) - self.label_21.setText(QCoreApplication.translate("MainWindow", "Aktion:", None)) - self.select_action_box.setItemText( - 0, QCoreApplication.translate("MainWindow", "Nutzer anlegen", None) - ) - self.select_action_box.setItemText( - 1, QCoreApplication.translate("MainWindow", "Nutzer l\u00f6schen", None) - ) - self.select_action_box.setItemText( - 2, QCoreApplication.translate("MainWindow", "Nutzer aktualisieren", None) - ) - self.select_action_box.setItemText( - 3, QCoreApplication.translate("MainWindow", "Lehrperson bearbeiten", None) - ) - - self.label_22.setText( - QCoreApplication.translate("MainWindow", "Nutzername", None) - ) - self.label_24.setText(QCoreApplication.translate("MainWindow", "Rolle", None)) - self.label_23.setText( - QCoreApplication.translate("MainWindow", "Passwort", None) - ) - self.user_frame_addUser.setText( - QCoreApplication.translate("MainWindow", "Anlegen", None) - ) - self.user_frame_err_message.setText("") - self.pushButton.setText( - QCoreApplication.translate("MainWindow", "Nutzer l\u00f6schen", None) - ) - self.label_34.setText( - QCoreApplication.translate("MainWindow", "Nutzername", None) - ) - self.user_delete_confirm.setText( - QCoreApplication.translate("MainWindow", "Wirklich l\u00f6schen?", None) - ) - self.user_delete_err_message.setText("") - self.label_38.setText( - QCoreApplication.translate("MainWindow", "Nutzername", None) - ) - self.update_user.setText( - QCoreApplication.translate("MainWindow", "Aktualisieren", None) - ) - self.label_40.setText(QCoreApplication.translate("MainWindow", "Rolle", None)) - self.label_39.setText( - QCoreApplication.translate("MainWindow", "Neues Passwort", None) - ) - self.label_43.setText(QCoreApplication.translate("MainWindow", "Titel", None)) - self.label_44.setText(QCoreApplication.translate("MainWindow", "Vorname", None)) - self.label_45.setText( - QCoreApplication.translate("MainWindow", "Nachname", None) - ) - self.label_46.setText( - QCoreApplication.translate("MainWindow", "Telefonnummer", None) - ) - self.label_49.setText(QCoreApplication.translate("MainWindow", "Mail", None)) - self.label_47.setText(QCoreApplication.translate("MainWindow", "Mail", None)) - self.label_48.setText(QCoreApplication.translate("MainWindow", "Telefon", None)) - self.label_41.setText( - QCoreApplication.translate("MainWindow", "Alte Angaben", None) - ) - self.update_faculty_member.setText( - QCoreApplication.translate("MainWindow", "Aktualisieren", None) - ) - self.label_42.setText( - QCoreApplication.translate("MainWindow", "Neue Angaben", None) - ) - self.tabWidget.setTabText( - self.tabWidget.indexOf(self.tab_5), - QCoreApplication.translate("MainWindow", "Admin", None), - ) - self.groupBox_2.setTitle( - QCoreApplication.translate("MainWindow", "Software", None) - ) - self.appdata_check.setText( - QCoreApplication.translate("MainWindow", "Apparatsdaten eingegeben", None) - ) - self.media_check.setText( - QCoreApplication.translate( - "MainWindow", "Medien hinzugef\u00fcgt / importiert", None - ) - ) - self.ids_check.setText( - QCoreApplication.translate( - "MainWindow", "Prof-ID und Apparat-ID eingetragen", None - ) - ) - self.groupBox.setTitle(QCoreApplication.translate("MainWindow", "aDIS", None)) - self.media_checked.setText( - QCoreApplication.translate("MainWindow", "Medien gepr\u00fcft", None) - ) - self.media_edited_check.setText( - QCoreApplication.translate("MainWindow", "Medien bearbeitet", None) - ) - self.app_created.setText( - QCoreApplication.translate("MainWindow", "Apparat angelegt", None) - ) - # if QT_CONFIG(tooltip) - self.btn_copy_adis_command.setToolTip( - QCoreApplication.translate( - "MainWindow", - "Hier klicken, um die aDIS Abfrage in die Zwischenablage zu kopieren", - None, - ) - ) - # endif // QT_CONFIG(tooltip) - # if QT_CONFIG(statustip) - self.btn_copy_adis_command.setStatusTip("") - # endif // QT_CONFIG(statustip) - # if QT_CONFIG(whatsthis) - self.btn_copy_adis_command.setWhatsThis("") - # endif // QT_CONFIG(whatsthis) - # if QT_CONFIG(accessibility) - self.btn_copy_adis_command.setAccessibleDescription("") - # endif // QT_CONFIG(accessibility) - self.btn_copy_adis_command.setText( - QCoreApplication.translate("MainWindow", " aDIS Abfrage", None) - ) - self.label_14.setText(QCoreApplication.translate("MainWindow", "Apparat", None)) - self.btn_delete_message.setText( - QCoreApplication.translate("MainWindow", "L\u00f6schen", None) - ) - self.label_total_day_messages.setText( - QCoreApplication.translate("MainWindow", "TextLabel", None) - ) - self.menuDatei.setTitle(QCoreApplication.translate("MainWindow", "Datei", None)) - self.menuEinstellungen.setTitle( - QCoreApplication.translate("MainWindow", "Bearbeiten", None) - ) - self.menuHelp.setTitle(QCoreApplication.translate("MainWindow", "Help", None)) - - # retranslateUi diff --git a/src/ui/setupwizard.ui b/src/ui/setupwizard.ui deleted file mode 100644 index 3875a94..0000000 --- a/src/ui/setupwizard.ui +++ /dev/null @@ -1,149 +0,0 @@ - - - Wizard - - - - 0 - 0 - 640 - 480 - - - - - 640 - 480 - - - - Wizard - - - - - - 200 - 10 - 256 - 192 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Setup für das Semesterapparatsprogram.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Im Anschluss werden wichtige Einstellungen gesetzt, welche auch im späteren Verlauf verändert werden können.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - - - - - - - 10 - 0 - 131 - 16 - - - - Grundeinstellungen - - - - - - 10 - 40 - 71 - 16 - - - - Opens the downloaded files with the default applications set in the OS - - - Default Apps - - - - - - 100 - 40 - 70 - 17 - - - - - - - - - - 10 - 70 - 61 - 16 - - - - Path where the downloaded files are stored. Defaults to ~/Desktop/SemapFiles - - - Save Path - - - - - - 280 - 10 - 331 - 361 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - 80 - 70 - 113 - 20 - - - - ~/Desktop/SemapFiles - - - - - - 200 - 70 - 25 - 19 - - - - ... - - - - - - - diff --git a/src/ui/setupwizard_ui.py b/src/ui/setupwizard_ui.py deleted file mode 100644 index e1d1ac8..0000000 --- a/src/ui/setupwizard_ui.py +++ /dev/null @@ -1,151 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################ -## Form generated from reading UI file 'setupwizard.ui' -## -## Created by: Qt User Interface Compiler version 6.5.2 -## -## WARNING! All changes made in this file will be lost when recompiling UI file! -################################################################################ - -from PyQt6.QtCore import ( - QCoreApplication, - QDate, - QDateTime, - QLocale, - QMetaObject, - QObject, - QPoint, - QRect, - QSize, - Qt, - QTime, - QUrl, -) -from PyQt6.QtGui import ( - QBrush, - QColor, - QConicalGradient, - QCursor, - QFont, - QFontDatabase, - QGradient, - QIcon, - QImage, - QKeySequence, - QLinearGradient, - QPainter, - QPalette, - QPixmap, - QRadialGradient, - QTransform, -) -from PyQt6.QtWidgets import ( - QApplication, - QCheckBox, - QFrame, - QLabel, - QLineEdit, - QSizePolicy, - QTextBrowser, - QToolButton, - QWidget, - QWizard, - QWizardPage, -) - - -class Ui_Wizard(object): - def setupUi(self, Wizard): - if not Wizard.objectName(): - Wizard.setObjectName("Wizard") - Wizard.resize(640, 480) - Wizard.setMaximumSize(QSize(640, 480)) - self.wizardPage1 = QWizardPage() - self.wizardPage1.setObjectName("wizardPage1") - self.textBrowser = QTextBrowser(self.wizardPage1) - self.textBrowser.setObjectName("textBrowser") - self.textBrowser.setGeometry(QRect(200, 10, 256, 192)) - Wizard.addPage(self.wizardPage1) - self.wizardPage2 = QWizardPage() - self.wizardPage2.setObjectName("wizardPage2") - self.label = QLabel(self.wizardPage2) - self.label.setObjectName("label") - self.label.setGeometry(QRect(10, 0, 131, 16)) - self.label_2 = QLabel(self.wizardPage2) - self.label_2.setObjectName("label_2") - self.label_2.setGeometry(QRect(10, 40, 71, 16)) - self.default_apps = QCheckBox(self.wizardPage2) - self.default_apps.setObjectName("default_apps") - self.default_apps.setGeometry(QRect(100, 40, 70, 17)) - self.label_3 = QLabel(self.wizardPage2) - self.label_3.setObjectName("label_3") - self.label_3.setGeometry(QRect(10, 70, 61, 16)) - self.custom_applications = QFrame(self.wizardPage2) - self.custom_applications.setObjectName("custom_applications") - self.custom_applications.setGeometry(QRect(280, 10, 331, 361)) - self.custom_applications.setFrameShape(QFrame.StyledPanel) - self.custom_applications.setFrameShadow(QFrame.Raised) - self.save_path = QLineEdit(self.wizardPage2) - self.save_path.setObjectName("save_path") - self.save_path.setGeometry(QRect(80, 70, 113, 20)) - self.btn_save_path_select = QToolButton(self.wizardPage2) - self.btn_save_path_select.setObjectName("btn_save_path_select") - self.btn_save_path_select.setGeometry(QRect(200, 70, 25, 19)) - Wizard.addPage(self.wizardPage2) - - self.retranslateUi(Wizard) - - QMetaObject.connectSlotsByName(Wizard) - - # setupUi - - def retranslateUi(self, Wizard): - Wizard.setWindowTitle(QCoreApplication.translate("Wizard", "Wizard", None)) - self.textBrowser.setHtml( - QCoreApplication.translate( - "Wizard", - '\n' - '\n" - '

Setup f\u00fcr das Semesterapparatsprogram.

\n' - '


\n' - '

Im Anschluss werden wichtige Einstellungen gesetzt, welche auch im sp\u00e4teren Verlauf ver\u00e4ndert werden k\u00f6nnen.

\n' - '


', - None, - ) - ) - self.label.setText( - QCoreApplication.translate("Wizard", "Grundeinstellungen", None) - ) - # if QT_CONFIG(tooltip) - self.label_2.setToolTip( - QCoreApplication.translate( - "Wizard", - "Opens the downloaded files with the default applications set in the OS", - None, - ) - ) - # endif // QT_CONFIG(tooltip) - self.label_2.setText(QCoreApplication.translate("Wizard", "Default Apps", None)) - self.default_apps.setText("") - # if QT_CONFIG(tooltip) - self.label_3.setToolTip( - QCoreApplication.translate( - "Wizard", - "Path where the downloaded files are stored. Defaults to ~/Desktop/SemapFiles", - None, - ) - ) - # endif // QT_CONFIG(tooltip) - self.label_3.setText(QCoreApplication.translate("Wizard", "Save Path", None)) - self.save_path.setPlaceholderText( - QCoreApplication.translate("Wizard", "~/Desktop/SemapFiles", None) - ) - self.btn_save_path_select.setText( - QCoreApplication.translate("Wizard", "...", None) - ) - - # retranslateUi