diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..521a81d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+__pycache__/
+*.pyc
+*.pyo
+path/*
+credentials.json
+token.json
+# *.xlsx
+.venv/*
+.env
\ No newline at end of file
diff --git a/Basvurular.xlsx b/Basvurular.xlsx
new file mode 100644
index 0000000..47e0c7c
Binary files /dev/null and b/Basvurular.xlsx differ
diff --git a/Etkinlikler.xlsx b/Etkinlikler.xlsx
new file mode 100644
index 0000000..abe2056
Binary files /dev/null and b/Etkinlikler.xlsx differ
diff --git a/Kullanicilar.xlsx b/Kullanicilar.xlsx
new file mode 100644
index 0000000..79c6291
Binary files /dev/null and b/Kullanicilar.xlsx differ
diff --git a/Mentor.xlsx b/Mentor.xlsx
new file mode 100644
index 0000000..8f252e9
Binary files /dev/null and b/Mentor.xlsx differ
diff --git a/Mulakatlar.xlsx b/Mulakatlar.xlsx
new file mode 100644
index 0000000..717aa80
Binary files /dev/null and b/Mulakatlar.xlsx differ
diff --git a/README_CRM.md b/README_CRM.md
new file mode 100644
index 0000000..274cdc9
--- /dev/null
+++ b/README_CRM.md
@@ -0,0 +1,73 @@
+## Python-Module-Week7
+
+* In this assignment, you are expected to complete the interface of the Python module graduation project on the page https://werhere-it-academy.gitbook.io/werhere-it-academy-handbook/python-modulu/modul-project/crm.v2 with an original work.
+
+## Interface login window
+* Create a customized login page for the application. This page contains the following features
+1. Two separate input elements for user and password.
+2. It will react to these two pieces of information and click the next entry button.
+3. A warning text to indicate whether the button was successful or not when clicked.
+* Optionally, you can add another button to close the application and remove the window image.
+* Create a customized login window using consistent background colors, box edge shapes, button features (hover, pressed, rounded edge), different fonts and colors for texts.
+* Tip: By placing a frame first and placing the elements on it, you can create a dynamic dimension for both the frame and the elements you place on it by using layout and spacer.
+
+## Preference-Menu
+* It should show three buttons that will direct a user to three different windows when he/she logs in successfully.
+1. Applications The menu-applications button should direct the user to the first application window.
+2. Mentor Meeting - the mentor meeting button should direct the user to the mentor window.
+3.Interviews - the interviews button should direct the user to the interviews window
+4. Add a Close button to exit the application.
+* Differentiate this from the previous input window in a consistent way (colour, format, etc.).
+
+## Preference-Admin-Menu
+* It should display four different buttons that will direct an admin who logs in successfully to four different windows.
+1. It should be able to access the 3 different menus that Preference-Menu can access, as well as the Admin Menu.
+2. It should contain a Close button.
+* Windows must be consistently different from previous windows (input) (colour, shape, etc.).
+
+## Applications Page
+* The interface will open when the Applications button is clicked in the preferences. It must contain water elements.
+1. Search button and Input box - a box to enter text and a button to which we will add the search function
+2. All Applications button: It should display all records in the Applications file.
+3. Mentor Meeting Defined Button: It should display the data in the Relevant Column in the Applications file on the screen.
+4. Mentor Interview Undefined button: It should display the data in the Relevant Column in the Applications file on the screen.
+5. A 7-column table that will allow the data to be called by the three buttons at the top to be displayed on the screen in the form of columns and rows when called.
+6. Return to Preferences Screen Button - A button that will allow you to return to the Preferences Menu. Note: If the person logged in is admin, it should return to the Preferences-Admin Screen.
+* Each window design should be consistently differentiated from other window designs (colour, shape, frame border colors of buttons, transparent background color of the table, etc.).
+* Depending on your busy schedule, you can also add separate buttons showing VIT1 and VIT2 file records here.
+* Again, differentiate this page from other pages in a consistent way (color, format, frame border colors of buttons, transparent background color of the table, etc.).
+
+## Mentor Interview Page
+* The interface will open when the Mentor Meeting button is pressed. It should contain the following elements:
+1. Search button and Input box - a box to enter text and a button to which we will add the search function
+2. All Conversations - This is a button that will call all the data in the Mentor File into the table.
+3. Multiple tabs - add a tool that opens down when hovered over, showing multiple options. Tip: Combobox>Edit Items. Note: You can find Multi-Tab data on page 2 of the Mentor File! This tab functions to print the data in the relevant column in the Mentor File to the screen.
+* hint: Combobox > Edit Items
+4. Return to Preferences Screen button.
+Note: If the logged in person is admin, he/she should go back to Preferences-Admin Screen.
+
+## Interviews page
+* The interface will be called when you press the interviews button on the menu page. It should contain the following elements:
+1. Search button and Input box - a box to enter text and a button to which we will add the search function
+2. Project Submitted Button: The data in the relevant column in the Interviews File should appear on the screen.
+3. Project Submitted Button: The data in the relevant column in the Interview File should appear on the screen.
+4. Return to preferences screen button. Note: If the person logged in is admin, they should return to the Preferences-Admin Screen.
+* You can delete the window image around each page and replace it with a button to close the application.
+
+## Admin Menu
+1. Event Registration Button
+When the Event Recording Button is clicked, the records of the Events in Google Calendar should be displayed. It is up to your preference to add e-mail addresses, meeting location, etc. features here. The format was created as Meeting Title, Start Time, participant e-mail address and organizer e-mail address.
+2. Mail Button
+When you click on the Mail Button, e-mails should be sent to the e-mail addresses registered in the events in Google Calendar. If preferred, the e-mail delivered information can also be displayed on the screen as a message.
+3. Preferences - Return to Admin Screen Button
+When the Preferences-Return to Admin Screen button is clicked, the admin should return to the Preferences-Admin screen.
+4. Exit Button
+* When the Exit Button is clicked, the admin must exit the application.
+
+
+## Page Latency
+* Add functionalities to the 'Return to Preferences screen' buttons on the home page, the Preferences menu and on each page, and test the transitions between pages.
+
+## Hackerrank Questions
+
+1. Utopian Tree: https://www.hackerrank.com/challenges/utopian-tree/problem
diff --git a/__init__.py b/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/admin_control_menu_ui.py b/admin_control_menu_ui.py
new file mode 100644
index 0000000..d9def1c
--- /dev/null
+++ b/admin_control_menu_ui.py
@@ -0,0 +1,175 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/admin_control_menu.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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.setFixedSize(800, 600)
+ MainWindow.setStyleSheet("background-image: url(./assets/zemin-buyuk.jpg);\n"
+"QWidget::setFixedSize(800, 600);")
+ self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.label = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label.setGeometry(QtCore.QRect(260, 70, 241, 41))
+ self.label.setStyleSheet("color:white;\n"
+"font-size:36px;\n"
+"font-weight:bold;\n"
+"background:none")
+ self.label.setObjectName("label")
+ self.activity_check = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.activity_check.setGeometry(QtCore.QRect(20, 170, 161, 41))
+ self.activity_check.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.activity_check.setObjectName("activity_check")
+ self.exit = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.exit.setGeometry(QtCore.QRect(20, 490, 161, 41))
+ self.exit.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#47545a;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.exit.setObjectName("exit")
+ self.tableWidget = QtWidgets.QTableWidget(parent=self.centralwidget)
+ self.tableWidget.setGeometry(QtCore.QRect(200, 170, 581, 411))
+ self.tableWidget.setStyleSheet("QTableView{\n"
+"color:black;\n"
+"background:white;\n"
+"font-weight:bold;\n"
+"border-radius:5px\n"
+"}")
+ self.tableWidget.setTabKeyNavigation(True)
+ self.tableWidget.setDragEnabled(True)
+ self.tableWidget.setRowCount(0)
+ self.tableWidget.setObjectName("tableWidget")
+ self.tableWidget.setColumnCount(4)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ font = QtGui.QFont()
+ font.setPointSize(13)
+ font.setBold(True)
+ font.setWeight(75)
+ item.setFont(font)
+ self.tableWidget.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ font = QtGui.QFont()
+ font.setPointSize(13)
+ font.setBold(True)
+ font.setWeight(75)
+ item.setFont(font)
+ self.tableWidget.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ font = QtGui.QFont()
+ font.setPointSize(13)
+ font.setBold(True)
+ font.setWeight(75)
+ item.setFont(font)
+ self.tableWidget.setHorizontalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ font = QtGui.QFont()
+ font.setPointSize(13)
+ font.setBold(True)
+ font.setWeight(75)
+ item.setFont(font)
+ self.tableWidget.setHorizontalHeaderItem(3, item)
+ self.tableWidget.horizontalHeader().setCascadingSectionResizes(False)
+ self.tableWidget.horizontalHeader().setDefaultSectionSize(140)
+ self.tableWidget.horizontalHeader().setMinimumSectionSize(19)
+ self.tableWidget.verticalHeader().setDefaultSectionSize(35)
+ self.tableWidget.verticalHeader().setMinimumSectionSize(21)
+ self.send_email = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.send_email.setGeometry(QtCore.QRect(20, 330, 161, 41))
+ self.send_email.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.send_email.setObjectName("send_email")
+ self.main_menu = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.main_menu.setGeometry(QtCore.QRect(20, 410, 161, 41))
+ self.main_menu.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.main_menu.setObjectName("main_menu")
+ self.create_user = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.create_user.setGeometry(QtCore.QRect(20, 250, 161, 41))
+ self.create_user.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.create_user.setObjectName("create_user")
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.label.setText(_translate("MainWindow", "ADMIN MENU"))
+ self.activity_check.setText(_translate("MainWindow", "Activity Check"))
+ self.exit.setText(_translate("MainWindow", "Exit"))
+ self.tableWidget.setSortingEnabled(True)
+ item = self.tableWidget.horizontalHeaderItem(0)
+ item.setText(_translate("MainWindow", "Etkinlik Adı"))
+ item = self.tableWidget.horizontalHeaderItem(1)
+ item.setText(_translate("MainWindow", "Başlanıç Zamanı"))
+ item = self.tableWidget.horizontalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Katılımcı Email"))
+ item = self.tableWidget.horizontalHeaderItem(3)
+ item.setText(_translate("MainWindow", "Oranizatör Email"))
+ self.send_email.setText(_translate("MainWindow", "Send Email"))
+ self.main_menu.setText(_translate("MainWindow", "Main Menu"))
+ self.create_user.setText(_translate("MainWindow", "Create User"))
diff --git a/admin_menu_ui.py b/admin_menu_ui.py
new file mode 100644
index 0000000..2cfbb22
--- /dev/null
+++ b/admin_menu_ui.py
@@ -0,0 +1,152 @@
+# Form implementation generated from reading ui file '/Users/yhtyyarannayev/Documents/GitHub/Python-Module-Week7/English/admin_menu.ui'
+#
+# Created by: PyQt6 UI code generator 6.2.2
+#
+# 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.setFixedSize(800, 600)
+ MainWindow.setStyleSheet(
+ "padding:0;\n" "background-image: url(./assets/zemin-buyuk.jpg);"
+ )
+ self.centralwidget = QtWidgets.QWidget(MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.interviews_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.interviews_Button.setGeometry(QtCore.QRect(320, 350, 141, 31))
+ self.interviews_Button.setAutoFillBackground(False)
+ self.interviews_Button.setStyleSheet(
+ "QPushButton{\n"
+ "color:black;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "QPushButton::hover{\n"
+ "color:white;\n"
+ "background:#47545a;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.interviews_Button.setObjectName("interviews_Button")
+ self.Mentor_interview_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.Mentor_interview_Button.setGeometry(QtCore.QRect(520, 350, 181, 31))
+ self.Mentor_interview_Button.setAutoFillBackground(False)
+ self.Mentor_interview_Button.setStyleSheet(
+ "QPushButton{\n"
+ "color:black;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "QPushButton::hover{\n"
+ "color:white;\n"
+ "background:#47545a;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.Mentor_interview_Button.setObjectName("Mentor_interview_Button")
+ self.Admin_menu_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.Admin_menu_Button.setGeometry(QtCore.QRect(440, 280, 141, 31))
+ self.Admin_menu_Button.setAutoFillBackground(False)
+ self.Admin_menu_Button.setStyleSheet(
+ "QPushButton{\n"
+ "color:black;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "QPushButton::hover{\n"
+ "color:white;\n"
+ "background:#47545a;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.Admin_menu_Button.setObjectName("Admin_menu_Button")
+ self.main_menu = QtWidgets.QPushButton(self.centralwidget)
+ self.main_menu.setGeometry(QtCore.QRect(220, 280, 141, 31))
+ self.main_menu.setAutoFillBackground(False)
+ self.main_menu.setStyleSheet(
+ "QPushButton{\n"
+ "color:black;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "QPushButton::hover{\n"
+ "color:white;\n"
+ "background:#47545a;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.main_menu.setObjectName("main_menu")
+ self.applications_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.applications_Button.setGeometry(QtCore.QRect(100, 350, 141, 31))
+ self.applications_Button.setAutoFillBackground(False)
+ self.applications_Button.setStyleSheet(
+ "QPushButton{\n"
+ "color:black;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "QPushButton::hover{\n"
+ "color:white;\n"
+ "background:#47545a;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.applications_Button.setObjectName("applications_Button")
+ self.exit_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.exit_Button.setGeometry(QtCore.QRect(610, 500, 91, 31))
+ self.exit_Button.setAutoFillBackground(False)
+ self.exit_Button.setStyleSheet(
+ "QPushButton{\n"
+ "color:white;\n"
+ "background:#47545a;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "\n"
+ "QPushButton::hover{\n"
+ "color:#47545a;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.exit_Button.setObjectName("exit_Button")
+ self.label_2 = QtWidgets.QLabel(self.centralwidget)
+ self.label_2.setGeometry(QtCore.QRect(300, 130, 221, 41))
+ self.label_2.setStyleSheet(
+ "color:white;\n" "font-size:36px;\n" "font-weight:bold;\n" "background:none"
+ )
+ self.label_2.setObjectName("label_2")
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.interviews_Button.setText(_translate("MainWindow", "INTERVIEWS"))
+ self.Mentor_interview_Button.setText(
+ _translate("MainWindow", "MENTOR INTERVIEW")
+ )
+ self.Admin_menu_Button.setText(_translate("MainWindow", "ADMIN MENU"))
+ self.main_menu.setText(_translate("MainWindow", "MAIN MENU"))
+ self.applications_Button.setText(_translate("MainWindow", "APPLICATIONS"))
+ self.exit_Button.setText(_translate("MainWindow", "EXIT"))
+ self.label_2.setText(_translate("MainWindow", "ADMIN MENU"))
diff --git a/application_form_ui_ui.py b/application_form_ui_ui.py
new file mode 100644
index 0000000..23a0f53
--- /dev/null
+++ b/application_form_ui_ui.py
@@ -0,0 +1,342 @@
+from PyQt6.QtWidgets import (
+ QApplication,
+ QWidget,
+ QLabel,
+ QLineEdit,
+ QPushButton,
+ QVBoxLayout,
+ QComboBox,
+ QRadioButton,
+ QButtonGroup,
+ QCheckBox,
+ QMessageBox,
+ QTextEdit,
+ QScrollArea,
+)
+from PyQt6.QtCore import Qt
+import sys
+from backend.send_email import send_email
+from backend.list_files import list_drive_files
+from backend.download_file import download_file
+from backend.upload_file import update_file
+from openpyxl import load_workbook
+import datetime
+from db_controllers.connect import connect
+
+
+class VITForm(QWidget):
+ def __init__(self):
+ super().__init__()
+ self.setupUi()
+
+ def setupUi(self):
+ self.setFixedSize(800, 600)
+ self.setWindowTitle("VIT Projesi Başvuru Formu")
+
+ self.form_layout = QVBoxLayout()
+
+ def create_label(text):
+ label = QLabel(text)
+ label.setStyleSheet("font-weight: bold;")
+ return label
+
+ # Email field
+ self.email_label = create_label("Email Adresiniz:")
+ self.email_input = QLineEdit()
+ self.form_layout.addWidget(self.email_label)
+ self.form_layout.addWidget(self.email_input)
+
+ # Adınız Soyadınız
+ self.name_label = create_label("Adınız Soyadınız:")
+ self.name_input = QLineEdit()
+ self.form_layout.addWidget(self.name_label)
+ self.form_layout.addWidget(self.name_input)
+
+ # Telefon Numaranız
+ self.phone_label = create_label("Telefon Numaranız:")
+ self.phone_input = QLineEdit()
+ self.form_layout.addWidget(self.phone_label)
+ self.form_layout.addWidget(self.phone_input)
+
+ # Posta Kodu
+ self.postcode_label = create_label("Posta Kodunuz:")
+ self.postcode_input = QLineEdit()
+ self.form_layout.addWidget(self.postcode_label)
+ self.form_layout.addWidget(self.postcode_input)
+
+ # Yaşadığınız Eyalet
+ self.state_label = create_label("Yaşadığınız Eyalet:")
+ self.state_combo = QComboBox()
+ self.state_combo.setPlaceholderText("Eyalet Seçiniz")
+ self.state_combo.addItems(
+ [
+ "Drenthe",
+ "Flevoland",
+ "Friesland",
+ "Gelderland",
+ "Groningen",
+ "Limburg",
+ "Noord-Brabant",
+ "Noord-Holland",
+ "Overijssel",
+ "Utrecht",
+ "Zeeland",
+ "Zuid-Holland",
+ ]
+ )
+ self.form_layout.addWidget(self.state_label)
+ self.form_layout.addWidget(self.state_combo)
+
+ # Ekonomik Durum (RadioButton)
+ self.economic_status_label = create_label("Ekonomik Durumunuz:")
+ self.economic_status_group = QButtonGroup(self)
+ self.uitkering_btn = QRadioButton("Uitkering Alıyorum")
+ self.part_time_btn = QRadioButton(
+ "Kısmen Uitkering Alıyorum - Parttime Çalışıyorum"
+ )
+ self.uwv_btn = QRadioButton("UWV den uitkering alıyorum")
+ self.no_uitkering_btn = QRadioButton("Çalışıyorum (Uitkerinden Çıktım)")
+ self.no_income_btn = QRadioButton("Kampta kaldığım için uitkering almıyorum")
+ self.form_layout.addWidget(self.economic_status_label)
+ self.form_layout.addWidget(self.uitkering_btn)
+ self.form_layout.addWidget(self.part_time_btn)
+ self.form_layout.addWidget(self.uwv_btn)
+ self.form_layout.addWidget(self.no_uitkering_btn)
+ self.form_layout.addWidget(self.no_income_btn)
+ self.economic_status_group.addButton(self.uitkering_btn)
+ self.economic_status_group.addButton(self.part_time_btn)
+ self.economic_status_group.addButton(self.uwv_btn)
+ self.economic_status_group.addButton(self.no_uitkering_btn)
+ self.economic_status_group.addButton(self.no_income_btn)
+
+ # Şu anda bir dil kursuna devam ediyor musunuz?
+ self.course_label = create_label(
+ "Şu anda bir dil kursuna devam ediyor musunuz?"
+ )
+ self.course_yes = QRadioButton("Evet")
+ self.course_no = QRadioButton("Hayır")
+ self.course_group = QButtonGroup(self)
+ self.course_group.addButton(self.course_yes)
+ self.course_group.addButton(self.course_no)
+ self.form_layout.addWidget(self.course_label)
+ self.form_layout.addWidget(self.course_yes)
+ self.form_layout.addWidget(self.course_no)
+
+ # Yabancı Dil Seviyeniz (Checkbox)
+ self.language_label = create_label("Yabancı Dil Seviyeniz:")
+ self.a1_checkbox = QCheckBox("A1")
+ self.a2_checkbox = QCheckBox("A2")
+ self.b1_checkbox = QCheckBox("B1")
+ self.b2_checkbox = QCheckBox("B2")
+ self.form_layout.addWidget(self.language_label)
+ self.form_layout.addWidget(self.a1_checkbox)
+ self.form_layout.addWidget(self.a2_checkbox)
+ self.form_layout.addWidget(self.b1_checkbox)
+ self.form_layout.addWidget(self.b2_checkbox)
+
+ # IT Kursu/Tecrübe/Projeler (Multiple Text Areas)
+ self.it_course_label = create_label(
+ "Başka bir IT kursu aldınız mı? (Detayları yazın)"
+ )
+ self.it_course_input = QTextEdit()
+ self.form_layout.addWidget(self.it_course_label)
+ self.form_layout.addWidget(self.it_course_input)
+
+ self.it_experience_label = create_label(
+ "Daha önce herhangi bir IT iş tecrübeniz var mı?"
+ )
+ self.it_experience_input = QTextEdit()
+ self.form_layout.addWidget(self.it_experience_label)
+ self.form_layout.addWidget(self.it_experience_input)
+
+ self.project_label = create_label(
+ "Öğretmenlik projesi veya Leerwerktraject projesine dahil misiniz?"
+ )
+ self.project_input = QTextEdit()
+ self.form_layout.addWidget(self.project_label)
+ self.form_layout.addWidget(self.project_input)
+
+ # IT Sektörü (CheckBoxes)
+ self.it_sector_label = create_label(
+ "IT sektöründe hangi bölümde çalışmak istersiniz?"
+ )
+ self.cloud_checkbox = QCheckBox("Cloud Engineer")
+ self.tester_checkbox = QCheckBox("Tester")
+ self.scrum_checkbox = QCheckBox("Scrum Master")
+ self.devops_checkbox = QCheckBox("DevOps Engineer")
+ self.web_checkbox = QCheckBox("Web Tasarım")
+ self.software_checkbox = QCheckBox("Software Developer")
+ self.data_checkbox = QCheckBox("Data Engineer")
+ self.cyber_checkbox = QCheckBox("Cyber Security")
+ self.form_layout.addWidget(self.it_sector_label)
+ self.form_layout.addWidget(self.cloud_checkbox)
+ self.form_layout.addWidget(self.tester_checkbox)
+ self.form_layout.addWidget(self.scrum_checkbox)
+ self.form_layout.addWidget(self.devops_checkbox)
+ self.form_layout.addWidget(self.web_checkbox)
+ self.form_layout.addWidget(self.software_checkbox)
+ self.form_layout.addWidget(self.data_checkbox)
+ self.form_layout.addWidget(self.cyber_checkbox)
+
+ # IT Motivasyon (Text Area)
+ self.motivation_label = create_label(
+ "IT sektöründe kariyer yapmak için sizi harekete geçiren motivasyon nedir?"
+ )
+ self.motivation_input = QTextEdit()
+ self.form_layout.addWidget(self.motivation_label)
+ self.form_layout.addWidget(self.motivation_input)
+
+ # Submit Button
+ self.submit_button = QPushButton("Gönder")
+ self.submit_button.clicked.connect(self.confirm_submission)
+ self.form_layout.addWidget(self.submit_button)
+
+ # Scroll Area
+ scroll_area = QScrollArea()
+ scroll_area.setWidgetResizable(True)
+ scroll_content = QWidget()
+ scroll_content.setLayout(self.form_layout)
+ scroll_area.setWidget(scroll_content)
+
+ # Set main layout
+ main_layout = QVBoxLayout(self)
+ main_layout.addWidget(scroll_area)
+ self.setLayout(main_layout)
+
+ def confirm_submission(self):
+ form_data = [
+ datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
+ self.name_input.text().strip() or "",
+ self.email_input.text().strip() or "",
+ self.phone_input.text().strip() or "",
+ self.postcode_input.text().strip() or "",
+ self.state_combo.currentText().strip() or "",
+ (
+ self.economic_status_group.checkedButton().text()
+ if self.economic_status_group.checkedButton()
+ else ""
+ ),
+ (
+ "Evet"
+ if self.course_yes.isChecked()
+ else ("Hayır" if self.course_no.isChecked() else "")
+ ),
+ ", ".join(
+ [
+ checkbox.text()
+ for checkbox in [
+ self.a1_checkbox,
+ self.a2_checkbox,
+ self.b1_checkbox,
+ self.b2_checkbox,
+ ]
+ if checkbox.isChecked()
+ ]
+ )
+ or "",
+ self.it_course_input.toPlainText().strip() or "",
+ self.it_experience_input.toPlainText().strip() or "",
+ self.project_input.toPlainText().strip() or "",
+ ", ".join(
+ [
+ checkbox.text()
+ for checkbox in [
+ self.cloud_checkbox,
+ self.tester_checkbox,
+ self.scrum_checkbox,
+ self.devops_checkbox,
+ self.web_checkbox,
+ self.software_checkbox,
+ self.data_checkbox,
+ self.cyber_checkbox,
+ ]
+ if checkbox.isChecked()
+ ]
+ )
+ or "",
+ self.motivation_input.toPlainText().strip() or "",
+ "ATANMADI",
+ "VIT5",
+ ]
+ self.submit_form(form_data)
+
+ def submit_form(self, form_data):
+ try:
+ email_body = f"""
+ Merhabalar,
+
+ Aşağıdaki bilgilerle Vit projesine kayıt oldunuz:
+
+ Zaman Damgası: {form_data[0]}
+ Adınız Soyadınız: {form_data[1]}
+ Email Adresiniz: {form_data[2]}
+ Telefon Numaranız: {form_data[3]}
+ Posta Kodunuz: {form_data[4]}
+ Yaşadığınız Eyalet: {form_data[5]}
+ Ekonomik Durumunuz: {form_data[6]}
+ Dil Kursuna Devam: {form_data[7]}
+ Dil Seviyesi: {form_data[8]}
+ IT Kursu: {form_data[9]}
+ IT Deneyimi: {form_data[10]}
+ Katıldığı Proje: {form_data[11]}
+ Tercih Edilen Sektör: {form_data[12]}
+ Motivasyon: {form_data[13]}
+ """
+
+ send_email(form_data[2], email_body, "VIT Projesi Başvurunuz Hk.")
+ send_email("vit5crmproject@gmail.com", email_body, "Yeni Başvuru")
+
+ # send the data to database
+ conn = connect("crm")
+ cur = conn.cursor()
+ cur.execute("Select * from applications LIMIT 1")
+ headers = [desc[0] for desc in cur.description]
+ columns = ", ".join([f'"{header}"' for header in headers[1:]])
+ placeholders = ", ".join(["%s"] * len(headers[1:]))
+ insert_query = (
+ f"INSERT INTO applications ({columns}) VALUES ({placeholders})"
+ )
+ cur.execute(insert_query, form_data)
+ conn.commit()
+ cur.close()
+ conn.close()
+
+ QMessageBox.information(self, "Başarılı", "Form başarıyla gönderildi!")
+
+ # İşlem tamamlandığında başarı mesajını göster
+ self.show_success_message()
+
+ except Exception as e:
+ print(e)
+ QMessageBox.critical(
+ self, "Hata", f"E-posta gönderimi sırasında bir hata oluştu: {e}"
+ )
+
+ def show_success_message(self):
+ # Tüm form alanlarını kaldır
+ for i in reversed(range(self.form_layout.count())):
+ widget = self.form_layout.itemAt(i).widget()
+ if widget is not None:
+ widget.deleteLater()
+
+ # Teşekkür mesajını göster
+ success_message = QLabel(
+ "TEBRİKLER, BAŞARIYLA KAYIT OLDUNUZ.\nVIT PROJESİNE GÖSTERDİĞİNİZ İLGİYE TEŞEKKÜR EDERİZ."
+ )
+ success_message.setAlignment(Qt.AlignmentFlag.AlignCenter)
+ success_message.setStyleSheet(
+ "font-size: 18px; font-weight: bold; text-align: center;"
+ )
+ self.form_layout.addWidget(success_message)
+
+ # Kapat butonunu ekle
+ close_button = QPushButton("FORMU KAPAT")
+ close_button.clicked.connect(self.close)
+ self.form_layout.addWidget(close_button)
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ vit_form = VITForm()
+ vit_form.show()
+ sys.exit(app.exec())
diff --git a/application_menu_ui.py b/application_menu_ui.py
new file mode 100644
index 0000000..dad468c
--- /dev/null
+++ b/application_menu_ui.py
@@ -0,0 +1,265 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/application_menu.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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.setFixedSize(800, 600)
+ MainWindow.setStyleSheet("background-image: url(./assets/zemin-buyuk.jpg);\n"
+"QWidget::setFixedSize(800, 600);")
+ self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.search = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.search.setGeometry(QtCore.QRect(680, 140, 100, 32))
+ self.search.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#db1e3c;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#db1e3c;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.search.setObjectName("search")
+ self.label = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label.setGeometry(QtCore.QRect(280, 70, 241, 41))
+ self.label.setStyleSheet("color:white;\n"
+"font-size:36px;\n"
+"font-weight:bold;\n"
+"background:none")
+ self.label.setObjectName("label")
+ self.lineEdit = QtWidgets.QLineEdit(parent=self.centralwidget)
+ self.lineEdit.setGeometry(QtCore.QRect(310, 140, 361, 31))
+ self.lineEdit.setStyleSheet("QLineEdit{\n"
+"border-radius:10px;\n"
+"background:none;\n"
+"padding:5px\n"
+"}")
+ self.lineEdit.setObjectName("lineEdit")
+ self.assigned_mentor_interviews = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.assigned_mentor_interviews.setGeometry(QtCore.QRect(20, 180, 231, 32))
+ self.assigned_mentor_interviews.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.assigned_mentor_interviews.setObjectName("assigned_mentor_interviews")
+ self.unassigned_mentor_interviews = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.unassigned_mentor_interviews.setGeometry(QtCore.QRect(20, 220, 251, 32))
+ self.unassigned_mentor_interviews.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.unassigned_mentor_interviews.setObjectName("unassigned_mentor_interviews")
+ self.prev_vit_check = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.prev_vit_check.setGeometry(QtCore.QRect(310, 180, 151, 32))
+ self.prev_vit_check.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.prev_vit_check.setObjectName("prev_vit_check")
+ self.filtered_applications = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.filtered_applications.setGeometry(QtCore.QRect(310, 220, 151, 32))
+ self.filtered_applications.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.filtered_applications.setObjectName("filtered_applications")
+ self.duplicate_application = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.duplicate_application.setGeometry(QtCore.QRect(470, 180, 151, 32))
+ self.duplicate_application.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.duplicate_application.setObjectName("duplicate_application")
+ self.different_registeration = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.different_registeration.setGeometry(QtCore.QRect(470, 220, 151, 32))
+ self.different_registeration.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.different_registeration.setObjectName("different_registeration")
+ self.all_applications = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.all_applications.setGeometry(QtCore.QRect(20, 140, 141, 31))
+ self.all_applications.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.all_applications.setObjectName("all_applications")
+ self.main_menu = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.main_menu.setGeometry(QtCore.QRect(630, 180, 151, 32))
+ self.main_menu.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.main_menu.setObjectName("main_menu")
+ self.exit = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.exit.setGeometry(QtCore.QRect(630, 220, 151, 32))
+ self.exit.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#47545a;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.exit.setObjectName("exit")
+ self.tableWidget = QtWidgets.QTableWidget(parent=self.centralwidget)
+ self.tableWidget.setGeometry(QtCore.QRect(20, 270, 761, 321))
+ self.tableWidget.setStyleSheet("QTableView{\n"
+"color:black;\n"
+"background:white;\n"
+"font-weight:bold;\n"
+"border-radius:5px\n"
+"}")
+ self.tableWidget.setTabKeyNavigation(True)
+ self.tableWidget.setDragEnabled(True)
+ self.tableWidget.setRowCount(0)
+ self.tableWidget.setObjectName("tableWidget")
+ self.tableWidget.setColumnCount(8)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(3, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(4, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(5, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(6, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(7, item)
+ self.tableWidget.horizontalHeader().setCascadingSectionResizes(False)
+ self.tableWidget.horizontalHeader().setDefaultSectionSize(100)
+ self.tableWidget.horizontalHeader().setMinimumSectionSize(19)
+ self.tableWidget.verticalHeader().setDefaultSectionSize(25)
+ self.tableWidget.verticalHeader().setMinimumSectionSize(21)
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.search.setText(_translate("MainWindow", "Search"))
+ self.label.setText(_translate("MainWindow", "APPLICATIONS"))
+ self.lineEdit.setPlaceholderText(_translate("MainWindow", "Enter your search term..."))
+ self.assigned_mentor_interviews.setText(_translate("MainWindow", "Assigned Mentor Interviews"))
+ self.unassigned_mentor_interviews.setText(_translate("MainWindow", "Unassigned Mentor Interviews"))
+ self.prev_vit_check.setText(_translate("MainWindow", "Prev VIT Check"))
+ self.filtered_applications.setText(_translate("MainWindow", "Filtered Application"))
+ self.duplicate_application.setText(_translate("MainWindow", "Duplicate Application"))
+ self.different_registeration.setText(_translate("MainWindow", "Differrent Registration"))
+ self.all_applications.setText(_translate("MainWindow", "All Aplications"))
+ self.main_menu.setText(_translate("MainWindow", "Main Menu"))
+ self.exit.setText(_translate("MainWindow", "Exit"))
+ self.tableWidget.setSortingEnabled(True)
+ item = self.tableWidget.horizontalHeaderItem(0)
+ item.setText(_translate("MainWindow", "Tarih"))
+ item = self.tableWidget.horizontalHeaderItem(1)
+ item.setText(_translate("MainWindow", "Isim Soyisim"))
+ item = self.tableWidget.horizontalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Email"))
+ item = self.tableWidget.horizontalHeaderItem(3)
+ item.setText(_translate("MainWindow", "Telefon"))
+ item = self.tableWidget.horizontalHeaderItem(4)
+ item.setText(_translate("MainWindow", "Posta Kodu"))
+ item = self.tableWidget.horizontalHeaderItem(5)
+ item.setText(_translate("MainWindow", "Eyalet"))
+ item = self.tableWidget.horizontalHeaderItem(6)
+ item.setText(_translate("MainWindow", "Mevcut Durum"))
+ item = self.tableWidget.horizontalHeaderItem(7)
+ item.setText(_translate("MainWindow", "Ekonomik Durum"))
diff --git a/assets/.DS_Store b/assets/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/assets/.DS_Store differ
diff --git a/assets/assets b/assets/assets
new file mode 100644
index 0000000..a411285
Binary files /dev/null and b/assets/assets differ
diff --git a/assets/create_user.jpg b/assets/create_user.jpg
new file mode 100644
index 0000000..9a7252a
Binary files /dev/null and b/assets/create_user.jpg differ
diff --git a/assets/login.jpg b/assets/login.jpg
new file mode 100644
index 0000000..77717fb
Binary files /dev/null and b/assets/login.jpg differ
diff --git a/assets/send_email.jpg b/assets/send_email.jpg
new file mode 100644
index 0000000..d99ec7a
Binary files /dev/null and b/assets/send_email.jpg differ
diff --git a/assets/zemin-buyuk.jpg b/assets/zemin-buyuk.jpg
new file mode 100644
index 0000000..cb5cc4f
Binary files /dev/null and b/assets/zemin-buyuk.jpg differ
diff --git a/backend/__init__.py b/backend/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/backend/app_page_filter.py b/backend/app_page_filter.py
new file mode 100644
index 0000000..4904c96
--- /dev/null
+++ b/backend/app_page_filter.py
@@ -0,0 +1,96 @@
+from db_controllers.fetch_data import fetch_data
+from PyQt6 import QtWidgets, QtCore
+
+
+def app_page_filter(search_text, page_window, but_value):
+ # Define the query to fetch data from the specified table
+ base_query = "SELECT * FROM applications"
+ if search_text:
+ print(f"Searching for: {search_text}")
+ query = f"""
+ SELECT * FROM applications
+ WHERE "Adınız Soyadınız" ILIKE '%{search_text}%' OR
+ "Mail adresiniz" ILIKE '%{search_text}%' OR
+ "Telefon Numaranız" ILIKE '%{search_text}%' OR
+ "Posta Kodunuz" ILIKE '%{search_text}%' OR
+ "Yaşadığınız Eyalet" ILIKE '%{search_text}%' OR
+ "Ekonomik Durumunuz" ILIKE '%{search_text}%' OR
+ "Dil kursuna devam ediyor musunuz?" ILIKE '%{search_text}%' OR
+ "Yabancı dil Seviyeniz" ILIKE '%{search_text}%' OR
+ "Başka bir IT kursu (Bootcamp) bitirdiniz mi?" ILIKE '%{search_text}%' OR
+ "Daha önce herhangi bir IT iş tecrübeniz var mı?" ILIKE '%{search_text}%' OR
+ "Şu anda herhangi bir projeye dahil misiniz?" ILIKE '%{search_text}%' OR
+ "IT sektöründe hangi bölüm(ler)de çalışmak istiyorsunuz?" ILIKE '%{search_text}%' OR
+ "Neden VIT projesine katılmak istiyorsunuz?" ILIKE '%{search_text}%' OR
+ "Mentor gorusmesi" ILIKE '%{search_text}%' OR
+ "Basvuru Donemi" ILIKE '%{search_text}%'
+ """
+
+ elif but_value == "OK" or but_value == "ATANMADI":
+ query = f"""
+ SELECT * FROM applications
+ WHERE "Mentor gorusmesi" = '{but_value}'
+ """
+ elif but_value == "VIT3":
+ query = f"""
+ SELECT * FROM applications
+ WHERE "Basvuru Donemi" = '{but_value}'
+ """
+ elif but_value == "DUPLICATE":
+ query = f"""
+ SELECT * FROM applications
+ WHERE "Adınız Soyadınız" IN (
+ SELECT "Adınız Soyadınız"
+ FROM applications
+ GROUP BY "Adınız Soyadınız"
+ HAVING COUNT(*) > 1
+ )
+ """
+ elif but_value == "UNDUPLICATE":
+ # filter out duplicate names
+ query = f"""
+ SELECT * FROM applications
+ WHERE "Adınız Soyadınız" IN (
+ SELECT "Adınız Soyadınız"
+ FROM applications
+ GROUP BY "Adınız Soyadınız"
+ HAVING COUNT(*) = 1
+ )
+ """
+ elif search_text is None and but_value is None:
+ query = base_query
+
+ # Fetch data from the database
+ headers, rows = fetch_data("crm", query)
+ print("Headers:", headers)
+ print("Rows:", rows)
+
+ if not rows:
+ print("No data found in the table: applications")
+ return False
+
+ # Filter headers to remove None values
+ headers = [header for header in headers if header is not None]
+ page_window.tableWidget.setColumnCount(len(headers))
+ page_window.tableWidget.clear()
+
+ # Get the filtered data based on the button value
+ filtered_data = rows
+
+ # Set the headers
+ for i, header in enumerate(headers):
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(
+ QtCore.Qt.AlignmentFlag.AlignLeading | QtCore.Qt.AlignmentFlag.AlignVCenter
+ )
+ item.setText(header)
+ page_window.tableWidget.setHorizontalHeaderItem(i, item)
+
+ # Populate the table with filtered data
+ page_window.tableWidget.setRowCount(len(filtered_data))
+ for row_idx, row in enumerate(filtered_data):
+ for col_idx, cell in enumerate(row):
+ item = QtWidgets.QTableWidgetItem(str(cell))
+ page_window.tableWidget.setItem(row_idx, col_idx, item)
+
+ print(f"Data from table 'applications' loaded successfully.")
diff --git a/backend/auth.py b/backend/auth.py
new file mode 100644
index 0000000..dd90693
--- /dev/null
+++ b/backend/auth.py
@@ -0,0 +1,28 @@
+from google.oauth2.credentials import Credentials
+from google_auth_oauthlib.flow import InstalledAppFlow
+from google.auth.transport.requests import Request
+import os.path
+
+# If modifying these scopes, delete the file token.json.
+SCOPES = ["https://www.googleapis.com/auth/drive"]
+
+
+def authenticate():
+ creds = None
+ # The file token.json stores the user's access and refresh tokens, and is
+ # created automatically when the authorization flow completes for the first time.
+ if os.path.exists("token.json"):
+ creds = Credentials.from_authorized_user_file("token.json", SCOPES)
+ # If there are no valid credentials available, let the user log in.
+ if not creds or not creds.valid:
+ if creds and creds.expired and creds.refresh_token:
+ creds.refresh(Request())
+ else:
+ flow = InstalledAppFlow.from_client_secrets_file(
+ "./backend/credentials.json", SCOPES
+ )
+ creds = flow.run_local_server(port=0)
+ # Save the credentials for the next run
+ with open("token.json", "w") as token:
+ token.write(creds.to_json())
+ return creds
diff --git a/backend/create_user.py b/backend/create_user.py
new file mode 100644
index 0000000..6174315
--- /dev/null
+++ b/backend/create_user.py
@@ -0,0 +1,23 @@
+from db_controllers.connect import connect
+from PyQt6.QtWidgets import QMessageBox
+
+
+def create_user(username, password, role):
+ if (username and password and role) == "":
+ QMessageBox.warning(None, "Empty Fields", "Please fill all the fields.")
+ return
+ query = f"SELECT kullanici FROM users WHERE kullanici='{username}'"
+ conn = connect("crm")
+ cur = conn.cursor()
+ cur.execute(query)
+ user = cur.fetchone()
+ if user:
+ QMessageBox.warning(None, "User Exists", "User already exists.")
+ return
+ else:
+ query = f"INSERT INTO users (kullanici, parola, yetki) VALUES ('{username}', '{password}', '{role}')"
+ cur.execute(query)
+ conn.commit()
+ cur.close()
+ conn.close()
+ QMessageBox.information(None, "User Created", "User created successfully.")
diff --git a/backend/download_file.py b/backend/download_file.py
new file mode 100644
index 0000000..1728792
--- /dev/null
+++ b/backend/download_file.py
@@ -0,0 +1,38 @@
+from googleapiclient.discovery import build
+from googleapiclient.http import MediaIoBaseDownload
+import io
+from backend.auth import authenticate
+
+
+def download_file(file_id):
+ creds = authenticate()
+ service = build("drive", "v3", credentials=creds)
+
+ # Get file metadata
+ file_metadata = service.files().get(fileId=file_id).execute()
+ mime_type = file_metadata.get("mimeType")
+ name = file_metadata.get("name")
+
+ # Check if the file is a Google Docs Editors file
+ if mime_type in [
+ "application/vnd.google-apps.document",
+ "application/vnd.google-apps.spreadsheet",
+ "application/vnd.google-apps.presentation",
+ ]:
+ request = service.files().export_media(
+ fileId=file_id,
+ mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+ )
+ else:
+ request = service.files().get_media(fileId=file_id)
+
+ file = io.BytesIO()
+ downloader = MediaIoBaseDownload(file, request)
+ done = False
+ while not done:
+ status, done = downloader.next_chunk()
+ print(f"Download {int(status.progress() * 100)}%.")
+
+ # Save the file to the disk
+ with open(f"{name}", "wb") as f:
+ f.write(file.getvalue())
diff --git a/backend/fetch_candidate_emails.py b/backend/fetch_candidate_emails.py
new file mode 100644
index 0000000..211f2ad
--- /dev/null
+++ b/backend/fetch_candidate_emails.py
@@ -0,0 +1,15 @@
+from db_controllers.fetch_data import fetch_data
+
+
+def fetch_canditate_emails(comboBox, email_set_field=None):
+ headers, rows = fetch_data(
+ "crm", f"""SELECT "Adınız Soyadınız", "Mail adresiniz" FROM applications"""
+ )
+
+ if not rows:
+ print("No data found in the table: interviews")
+ return False
+
+ for row in rows:
+ comboBox.addItem(row[0])
+ comboBox.activated.connect(lambda i: email_set_field.setText(rows[i + 1][1]))
diff --git a/backend/interview_filter.py b/backend/interview_filter.py
new file mode 100644
index 0000000..e5f27c4
--- /dev/null
+++ b/backend/interview_filter.py
@@ -0,0 +1,56 @@
+from PyQt6 import QtWidgets, QtCore
+from db_controllers.fetch_data import fetch_data
+
+
+def interviews_page_filter_function(project_type, search_text, interviews_window):
+ # Interviews columns: Adınız Soyadını, Proje gonderilis tarihi, Projenin gelis tarihi
+ # Fetch data from the database
+ if project_type == "Proje gonderilis tarihi":
+ query = f"""
+ SELECT * FROM interviews
+ WHERE "Proje gonderilis tarihi" IS NOT NULL
+ """
+ elif project_type == "Projenin gelis tarihi":
+ query = f"""
+ SELECT * FROM interviews
+ WHERE "Projenin gelis tarihi" IS NOT NULL
+ """
+ elif search_text:
+ query = f"""
+ SELECT * FROM interviews
+ WHERE "Adınız Soyadınız" ILIKE '%{search_text}%' or "Proje gonderilis tarihi" ILIKE '%{search_text}%' or "Projenin gelis tarihi" ILIKE '%{search_text}%'
+ """
+ headers, rows = fetch_data("crm", query)
+ print("Headers:", headers)
+ print("Rows:", rows)
+
+ if not rows:
+ print("No data found in the table: interviews")
+ return False
+
+ interviews_window.tableWidget.clear()
+ interviews_window.tableWidget.setColumnCount(len(headers))
+
+ interviews_window.tableWidget.setRowCount(len(rows))
+
+ for i, header in enumerate(headers):
+ if header == "None" or header is None:
+ continue
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(
+ QtCore.Qt.AlignmentFlag.AlignLeading | QtCore.Qt.AlignmentFlag.AlignVCenter
+ )
+ item.setText(header)
+ interviews_window.tableWidget.setHorizontalHeaderItem(i, item)
+
+ for i in range(len(rows)):
+ for j in range(len(headers)):
+ if rows[i][j] is None:
+ continue
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(
+ QtCore.Qt.AlignmentFlag.AlignLeading
+ | QtCore.Qt.AlignmentFlag.AlignVCenter
+ )
+ item.setText(str(rows[i][j]))
+ interviews_window.tableWidget.setItem(i, j, item)
diff --git a/backend/list_files.py b/backend/list_files.py
new file mode 100644
index 0000000..c219639
--- /dev/null
+++ b/backend/list_files.py
@@ -0,0 +1,22 @@
+from backend.auth import authenticate
+from googleapiclient.discovery import build
+
+
+def list_drive_files():
+ creds = authenticate()
+ service = build("drive", "v3", credentials=creds)
+
+ results = (
+ service.files()
+ .list(
+ pageSize=10,
+ fields="nextPageToken, files(id, name)",
+ )
+ .execute()
+ )
+ items = results.get("files", [])
+
+ if not items:
+ return []
+ else:
+ return items
diff --git a/backend/login.py b/backend/login.py
new file mode 100644
index 0000000..0b34dad
--- /dev/null
+++ b/backend/login.py
@@ -0,0 +1,21 @@
+from db_controllers.fetch_data import fetch_data
+
+
+def login(username, password, login_window, admin_window, user_window, get_role):
+ # Define the query to fetch user data from the database
+ query = "SELECT yetki FROM users WHERE kullanici = '{}' AND parola = '{}'".format(
+ username, password
+ )
+
+ # Fetch user data from the database
+ headers, rows = fetch_data("crm", query)
+ print(rows)
+
+ if rows and len(rows) > 0:
+ get_role(rows[0][0])
+ if rows[0][0] == "admin":
+ admin_window()
+ elif rows[0][0] == "user":
+ user_window()
+ else:
+ login_window.error_message.setText("Invalid username or password!")
diff --git a/backend/mentor_interview_page_filter.py b/backend/mentor_interview_page_filter.py
new file mode 100644
index 0000000..82b103a
--- /dev/null
+++ b/backend/mentor_interview_page_filter.py
@@ -0,0 +1,57 @@
+from PyQt6 import QtWidgets, QtCore
+from db_controllers.fetch_data import fetch_data
+
+
+def mentor_interview_page_filter(comboBox, search_text, mentor_interview_window):
+ # Mentor columns: Tarih Sınıf İsim Soyisim Mentör Mentör Tavsiyesi Açıklama
+
+ if comboBox:
+ query = f"""
+ SELECT * FROM mentors
+ WHERE "Mentör Tavsiyesi" ILIKE '%{comboBox.currentText()}%'
+ """
+ elif search_text:
+ query = f"""
+ SELECT * FROM mentors
+ WHERE "İsim Soyisim" ILIKE '%{search_text}%' or "Mentör" ILIKE '%{search_text}%' or "Sınıf" ILIKE '%{search_text}%' or "Mentör Tavsiyesi" ILIKE '%{search_text}%' or "Açıklama" ILIKE '%{search_text}%'
+ """
+ else:
+ query = f"""
+ SELECT * FROM mentors
+ """
+
+ # Fetch data from the database
+ headers, rows = fetch_data("crm", query)
+ print("Headers:", headers)
+ print("Rows:", rows)
+
+ if not rows:
+ print("No data found in the table: applications")
+ return False
+
+ mentor_interview_window.tableWidget.clear()
+ mentor_interview_window.tableWidget.setColumnCount(len(headers))
+
+ mentor_interview_window.tableWidget.setRowCount(len(rows))
+
+ for i, header in enumerate(headers):
+ if header == "None" or header is None:
+ continue
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(
+ QtCore.Qt.AlignmentFlag.AlignLeading | QtCore.Qt.AlignmentFlag.AlignVCenter
+ )
+ item.setText(header)
+ mentor_interview_window.tableWidget.setHorizontalHeaderItem(i, item)
+
+ for i in range(len(rows)):
+ for j in range(len(headers)):
+ if rows[i][j] is None:
+ continue
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(
+ QtCore.Qt.AlignmentFlag.AlignLeading
+ | QtCore.Qt.AlignmentFlag.AlignVCenter
+ )
+ item.setText(str(rows[i][j]))
+ mentor_interview_window.tableWidget.setItem(i, j, item)
diff --git a/backend/read_xlsx.py b/backend/read_xlsx.py
new file mode 100644
index 0000000..245f826
--- /dev/null
+++ b/backend/read_xlsx.py
@@ -0,0 +1,44 @@
+from openpyxl import load_workbook
+
+
+def read_xlsx(file_name):
+ # Load the .xlsx file
+ workbook = load_workbook(filename=file_name)
+
+ # Select the active worksheet
+ sheet = workbook.active
+
+ rows = []
+
+ # Loop through all rows and columns and filter empty rows
+ for row in sheet.iter_rows(min_row=1, values_only=True):
+ # Check if the row is completely empty
+ if all(cell is None for cell in row):
+ continue
+ rows.append(list(row)) # Convert tuple to list
+
+ if not rows:
+ return []
+
+ # Extract headers and filter out None values
+ headers = rows[0]
+ filtered_headers = [header for header in headers if header is not None]
+
+ # Adjust the rest of the rows based on the filtered headers
+ adjusted_rows = [filtered_headers]
+ for row in rows[1:]:
+ adjusted_row = []
+ for i, cell in enumerate(row):
+ if i < len(headers) and headers[i] is not None:
+ adjusted_row.append(cell)
+ elif i < len(headers) and headers[i] is None:
+ continue
+ else:
+ adjusted_row.append(None)
+ adjusted_rows.append(adjusted_row)
+
+ return adjusted_rows
+
+
+if __name__ == "__main__":
+ print(read_xlsx("Mentor.xlsx"))
diff --git a/backend/send_email.py b/backend/send_email.py
new file mode 100644
index 0000000..35b147a
--- /dev/null
+++ b/backend/send_email.py
@@ -0,0 +1,38 @@
+import os
+import smtplib
+from email.mime.text import MIMEText
+from email.header import Header
+from dotenv import load_dotenv
+from PyQt6.QtWidgets import QMessageBox
+
+load_dotenv()
+
+
+def send_email(receiver_email, message, subject):
+ sender_email = os.environ["GMAIL_USERNAME"]
+ password = os.environ["GMAIL_PASSWORD"]
+
+ email = MIMEText(message, "plain", "utf-8")
+
+ email["From"] = str(Header(sender_email, "utf-8"))
+ email["To"] = str(Header(receiver_email, "utf-8"))
+ email["Subject"] = str(Header(subject, "utf-8"))
+
+ try:
+ # SMTP sunucusuna bağlan
+ server = smtplib.SMTP("smtp.gmail.com", 587)
+ server.ehlo() # SMTP sunucusuna kendini tanıt
+ server.starttls() # Güvenli bağlantı kur
+
+ # Giriş yap
+ server.login(sender_email, password)
+
+ # Email gönder
+ server.sendmail(sender_email, [receiver_email], email.as_string())
+ QMessageBox.information(None, "Email Sent", "Email sent successfully.")
+ return "Email sent successfully."
+ except Exception as e:
+ print(f"An error occurred while sending the email: {e}")
+ finally:
+ # Sunucudan çıkış yap
+ server.quit()
diff --git a/backend/set_table_data.py b/backend/set_table_data.py
new file mode 100644
index 0000000..ffaf0d0
--- /dev/null
+++ b/backend/set_table_data.py
@@ -0,0 +1,38 @@
+from db_controllers.fetch_data import fetch_data
+from PyQt6 import QtWidgets, QtCore
+
+
+def set_table_data(window, db_name, table_name):
+ # Define the query to fetch data from the specified table
+ query = f'SELECT * FROM "{table_name}"'
+
+ # Fetch data from the database
+ headers, rows = fetch_data(db_name, query)
+ print("Headers:", headers)
+ print("Rows:", rows)
+
+ if not rows:
+ print(f"No data found in the table: {table_name}")
+ return False
+
+ # Clear the table widget and set the number of columns and rows
+ window.tableWidget.clear()
+ window.tableWidget.setColumnCount(len(headers))
+ window.tableWidget.setRowCount(len(rows))
+
+ # Set the headers
+ for i, header in enumerate(headers):
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(
+ QtCore.Qt.AlignmentFlag.AlignLeading | QtCore.Qt.AlignmentFlag.AlignVCenter
+ )
+ item.setText(header)
+ window.tableWidget.setHorizontalHeaderItem(i, item)
+
+ # Populate the table with data
+ for row_idx, row in enumerate(rows):
+ for col_idx, cell in enumerate(row):
+ item = QtWidgets.QTableWidgetItem(str(cell))
+ window.tableWidget.setItem(row_idx, col_idx, item)
+
+ print(f"Data from table '{table_name}' loaded successfully.")
diff --git a/backend/upload_file.py b/backend/upload_file.py
new file mode 100644
index 0000000..6603036
--- /dev/null
+++ b/backend/upload_file.py
@@ -0,0 +1,38 @@
+from google.oauth2.credentials import Credentials
+from googleapiclient.discovery import build
+from googleapiclient.http import MediaFileUpload
+from backend.auth import authenticate
+
+
+def update_file(
+ file_id,
+ filename,
+ mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+):
+
+ authenticate() # guncelleme icin
+
+ # kimlik dogrulama
+ creds = Credentials.from_authorized_user_file(
+ "token.json", ["https://www.googleapis.com/auth/drive"]
+ )
+
+ # Google Drive API servisi baslatma
+ service = build("drive", "v3", credentials=creds)
+
+ try:
+ # MediaFileupload;hangi dosyanin yuklenecegini belirtir. Google'dan gelen hazir bir sinif...
+ # Mimetype; dosyanin turu...Resumable; yuklemenin kesilip devam edebilmesi icin.
+ media = MediaFileUpload(filename, mimetype=mimeType, resumable=True)
+
+ # dosya guncelleme
+ updated_file = (
+ service.files().update(fileId=file_id, media_body=media).execute()
+ )
+
+ # Güncellenen dosyanın adı
+ return updated_file.get("name")
+
+ except Exception as e:
+ print(f"Dosya güncellenirken hata oluştu: {e}")
+ return None
diff --git a/backend/write_xlsx.py b/backend/write_xlsx.py
new file mode 100644
index 0000000..11b4db9
--- /dev/null
+++ b/backend/write_xlsx.py
@@ -0,0 +1,16 @@
+from openpyxl import load_workbook
+
+
+def write_xlsx(file_name, rows):
+ # Load the .xlsx file
+ workbook = load_workbook(filename=file_name)
+
+ # Select the active worksheet
+ sheet = workbook.active
+
+ # Loop through all rows and columns and filter empty rows
+ for i, row in enumerate(rows):
+ for j, cell in enumerate(row):
+ sheet.cell(row=i + 1, column=j + 1, value=cell)
+
+ workbook.save(file_name)
diff --git a/check_assets.py b/check_assets.py
new file mode 100644
index 0000000..de361ea
--- /dev/null
+++ b/check_assets.py
@@ -0,0 +1,22 @@
+import os
+
+
+# each python file has background image and its path starts with :/assets/ chane it to ./
+def check_asset_path_and_fix_size():
+ for root, dirs, files in os.walk("."):
+ for file in files:
+ if file.endswith(".py"):
+ # exclude this file
+ if file == "check_assets.py":
+ continue
+ with open(os.path.join(root, file), "r") as f:
+ lines = f.readlines()
+ with open(os.path.join(root, file), "w") as f:
+ for line in lines:
+ if ":/assets/" in line:
+ line = line.replace(":/assets/", "./")
+ if "MainWindow.resize" in line:
+ line = line.replace(
+ "MainWindow.resize", "MainWindow.setFixedSize"
+ )
+ f.write(line)
diff --git a/create_user_ui.py b/create_user_ui.py
new file mode 100644
index 0000000..96a3675
--- /dev/null
+++ b/create_user_ui.py
@@ -0,0 +1,98 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/create_user.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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_create_user(object):
+ def setupUi(self, create_user):
+ create_user.setObjectName("create_user")
+ create_user.resize(350, 300)
+ create_user.setStyleSheet("background-image: url(./assets/create_user.jpg);")
+ self.select_candidate = QtWidgets.QLabel(parent=create_user)
+ self.select_candidate.setGeometry(QtCore.QRect(40, 180, 51, 16))
+ self.select_candidate.setStyleSheet("font-weight:bold;\n"
+"background:none;")
+ self.select_candidate.setObjectName("select_candidate")
+ self.role = QtWidgets.QComboBox(parent=create_user)
+ self.role.setGeometry(QtCore.QRect(40, 200, 271, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.role.setFont(font)
+ self.role.setStyleSheet("QComboBox{\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"background:white;\n"
+"color:black\n"
+"}")
+ self.role.setIconSize(QtCore.QSize(16, 16))
+ self.role.setFrame(True)
+ self.role.setObjectName("role")
+ self.role.addItem("")
+ self.role.addItem("")
+ self.username = QtWidgets.QLineEdit(parent=create_user)
+ self.username.setGeometry(QtCore.QRect(40, 60, 271, 31))
+ self.username.setStyleSheet("padding:5px;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"background:white;\n"
+"color:black\n"
+"")
+ self.username.setObjectName("username")
+ self.label = QtWidgets.QLabel(parent=create_user)
+ self.label.setGeometry(QtCore.QRect(40, 40, 101, 16))
+ self.label.setStyleSheet("font-weight:bold;\n"
+"background:none;")
+ self.label.setObjectName("label")
+ self.password = QtWidgets.QLineEdit(parent=create_user)
+ self.password.setGeometry(QtCore.QRect(42, 130, 271, 31))
+ self.password.setStyleSheet("padding:5px;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"background:white;\n"
+"color:black\n"
+"")
+ self.password.setObjectName("password")
+ self.label_2 = QtWidgets.QLabel(parent=create_user)
+ self.label_2.setGeometry(QtCore.QRect(40, 110, 71, 16))
+ self.label_2.setStyleSheet("font-weight:bold;\n"
+"background:none;")
+ self.label_2.setObjectName("label_2")
+ self.create_button = QtWidgets.QPushButton(parent=create_user)
+ self.create_button.setGeometry(QtCore.QRect(110, 250, 120, 32))
+ self.create_button.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#db1e3c;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#db1e3c;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.create_button.setObjectName("create_button")
+
+ self.retranslateUi(create_user)
+ QtCore.QMetaObject.connectSlotsByName(create_user)
+
+ def retranslateUi(self, create_user):
+ _translate = QtCore.QCoreApplication.translate
+ create_user.setWindowTitle(_translate("create_user", "Create User"))
+ self.select_candidate.setText(_translate("create_user", "Role"))
+ self.role.setCurrentText(_translate("create_user", "admin"))
+ self.role.setItemText(0, _translate("create_user", "admin"))
+ self.role.setItemText(1, _translate("create_user", "user"))
+ self.username.setPlaceholderText(_translate("create_user", "Enter the username..."))
+ self.label.setText(_translate("create_user", "Username"))
+ self.password.setPlaceholderText(_translate("create_user", "Enter the password..."))
+ self.label_2.setText(_translate("create_user", "Password"))
+ self.create_button.setText(_translate("create_user", "Create"))
diff --git a/db_controllers/__init__.py b/db_controllers/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/db_controllers/config.py b/db_controllers/config.py
new file mode 100644
index 0000000..4438c2c
--- /dev/null
+++ b/db_controllers/config.py
@@ -0,0 +1,23 @@
+from dotenv import load_dotenv
+import os
+
+
+def load_config(filename=".env"):
+ load_dotenv(dotenv_path=filename)
+
+ config = {
+ "host": os.getenv("POSTGRESQL_HOST"),
+ "database": os.getenv("POSTGRESQL_DATABASE"),
+ "user": os.getenv("POSTGRESQL_USER"),
+ "password": os.getenv("POSTGRESQL_PASSWORD"),
+ }
+
+ if not all(config.values()):
+ raise Exception("Some environment variables are missing in the .env file")
+
+ return config
+
+
+if __name__ == "__main__":
+ config = load_config()
+ print(config)
diff --git a/db_controllers/connect.py b/db_controllers/connect.py
new file mode 100644
index 0000000..1724411
--- /dev/null
+++ b/db_controllers/connect.py
@@ -0,0 +1,23 @@
+import psycopg2
+from db_controllers.config import load_config
+
+
+def connect(db_name):
+ """Connect to the PostgreSQL database server"""
+ try:
+ config = {**load_config()}
+ # connecting to the PostgreSQL server
+ with psycopg2.connect(
+ database=db_name,
+ host=config["host"],
+ user=config["user"],
+ password=config["password"],
+ ) as conn:
+ print("Connected to the PostgreSQL server.")
+ return conn
+ except (psycopg2.DatabaseError, Exception) as error:
+ print(error)
+
+
+if __name__ == "__main__":
+ connect("crm")
diff --git a/db_controllers/create_table_from_excel_headers.py b/db_controllers/create_table_from_excel_headers.py
new file mode 100644
index 0000000..e326b4e
--- /dev/null
+++ b/db_controllers/create_table_from_excel_headers.py
@@ -0,0 +1,41 @@
+import sys
+import os
+
+# Add the parent directory to the sys.path
+sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+
+from connect import connect
+from backend.read_xlsx import read_xlsx
+
+
+def create_table_from_excel_headers(db_name, file_name, table_name):
+ # Read the Excel file
+ rows = read_xlsx(file_name)
+
+ # Extract headers
+ headers = rows[0]
+
+ # Generate SQL statement
+ columns = ", ".join([f'"{header}" TEXT' for header in headers])
+ create_table_query = (
+ f'CREATE TABLE IF NOT EXISTS "{table_name}" (ID SERIAL PRIMARY KEY, {columns});'
+ )
+
+ # Connect to PostgreSQL and execute the query
+ conn = connect(db_name)
+ cur = conn.cursor()
+ cur.execute(create_table_query)
+ conn.commit()
+ cur.close()
+ conn.close()
+
+ print(f'Table "{table_name}" created successfully.')
+
+
+if __name__ == "__main__":
+ # Example usage
+ # create_table_from_excel_headers("crm", "Kullanicilar.xlsx", "users")
+ create_table_from_excel_headers("crm", "Basvurular.xlsx", "applications")
+ create_table_from_excel_headers("crm", "Etkinlikler.xlsx", "activities")
+ create_table_from_excel_headers("crm", "Mentor.xlsx", "mentors")
+ create_table_from_excel_headers("crm", "Mulakatlar.xlsx", "interviews")
diff --git a/db_controllers/fetch_data.py b/db_controllers/fetch_data.py
new file mode 100644
index 0000000..86dc8b2
--- /dev/null
+++ b/db_controllers/fetch_data.py
@@ -0,0 +1,14 @@
+from db_controllers.connect import connect
+
+
+def fetch_data(db_name, query):
+ # Connect to PostgreSQL and execute the query
+ conn = connect(db_name)
+ cur = conn.cursor()
+ cur.execute(query)
+ rows = cur.fetchall()
+ headers = [desc[0] for desc in cur.description]
+ cur.close()
+ conn.close()
+
+ return headers, rows
diff --git a/db_controllers/insert_records_from_excel.py b/db_controllers/insert_records_from_excel.py
new file mode 100644
index 0000000..c570b1c
--- /dev/null
+++ b/db_controllers/insert_records_from_excel.py
@@ -0,0 +1,60 @@
+import sys
+import os
+
+# Add the parent directory to the sys.path
+sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+
+from connect import connect
+from backend.read_xlsx import read_xlsx
+
+
+def insert_records_from_excel(db_name, file_name, table_name):
+ # Read the Excel file
+ rows = read_xlsx(file_name)
+
+ # Check if rows are empty
+ if not rows:
+ print(f"No data found in the Excel file: {file_name}")
+ return
+
+ # Extract headers and records
+ headers = rows[0]
+ records = rows[1:]
+
+ # Check if headers are empty
+ if not headers:
+ print(f"No headers found in the Excel file: {file_name}")
+ return
+
+ # Generate SQL INSERT statement
+ columns = ", ".join([f'"{header[:63]}"' for header in headers])
+ placeholders = ", ".join(["%s"] * len(headers))
+ insert_query = f'INSERT INTO "{table_name}" ({columns}) VALUES ({placeholders})'
+
+ # Connect to PostgreSQL and execute the query
+ conn = connect(db_name)
+ cur = conn.cursor()
+ try:
+ for record in records:
+ # Ensure the record has the same number of elements as headers
+ if len(record) != len(headers):
+ print(f"Skipping record due to mismatched length: {record}")
+ continue
+ cur.execute(insert_query, record)
+ conn.commit()
+ print(f"Records inserted successfully into '{table_name}' table.")
+ except Exception as e:
+ conn.rollback()
+ print(f"An error occurred: {e}")
+ finally:
+ cur.close()
+ conn.close()
+
+
+if __name__ == "__main__":
+ # Example usage
+ insert_records_from_excel("crm", "Kullanicilar.xlsx", "users")
+ insert_records_from_excel("crm", "Basvurular.xlsx", "applications")
+ insert_records_from_excel("crm", "Etkinlikler.xlsx", "activities")
+ insert_records_from_excel("crm", "Mentor.xlsx", "mentors")
+ insert_records_from_excel("crm", "Mulakatlar.xlsx", "interviews")
diff --git a/interviews_menu_ui.py b/interviews_menu_ui.py
new file mode 100644
index 0000000..14e9882
--- /dev/null
+++ b/interviews_menu_ui.py
@@ -0,0 +1,213 @@
+# Form implementation generated from reading ui file '/Users/yhtyyarannayev/Documents/GitHub/Python-Module-Week7/English/interviews_menu.ui'
+#
+# Created by: PyQt6 UI code generator 6.2.2
+#
+# 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.setFixedSize(800, 600)
+ MainWindow.setStyleSheet("background-image: url(./assets/zemin-buyuk.jpg);")
+ self.centralwidget = QtWidgets.QWidget(MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.label = QtWidgets.QLabel(self.centralwidget)
+ self.label.setGeometry(QtCore.QRect(290, 60, 241, 61))
+ font = QtGui.QFont()
+ font.setPointSize(-1)
+ font.setBold(True)
+ self.label.setFont(font)
+ self.label.setStyleSheet(
+ "color:white;\n" "font-size:36px;\n" "font-weight:bold;\n" "background:none"
+ )
+ self.label.setObjectName("label")
+ self.exit_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.exit_Button.setGeometry(QtCore.QRect(700, 180, 81, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.exit_Button.setFont(font)
+ self.exit_Button.setStyleSheet(
+ "QPushButton{\n"
+ "color:white;\n"
+ "background:#47545a;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "\n"
+ "QPushButton::hover{\n"
+ "color:#47545a;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.exit_Button.setObjectName("exit_Button")
+ self.all_interviews = QtWidgets.QPushButton(self.centralwidget)
+ self.all_interviews.setGeometry(QtCore.QRect(20, 130, 150, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.all_interviews.setFont(font)
+ self.all_interviews.setStyleSheet(
+ "QPushButton{\n"
+ "color:black;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "QPushButton::hover{\n"
+ "color:white;\n"
+ "background:#47545a;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.all_interviews.setObjectName("all_interviews")
+ self.project_send_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.project_send_Button.setGeometry(QtCore.QRect(290, 180, 241, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.project_send_Button.setFont(font)
+ self.project_send_Button.setStyleSheet(
+ "QPushButton{\n"
+ "color:black;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "QPushButton::hover{\n"
+ "color:white;\n"
+ "background:#47545a;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.project_send_Button.setObjectName("project_send_Button")
+ self.search_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.search_Button.setGeometry(QtCore.QRect(700, 130, 81, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.search_Button.setFont(font)
+ self.search_Button.setStyleSheet(
+ "QPushButton{\n"
+ "color:white;\n"
+ "background:#db1e3c;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "\n"
+ "QPushButton::hover{\n"
+ "color:#db1e3c;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.search_Button.setObjectName("search_Button")
+ self.project_submitted_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.project_submitted_Button.setGeometry(QtCore.QRect(20, 180, 241, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.project_submitted_Button.setFont(font)
+ self.project_submitted_Button.setStyleSheet(
+ "QPushButton{\n"
+ "color:black;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "QPushButton::hover{\n"
+ "color:white;\n"
+ "background:#47545a;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.project_submitted_Button.setObjectName("project_submitted_Button")
+ self.mainmenu_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.mainmenu_Button.setGeometry(QtCore.QRect(560, 180, 111, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.mainmenu_Button.setFont(font)
+ self.mainmenu_Button.setStyleSheet(
+ "QPushButton{\n"
+ "color:black;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "QPushButton::hover{\n"
+ "color:white;\n"
+ "background:#47545a;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.mainmenu_Button.setObjectName("mainmenu_Button")
+ self.search_Line = QtWidgets.QLineEdit(self.centralwidget)
+ self.search_Line.setGeometry(QtCore.QRect(200, 130, 480, 31))
+ self.search_Line.setStyleSheet(
+ "QLineEdit{\n"
+ "border-radius:10px;\n"
+ "background:none;\n"
+ "padding:5px\n"
+ "}\n"
+ ""
+ )
+ self.search_Line.setText("")
+ self.search_Line.setObjectName("search_Line")
+ self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
+ self.tableWidget.setGeometry(QtCore.QRect(20, 240, 761, 351))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.tableWidget.setFont(font)
+ self.tableWidget.setStyleSheet("\n" "font-weight:bold;\n" "background:none")
+ self.tableWidget.setObjectName("tableWidget")
+ self.tableWidget.setColumnCount(3)
+ self.tableWidget.setRowCount(0)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(2, item)
+ self.tableWidget.horizontalHeader().setDefaultSectionSize(130)
+ self.tableWidget.horizontalHeader().setStretchLastSection(True)
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.label.setWhatsThis(
+ _translate(
+ "MainWindow",
+ '

',
+ )
+ )
+ self.label.setText(_translate("MainWindow", "INTERVIEWS"))
+ self.exit_Button.setText(_translate("MainWindow", "EXIT"))
+ self.project_send_Button.setText(
+ _translate("MainWindow", "PROJECT SEND CANDIDATES")
+ )
+ self.all_interviews.setText(_translate("MainWindow", "ALL INTERVIEWS"))
+ self.search_Button.setText(_translate("MainWindow", "SEARCH"))
+ self.project_submitted_Button.setText(
+ _translate("MainWindow", "PROJECT SUBMITTED CANDIDATES")
+ )
+ self.mainmenu_Button.setText(_translate("MainWindow", "MAIN MENU"))
+ self.search_Line.setPlaceholderText(
+ _translate("MainWindow", "Enter a Text to Search")
+ )
+ item = self.tableWidget.horizontalHeaderItem(0)
+ item.setText(_translate("MainWindow", "Name Surname"))
+ item = self.tableWidget.horizontalHeaderItem(1)
+ item.setText(_translate("MainWindow", "Project Submission Date"))
+ item = self.tableWidget.horizontalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Project Sent Date"))
diff --git a/login_ui.py b/login_ui.py
new file mode 100644
index 0000000..6502b08
--- /dev/null
+++ b/login_ui.py
@@ -0,0 +1,141 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/login.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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.setEnabled(True)
+ MainWindow.setFixedSize(800, 600)
+ MainWindow.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor))
+ MainWindow.setStyleSheet("background-image: url(./assets/login.jpg);\n"
+"QWidget::setFixedSize(800, 600);\n"
+"\n"
+"\n"
+"\n"
+"")
+ self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.label = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label.setGeometry(QtCore.QRect(120, 270, 151, 61))
+ self.label.setStyleSheet("color:white;\n"
+"font-size:36px;\n"
+"font-weight:bold;\n"
+"background:none")
+ self.label.setObjectName("label")
+ self.label_2 = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label_2.setGeometry(QtCore.QRect(460, 260, 101, 20))
+ self.label_2.setStyleSheet("color:white;\n"
+"font-size:18px;\n"
+"font-weight:400;\n"
+"background:none")
+ self.label_2.setObjectName("label_2")
+ self.lineEdit = QtWidgets.QLineEdit(parent=self.centralwidget)
+ self.lineEdit.setGeometry(QtCore.QRect(460, 290, 281, 31))
+ self.lineEdit.setStyleSheet("QLineEdit{\n"
+"border-radius:10px;\n"
+"background:none;\n"
+"padding:5px\n"
+"}\n"
+"")
+ self.lineEdit.setText("")
+ self.lineEdit.setObjectName("lineEdit")
+ self.lineEdit_2 = QtWidgets.QLineEdit(parent=self.centralwidget)
+ self.lineEdit_2.setGeometry(QtCore.QRect(460, 370, 281, 31))
+ self.lineEdit_2.setStyleSheet("QLineEdit{\n"
+"border-radius:10px;\n"
+"background:none;\n"
+"padding:5px\n"
+"}\n"
+"")
+ self.lineEdit_2.setText("")
+ self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
+ self.lineEdit_2.setObjectName("lineEdit_2")
+ self.label_3 = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label_3.setGeometry(QtCore.QRect(460, 340, 101, 20))
+ self.label_3.setStyleSheet("color:white;\n"
+"font-size:18px;\n"
+"font-weight:400;\n"
+"background:none")
+ self.label_3.setObjectName("label_3")
+ self.login_button = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.login_button.setGeometry(QtCore.QRect(460, 430, 121, 32))
+ self.login_button.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#db1e3c;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#db1e3c;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.login_button.setObjectName("login_button")
+ self.exit_button = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.exit_button.setGeometry(QtCore.QRect(620, 430, 121, 32))
+ self.exit_button.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#47545a;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.exit_button.setObjectName("exit_button")
+ self.apply_button = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.apply_button.setGeometry(QtCore.QRect(100, 340, 201, 41))
+ self.apply_button.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.PointingHandCursor))
+ self.apply_button.setStyleSheet("QPushButton::hover{\n"
+"color:white;\n"
+"background:#db1e3c;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton{\n"
+"color:#db1e3c;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.apply_button.setObjectName("apply_button")
+ self.error_message = QtWidgets.QLabel(parent=self.centralwidget)
+ self.error_message.setGeometry(QtCore.QRect(180, 530, 421, 20))
+ self.error_message.setStyleSheet("color:red;\n"
+"font-weight:bold;\n"
+"font-size:18px;\n"
+"background:none")
+ self.error_message.setText("")
+ self.error_message.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
+ self.error_message.setObjectName("error_message")
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.label.setText(_translate("MainWindow", " CRM V.2"))
+ self.label_2.setText(_translate("MainWindow", "Username"))
+ self.lineEdit.setPlaceholderText(_translate("MainWindow", "Enter your username..."))
+ self.lineEdit_2.setPlaceholderText(_translate("MainWindow", "Enter your password..."))
+ self.label_3.setText(_translate("MainWindow", "Password"))
+ self.login_button.setText(_translate("MainWindow", "Login"))
+ self.exit_button.setText(_translate("MainWindow", "Exit"))
+ self.apply_button.setText(_translate("MainWindow", "Apply our next VIT course"))
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..e86090e
--- /dev/null
+++ b/main.py
@@ -0,0 +1,226 @@
+from backend.fetch_candidate_emails import fetch_canditate_emails
+from backend.send_email import send_email
+from backend.interview_filter import interviews_page_filter_function
+from check_assets import check_asset_path_and_fix_size
+
+
+if __name__ == "__main__":
+ # check_asset_path_and_fix_size()
+ import sys
+ from PyQt6 import QtWidgets, QtGui
+ from login_ui import Ui_MainWindow as LoginUI
+ from admin_menu_ui import Ui_MainWindow as AdminUI
+ from application_menu_ui import Ui_MainWindow as ApplicationsUI
+ from mentor_menu_ui import Ui_MainWindow as MentorUI
+ from interviews_menu_ui import Ui_MainWindow as InterviewsUI
+ from user_menu_ui import Ui_MainWindow as UserUI
+ from admin_control_menu_ui import Ui_MainWindow as AdminControlUI
+ from application_form_ui_ui import VITForm
+ from backend.login import login
+ from backend.set_table_data import set_table_data
+ from send_email_form_ui import Ui_send_email_form
+ from create_user_ui import Ui_create_user
+ from backend.create_user import create_user
+ from backend.mentor_interview_page_filter import mentor_interview_page_filter
+ from backend.app_page_filter import app_page_filter
+
+ app = QtWidgets.QApplication(sys.argv)
+ MainWindow = QtWidgets.QMainWindow()
+ ui = LoginUI()
+ admin_menu = AdminUI()
+ applications_menu = ApplicationsUI()
+ mentor_menu = MentorUI()
+ interviews_menu = InterviewsUI()
+ user_menu = UserUI()
+ admin_control_menu = AdminControlUI()
+ new_application_menu = VITForm()
+ send_email_menu = Ui_send_email_form()
+ create_user_menu = Ui_create_user()
+
+ role = ""
+
+ def get_role(user_role):
+ global role
+ role = user_role
+
+ def login_menu_setup():
+ ui.setupUi(MainWindow)
+ ui.login_button.clicked.connect(
+ lambda: login(
+ ui.lineEdit.text(),
+ ui.lineEdit_2.text(),
+ ui,
+ admin_setup,
+ user_setup,
+ get_role,
+ )
+ )
+ ui.lineEdit_2.returnPressed.connect(
+ lambda: login(
+ ui.lineEdit.text(),
+ ui.lineEdit_2.text(),
+ ui,
+ admin_setup,
+ user_setup,
+ get_role,
+ )
+ )
+ ui.lineEdit.returnPressed.connect(
+ lambda: login(
+ ui.lineEdit.text(),
+ ui.lineEdit_2.text(),
+ ui,
+ admin_setup,
+ user_setup,
+ get_role,
+ )
+ )
+ ui.exit_button.clicked.connect(MainWindow.close)
+ ui.apply_button.clicked.connect(new_application_setup)
+
+ def admin_setup():
+ admin_menu.setupUi(MainWindow)
+ admin_menu.applications_Button.clicked.connect(applications_setup)
+ admin_menu.Mentor_interview_Button.clicked.connect(mentor_setup)
+ admin_menu.interviews_Button.clicked.connect(interviews_menu_setup)
+ admin_menu.Admin_menu_Button.clicked.connect(setup_admin_control_menu)
+ admin_menu.exit_Button.clicked.connect(MainWindow.close)
+ admin_menu.main_menu.clicked.connect(login_menu_setup)
+
+ def applications_setup():
+ applications_menu.setupUi(MainWindow)
+ set_table_data(applications_menu, "crm", "applications")
+ applications_menu.main_menu.clicked.connect(
+ (lambda: admin_setup if role == "admin" else user_setup)()
+ )
+ applications_menu.exit.clicked.connect(MainWindow.close)
+ applications_menu.search.clicked.connect(
+ lambda: app_page_filter(
+ applications_menu.lineEdit.text(), applications_menu, None
+ )
+ )
+ applications_menu.assigned_mentor_interviews.clicked.connect( # Mentor atananlar
+ lambda: app_page_filter(None, applications_menu, "OK")
+ )
+ applications_menu.unassigned_mentor_interviews.clicked.connect( # Mentor atananmamis olanlar
+ lambda: app_page_filter(None, applications_menu, "ATANMADI")
+ )
+ applications_menu.all_applications.clicked.connect( # Butun basvurular
+ lambda: app_page_filter(None, applications_menu, None)
+ )
+
+ applications_menu.prev_vit_check.clicked.connect( # Onceki VIT versiyonlarini leri goruntule.
+ lambda: app_page_filter(None, applications_menu, "VIT3")
+ )
+ applications_menu.filtered_applications.clicked.connect( # her ismi birkez yaz.
+ lambda: app_page_filter(None, applications_menu, "UNDUPLICATE")
+ )
+ applications_menu.duplicate_application.clicked.connect( # Mekerrer OLANLAR.
+ lambda: app_page_filter(None, applications_menu, "DUPLICATE")
+ )
+
+ def mentor_setup():
+ mentor_menu.setupUi(MainWindow)
+ set_table_data(mentor_menu, "crm", "mentors")
+ mentor_menu.main_menu.clicked.connect(
+ (lambda: admin_setup if role == "admin" else user_setup)()
+ )
+ mentor_menu.exit_button.clicked.connect(MainWindow.close)
+ mentor_menu.filter_select_button.activated.connect(
+ lambda: mentor_interview_page_filter(
+ mentor_menu.filter_select_button,
+ None,
+ mentor_menu,
+ )
+ )
+ mentor_menu.all_meetings.clicked.connect(
+ lambda: set_table_data(mentor_menu, "crm", "mentors")
+ )
+ mentor_menu.search_button.clicked.connect(
+ lambda: mentor_interview_page_filter(
+ None,
+ mentor_menu.lineEdit.text(),
+ mentor_menu,
+ )
+ )
+
+ def interviews_menu_setup():
+ interviews_menu.setupUi(MainWindow)
+ set_table_data(interviews_menu, "crm", "interviews")
+ interviews_menu.mainmenu_Button.clicked.connect(
+ (lambda: admin_setup if role == "admin" else user_setup)()
+ )
+ interviews_menu.exit_Button.clicked.connect(MainWindow.close)
+ interviews_menu.project_send_Button.clicked.connect(
+ lambda: interviews_page_filter_function(
+ "Projenin gelis tarihi", None, interviews_menu
+ )
+ )
+ interviews_menu.project_submitted_Button.clicked.connect(
+ lambda: interviews_page_filter_function(
+ "Proje gonderilis tarihi", None, interviews_menu
+ )
+ )
+ interviews_menu.search_Button.clicked.connect(
+ lambda: interviews_page_filter_function(
+ None,
+ interviews_menu.search_Line.text(),
+ interviews_menu,
+ )
+ )
+ interviews_menu.all_interviews.clicked.connect(
+ lambda: set_table_data(interviews_menu, "crm", "interviews")
+ )
+
+ def user_setup():
+ user_menu.setupUi(MainWindow)
+ user_menu.app_Button.clicked.connect(applications_setup)
+ user_menu.mentor_interview_Button.clicked.connect(mentor_setup)
+ user_menu.interviews_Button.clicked.connect(interviews_menu_setup)
+ user_menu.exit_Button.clicked.connect(MainWindow.close)
+
+ def setup_admin_control_menu():
+ admin_control_menu.setupUi(MainWindow)
+ admin_control_menu.main_menu.clicked.connect(admin_setup)
+ admin_control_menu.exit.clicked.connect(MainWindow.close)
+ admin_control_menu.activity_check.clicked.connect(
+ lambda: set_table_data(admin_control_menu, "crm", "activities")
+ )
+ set_table_data(admin_control_menu, "crm", "activities")
+ admin_control_menu.send_email.clicked.connect(send_email_setup)
+ admin_control_menu.create_user.clicked.connect(create_user_setup)
+
+ def new_application_setup():
+ new_application_menu.show()
+ MainWindow.close()
+
+ def send_email_setup():
+ admin_control_menu.window = QtWidgets.QWidget()
+ admin_control_menu.ui = send_email_menu
+ admin_control_menu.ui.setupUi(admin_control_menu.window)
+ admin_control_menu.window.show()
+ fetch_canditate_emails(send_email_menu.candidate_names, send_email_menu.email)
+ send_email_menu.send_button.clicked.connect(
+ lambda: send_email(
+ send_email_menu.email.text(),
+ send_email_menu.textEdit.toPlainText(),
+ send_email_menu.subject_input.text(),
+ )
+ )
+
+ def create_user_setup():
+ admin_control_menu.window = QtWidgets.QWidget()
+ admin_control_menu.ui = create_user_menu
+ admin_control_menu.ui.setupUi(admin_control_menu.window)
+ admin_control_menu.window.show()
+ create_user_menu.create_button.clicked.connect(
+ lambda: create_user(
+ create_user_menu.username.text(),
+ create_user_menu.password.text(),
+ create_user_menu.role.currentText(),
+ )
+ )
+
+ login_menu_setup()
+ MainWindow.show()
+ sys.exit(app.exec())
diff --git a/mentor_menu_ui.py b/mentor_menu_ui.py
new file mode 100644
index 0000000..31090cb
--- /dev/null
+++ b/mentor_menu_ui.py
@@ -0,0 +1,150 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/mentor_menu.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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.setFixedSize(800, 600)
+ MainWindow.setStyleSheet("background-image: url(./assets/zemin-buyuk.jpg);")
+ self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.tableWidget = QtWidgets.QTableWidget(parent=self.centralwidget)
+ self.tableWidget.setGeometry(QtCore.QRect(10, 240, 771, 341))
+ self.tableWidget.setStyleSheet("QTableView{\n"
+"color:black;\n"
+"background:white;\n"
+"font-weight:bold;\n"
+"border-radius:5px\n"
+"}")
+ self.tableWidget.setObjectName("tableWidget")
+ self.tableWidget.setColumnCount(0)
+ self.tableWidget.setRowCount(0)
+ self.filter_select_button = QtWidgets.QComboBox(parent=self.centralwidget)
+ self.filter_select_button.setGeometry(QtCore.QRect(340, 190, 441, 31))
+ self.filter_select_button.setStyleSheet("QComboBox{\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"background:white;\n"
+"color:black\n"
+"}")
+ self.filter_select_button.setObjectName("filter_select_button")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.label = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label.setGeometry(QtCore.QRect(260, 80, 291, 31))
+ self.label.setStyleSheet("QLabel{\n"
+"color:white;\n"
+"font-size:36px;\n"
+"font-weight:bold;\n"
+"background:none\n"
+"}\n"
+"")
+ self.label.setObjectName("label")
+ self.main_menu = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.main_menu.setGeometry(QtCore.QRect(10, 190, 91, 31))
+ self.main_menu.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.main_menu.setObjectName("main_menu")
+ self.exit_button = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.exit_button.setGeometry(QtCore.QRect(120, 190, 91, 31))
+ self.exit_button.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#47545a;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.exit_button.setObjectName("exit_button")
+ self.all_meetings = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.all_meetings.setGeometry(QtCore.QRect(10, 140, 201, 31))
+ self.all_meetings.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.all_meetings.setObjectName("all_meetings")
+ self.lineEdit = QtWidgets.QLineEdit(parent=self.centralwidget)
+ self.lineEdit.setGeometry(QtCore.QRect(340, 140, 351, 31))
+ self.lineEdit.setStyleSheet("QLineEdit{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"padding:5px;\n"
+"}")
+ self.lineEdit.setText("")
+ self.lineEdit.setObjectName("lineEdit")
+ self.search_button = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.search_button.setGeometry(QtCore.QRect(700, 140, 75, 31))
+ self.search_button.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.search_button.setObjectName("search_button")
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.filter_select_button.setItemText(0, _translate("MainWindow", "Vıt Projesinin Tamamına Katılması Uygun Olur"))
+ self.filter_select_button.setItemText(1, _translate("MainWindow", "VIT Projesi ilk IT Eğtimi Al... ya Yönlendirilmesi Uygun Olur"))
+ self.filter_select_button.setItemText(2, _translate("MainWindow", "VIT Projesi İngilizce Eğtimi Al... ya Yönlendirilmesi Uygun Olur"))
+ self.filter_select_button.setItemText(3, _translate("MainWindow", "Vit Pojesi Kapsamında Dir.. Yönlendirilmesi Uygun Olur"))
+ self.filter_select_button.setItemText(4, _translate("MainWindow", "Direkt Bireysel Koçluk İle İşe Yönlendirilmesi Uygun Olur"))
+ self.filter_select_button.setItemText(5, _translate("MainWindow", "Bir Sonraki VIT Projesine Katılması Daha Uygun Olur"))
+ self.filter_select_button.setItemText(6, _translate("MainWindow", "Başka Bir Sektöre Yönlendirilmesi"))
+ self.filter_select_button.setItemText(7, _translate("MainWindow", "Diğer"))
+ self.label.setText(_translate("MainWindow", "Mentor Interview"))
+ self.main_menu.setText(_translate("MainWindow", "Main Menu"))
+ self.exit_button.setText(_translate("MainWindow", "Exit"))
+ self.all_meetings.setText(_translate("MainWindow", "All Meetings"))
+ self.lineEdit.setPlaceholderText(_translate("MainWindow", "Enter your search term..."))
+ self.search_button.setText(_translate("MainWindow", "Search"))
diff --git a/qt/admin_control_menu.ui b/qt/admin_control_menu.ui
new file mode 100644
index 0000000..f838dbe
--- /dev/null
+++ b/qt/admin_control_menu.ui
@@ -0,0 +1,287 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 800
+ 600
+
+
+
+ MainWindow
+
+
+ background-image: url(:/assets/assets/zemin-buyuk.jpg);
+QWidget::setFixedSize(800, 600);
+
+
+
+
+
+ 260
+ 70
+ 241
+ 41
+
+
+
+ color:white;
+font-size:36px;
+font-weight:bold;
+background:none
+
+
+ ADMIN MENU
+
+
+
+
+
+ 20
+ 170
+ 161
+ 41
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Activity Check
+
+
+
+
+
+ 20
+ 490
+ 161
+ 41
+
+
+
+ QPushButton{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold;
+}
+
+QPushButton::hover{
+color:#47545a;
+background:white;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Exit
+
+
+
+
+
+ 200
+ 170
+ 581
+ 411
+
+
+
+ QTableView{
+color:black;
+background:white;
+font-weight:bold;
+border-radius:5px
+}
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ 0
+
+
+ false
+
+
+ 140
+
+
+ 19
+
+
+ 35
+
+
+ 21
+
+
+
+ Etkinlik Adı
+
+
+
+ 13
+ 75
+ true
+
+
+
+ AlignLeading|AlignVCenter
+
+
+
+
+ Başlanıç Zamanı
+
+
+
+ 13
+ 75
+ true
+
+
+
+ AlignLeading|AlignVCenter
+
+
+
+
+ Katılımcı Email
+
+
+
+ 13
+ 75
+ true
+
+
+
+ AlignLeading|AlignVCenter
+
+
+
+
+ Oranizatör Email
+
+
+
+ 13
+ 75
+ true
+
+
+
+ AlignLeading|AlignVCenter
+
+
+
+
+
+
+ 20
+ 330
+ 161
+ 41
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Send Email
+
+
+
+
+
+ 20
+ 410
+ 161
+ 41
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Main Menu
+
+
+
+
+
+ 20
+ 250
+ 161
+ 41
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Create User
+
+
+
+
+
+
+
+
+
diff --git a/qt/admin_control_menu_ui.py b/qt/admin_control_menu_ui.py
new file mode 100644
index 0000000..c7c7f83
--- /dev/null
+++ b/qt/admin_control_menu_ui.py
@@ -0,0 +1,175 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/qt/admin_control_menu.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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.setFixedSize(800, 600)
+ MainWindow.setStyleSheet("background-image: url(./assets/zemin-buyuk.jpg);\n"
+"QWidget::setFixedSize(800, 600);")
+ self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.label = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label.setGeometry(QtCore.QRect(260, 70, 241, 41))
+ self.label.setStyleSheet("color:white;\n"
+"font-size:36px;\n"
+"font-weight:bold;\n"
+"background:none")
+ self.label.setObjectName("label")
+ self.activity_check = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.activity_check.setGeometry(QtCore.QRect(20, 170, 161, 41))
+ self.activity_check.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.activity_check.setObjectName("activity_check")
+ self.exit = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.exit.setGeometry(QtCore.QRect(20, 490, 161, 41))
+ self.exit.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#47545a;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.exit.setObjectName("exit")
+ self.tableWidget = QtWidgets.QTableWidget(parent=self.centralwidget)
+ self.tableWidget.setGeometry(QtCore.QRect(200, 170, 581, 411))
+ self.tableWidget.setStyleSheet("QTableView{\n"
+"color:black;\n"
+"background:white;\n"
+"font-weight:bold;\n"
+"border-radius:5px\n"
+"}")
+ self.tableWidget.setTabKeyNavigation(True)
+ self.tableWidget.setDragEnabled(True)
+ self.tableWidget.setRowCount(0)
+ self.tableWidget.setObjectName("tableWidget")
+ self.tableWidget.setColumnCount(4)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ font = QtGui.QFont()
+ font.setPointSize(13)
+ font.setBold(True)
+ font.setWeight(75)
+ item.setFont(font)
+ self.tableWidget.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ font = QtGui.QFont()
+ font.setPointSize(13)
+ font.setBold(True)
+ font.setWeight(75)
+ item.setFont(font)
+ self.tableWidget.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ font = QtGui.QFont()
+ font.setPointSize(13)
+ font.setBold(True)
+ font.setWeight(75)
+ item.setFont(font)
+ self.tableWidget.setHorizontalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ font = QtGui.QFont()
+ font.setPointSize(13)
+ font.setBold(True)
+ font.setWeight(75)
+ item.setFont(font)
+ self.tableWidget.setHorizontalHeaderItem(3, item)
+ self.tableWidget.horizontalHeader().setCascadingSectionResizes(False)
+ self.tableWidget.horizontalHeader().setDefaultSectionSize(140)
+ self.tableWidget.horizontalHeader().setMinimumSectionSize(19)
+ self.tableWidget.verticalHeader().setDefaultSectionSize(35)
+ self.tableWidget.verticalHeader().setMinimumSectionSize(21)
+ self.send_email = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.send_email.setGeometry(QtCore.QRect(20, 330, 161, 41))
+ self.send_email.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.send_email.setObjectName("send_email")
+ self.main_menu = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.main_menu.setGeometry(QtCore.QRect(20, 410, 161, 41))
+ self.main_menu.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.main_menu.setObjectName("main_menu")
+ self.create_user = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.create_user.setGeometry(QtCore.QRect(20, 250, 161, 41))
+ self.create_user.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.create_user.setObjectName("create_user")
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.label.setText(_translate("MainWindow", "ADMIN MENU"))
+ self.activity_check.setText(_translate("MainWindow", "Activity Check"))
+ self.exit.setText(_translate("MainWindow", "Exit"))
+ self.tableWidget.setSortingEnabled(True)
+ item = self.tableWidget.horizontalHeaderItem(0)
+ item.setText(_translate("MainWindow", "Etkinlik Adı"))
+ item = self.tableWidget.horizontalHeaderItem(1)
+ item.setText(_translate("MainWindow", "Başlanıç Zamanı"))
+ item = self.tableWidget.horizontalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Katılımcı Email"))
+ item = self.tableWidget.horizontalHeaderItem(3)
+ item.setText(_translate("MainWindow", "Oranizatör Email"))
+ self.send_email.setText(_translate("MainWindow", "Send Email"))
+ self.main_menu.setText(_translate("MainWindow", "Main Menu"))
+ self.create_user.setText(_translate("MainWindow", "Create User"))
diff --git a/qt/application_menu.ui b/qt/application_menu.ui
new file mode 100644
index 0000000..97871bb
--- /dev/null
+++ b/qt/application_menu.ui
@@ -0,0 +1,447 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 800
+ 600
+
+
+
+ MainWindow
+
+
+ background-image: url(:/assets/assets/zemin-buyuk.jpg);
+QWidget::setFixedSize(800, 600);
+
+
+
+
+
+ 680
+ 140
+ 100
+ 32
+
+
+
+ QPushButton{
+color:white;
+background:#db1e3c;
+border-radius:10px;
+font-weight:bold;
+}
+
+QPushButton::hover{
+color:#db1e3c;
+background:white;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Search
+
+
+
+
+
+ 280
+ 70
+ 241
+ 41
+
+
+
+ color:white;
+font-size:36px;
+font-weight:bold;
+background:none
+
+
+ APPLICATIONS
+
+
+
+
+
+ 310
+ 140
+ 361
+ 31
+
+
+
+ QLineEdit{
+border-radius:10px;
+background:none;
+padding:5px
+}
+
+
+ Enter your search term...
+
+
+
+
+
+ 20
+ 180
+ 231
+ 32
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Assigned Mentor Interviews
+
+
+
+
+
+ 20
+ 220
+ 251
+ 32
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Unassigned Mentor Interviews
+
+
+
+
+
+ 310
+ 180
+ 151
+ 32
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Prev VIT Check
+
+
+
+
+
+ 310
+ 220
+ 151
+ 32
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Filtered Application
+
+
+
+
+
+ 470
+ 180
+ 151
+ 32
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Duplicate Application
+
+
+
+
+
+ 470
+ 220
+ 151
+ 32
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Differrent Registration
+
+
+
+
+
+ 20
+ 140
+ 141
+ 31
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ All Aplications
+
+
+
+
+
+ 630
+ 180
+ 151
+ 32
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Main Menu
+
+
+
+
+
+ 630
+ 220
+ 151
+ 32
+
+
+
+ QPushButton{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold;
+}
+
+QPushButton::hover{
+color:#47545a;
+background:white;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Exit
+
+
+
+
+
+ 20
+ 270
+ 761
+ 321
+
+
+
+ QTableView{
+color:black;
+background:white;
+font-weight:bold;
+border-radius:5px
+}
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ 0
+
+
+ false
+
+
+ 19
+
+
+ 100
+
+
+ 21
+
+
+ 25
+
+
+
+ Tarih
+
+
+ AlignLeading|AlignVCenter
+
+
+
+
+ Isim Soyisim
+
+
+ AlignLeading|AlignVCenter
+
+
+
+
+ Email
+
+
+ AlignLeading|AlignVCenter
+
+
+
+
+ Telefon
+
+
+ AlignLeading|AlignVCenter
+
+
+
+
+ Posta Kodu
+
+
+ AlignLeading|AlignVCenter
+
+
+
+
+ Eyalet
+
+
+ AlignLeading|AlignVCenter
+
+
+
+
+ Mevcut Durum
+
+
+ AlignLeading|AlignVCenter
+
+
+
+
+ Ekonomik Durum
+
+
+ AlignLeading|AlignVCenter
+
+
+
+
+
+
+
+
+
+
diff --git a/qt/application_menu_ui.py b/qt/application_menu_ui.py
new file mode 100644
index 0000000..d72bbf6
--- /dev/null
+++ b/qt/application_menu_ui.py
@@ -0,0 +1,265 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/qt/application_menu.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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.setFixedSize(800, 600)
+ MainWindow.setStyleSheet("background-image: url(./assets/zemin-buyuk.jpg);\n"
+"QWidget::setFixedSize(800, 600);")
+ self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.search = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.search.setGeometry(QtCore.QRect(680, 140, 100, 32))
+ self.search.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#db1e3c;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#db1e3c;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.search.setObjectName("search")
+ self.label = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label.setGeometry(QtCore.QRect(280, 70, 241, 41))
+ self.label.setStyleSheet("color:white;\n"
+"font-size:36px;\n"
+"font-weight:bold;\n"
+"background:none")
+ self.label.setObjectName("label")
+ self.lineEdit = QtWidgets.QLineEdit(parent=self.centralwidget)
+ self.lineEdit.setGeometry(QtCore.QRect(310, 140, 361, 31))
+ self.lineEdit.setStyleSheet("QLineEdit{\n"
+"border-radius:10px;\n"
+"background:none;\n"
+"padding:5px\n"
+"}")
+ self.lineEdit.setObjectName("lineEdit")
+ self.assigned_mentor_interviews = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.assigned_mentor_interviews.setGeometry(QtCore.QRect(20, 180, 231, 32))
+ self.assigned_mentor_interviews.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.assigned_mentor_interviews.setObjectName("assigned_mentor_interviews")
+ self.unassigned_mentor_interviews = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.unassigned_mentor_interviews.setGeometry(QtCore.QRect(20, 220, 251, 32))
+ self.unassigned_mentor_interviews.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.unassigned_mentor_interviews.setObjectName("unassigned_mentor_interviews")
+ self.prev_vit_check = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.prev_vit_check.setGeometry(QtCore.QRect(310, 180, 151, 32))
+ self.prev_vit_check.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.prev_vit_check.setObjectName("prev_vit_check")
+ self.filtered_applications = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.filtered_applications.setGeometry(QtCore.QRect(310, 220, 151, 32))
+ self.filtered_applications.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.filtered_applications.setObjectName("filtered_applications")
+ self.duplicate_application = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.duplicate_application.setGeometry(QtCore.QRect(470, 180, 151, 32))
+ self.duplicate_application.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.duplicate_application.setObjectName("duplicate_application")
+ self.different_registeration = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.different_registeration.setGeometry(QtCore.QRect(470, 220, 151, 32))
+ self.different_registeration.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.different_registeration.setObjectName("different_registeration")
+ self.all_applications = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.all_applications.setGeometry(QtCore.QRect(20, 140, 141, 31))
+ self.all_applications.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.all_applications.setObjectName("all_applications")
+ self.main_menu = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.main_menu.setGeometry(QtCore.QRect(630, 180, 151, 32))
+ self.main_menu.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.main_menu.setObjectName("main_menu")
+ self.exit = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.exit.setGeometry(QtCore.QRect(630, 220, 151, 32))
+ self.exit.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#47545a;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.exit.setObjectName("exit")
+ self.tableWidget = QtWidgets.QTableWidget(parent=self.centralwidget)
+ self.tableWidget.setGeometry(QtCore.QRect(20, 270, 761, 321))
+ self.tableWidget.setStyleSheet("QTableView{\n"
+"color:black;\n"
+"background:white;\n"
+"font-weight:bold;\n"
+"border-radius:5px\n"
+"}")
+ self.tableWidget.setTabKeyNavigation(True)
+ self.tableWidget.setDragEnabled(True)
+ self.tableWidget.setRowCount(0)
+ self.tableWidget.setObjectName("tableWidget")
+ self.tableWidget.setColumnCount(8)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(3, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(4, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(5, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(6, item)
+ item = QtWidgets.QTableWidgetItem()
+ item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.tableWidget.setHorizontalHeaderItem(7, item)
+ self.tableWidget.horizontalHeader().setCascadingSectionResizes(False)
+ self.tableWidget.horizontalHeader().setDefaultSectionSize(100)
+ self.tableWidget.horizontalHeader().setMinimumSectionSize(19)
+ self.tableWidget.verticalHeader().setDefaultSectionSize(25)
+ self.tableWidget.verticalHeader().setMinimumSectionSize(21)
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.search.setText(_translate("MainWindow", "Search"))
+ self.label.setText(_translate("MainWindow", "APPLICATIONS"))
+ self.lineEdit.setPlaceholderText(_translate("MainWindow", "Enter your search term..."))
+ self.assigned_mentor_interviews.setText(_translate("MainWindow", "Assigned Mentor Interviews"))
+ self.unassigned_mentor_interviews.setText(_translate("MainWindow", "Unassigned Mentor Interviews"))
+ self.prev_vit_check.setText(_translate("MainWindow", "Prev VIT Check"))
+ self.filtered_applications.setText(_translate("MainWindow", "Filtered Application"))
+ self.duplicate_application.setText(_translate("MainWindow", "Duplicate Application"))
+ self.different_registeration.setText(_translate("MainWindow", "Differrent Registration"))
+ self.all_applications.setText(_translate("MainWindow", "All Aplications"))
+ self.main_menu.setText(_translate("MainWindow", "Main Menu"))
+ self.exit.setText(_translate("MainWindow", "Exit"))
+ self.tableWidget.setSortingEnabled(True)
+ item = self.tableWidget.horizontalHeaderItem(0)
+ item.setText(_translate("MainWindow", "Tarih"))
+ item = self.tableWidget.horizontalHeaderItem(1)
+ item.setText(_translate("MainWindow", "Isim Soyisim"))
+ item = self.tableWidget.horizontalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Email"))
+ item = self.tableWidget.horizontalHeaderItem(3)
+ item.setText(_translate("MainWindow", "Telefon"))
+ item = self.tableWidget.horizontalHeaderItem(4)
+ item.setText(_translate("MainWindow", "Posta Kodu"))
+ item = self.tableWidget.horizontalHeaderItem(5)
+ item.setText(_translate("MainWindow", "Eyalet"))
+ item = self.tableWidget.horizontalHeaderItem(6)
+ item.setText(_translate("MainWindow", "Mevcut Durum"))
+ item = self.tableWidget.horizontalHeaderItem(7)
+ item.setText(_translate("MainWindow", "Ekonomik Durum"))
diff --git a/qt/assets.qrc b/qt/assets.qrc
new file mode 100644
index 0000000..e6e29a3
--- /dev/null
+++ b/qt/assets.qrc
@@ -0,0 +1,8 @@
+
+
+ assets/create_user.jpg
+ assets/send_email.jpg
+ assets/login.jpg
+ assets/zemin-buyuk.jpg
+
+
diff --git a/qt/create_user.ui b/qt/create_user.ui
new file mode 100644
index 0000000..7e6266b
--- /dev/null
+++ b/qt/create_user.ui
@@ -0,0 +1,191 @@
+
+
+ create_user
+
+
+
+ 0
+ 0
+ 350
+ 300
+
+
+
+ Create User
+
+
+ background-image: url(:/assets/assets/create_user.jpg);
+
+
+
+
+ 40
+ 180
+ 51
+ 16
+
+
+
+ font-weight:bold;
+background:none;
+
+
+ Role
+
+
+
+
+
+ 40
+ 200
+ 271
+ 31
+
+
+
+
+ 75
+ true
+
+
+
+ QComboBox{
+border-radius:10px;
+font-weight:bold;
+background:white;
+color:black
+}
+
+
+ admin
+
+
+
+ 16
+ 16
+
+
+
+ true
+
+ -
+
+ admin
+
+
+ -
+
+ user
+
+
+
+
+
+
+ 40
+ 60
+ 271
+ 31
+
+
+
+ padding:5px;
+border-radius:10px;
+font-weight:bold;
+background:white;
+color:black
+
+
+
+ Enter the username...
+
+
+
+
+
+ 40
+ 40
+ 101
+ 16
+
+
+
+ font-weight:bold;
+background:none;
+
+
+ Username
+
+
+
+
+
+ 42
+ 130
+ 271
+ 31
+
+
+
+ padding:5px;
+border-radius:10px;
+font-weight:bold;
+background:white;
+color:black
+
+
+
+ Enter the password...
+
+
+
+
+
+ 40
+ 110
+ 71
+ 16
+
+
+
+ font-weight:bold;
+background:none;
+
+
+ Password
+
+
+
+
+
+ 110
+ 250
+ 120
+ 32
+
+
+
+ QPushButton{
+color:white;
+background:#db1e3c;
+border-radius:10px;
+font-weight:bold;
+}
+
+QPushButton::hover{
+color:#db1e3c;
+background:white;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Create
+
+
+
+
+
+
+
+
diff --git a/qt/create_user_ui.py b/qt/create_user_ui.py
new file mode 100644
index 0000000..3ceb14a
--- /dev/null
+++ b/qt/create_user_ui.py
@@ -0,0 +1,98 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/qt/create_user.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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_create_user(object):
+ def setupUi(self, create_user):
+ create_user.setObjectName("create_user")
+ create_user.resize(350, 300)
+ create_user.setStyleSheet("background-image: url(./assets/create_user.jpg);")
+ self.select_candidate = QtWidgets.QLabel(parent=create_user)
+ self.select_candidate.setGeometry(QtCore.QRect(40, 180, 51, 16))
+ self.select_candidate.setStyleSheet("font-weight:bold;\n"
+"background:none;")
+ self.select_candidate.setObjectName("select_candidate")
+ self.role = QtWidgets.QComboBox(parent=create_user)
+ self.role.setGeometry(QtCore.QRect(40, 200, 271, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.role.setFont(font)
+ self.role.setStyleSheet("QComboBox{\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"background:white;\n"
+"color:black\n"
+"}")
+ self.role.setIconSize(QtCore.QSize(16, 16))
+ self.role.setFrame(True)
+ self.role.setObjectName("role")
+ self.role.addItem("")
+ self.role.addItem("")
+ self.username = QtWidgets.QLineEdit(parent=create_user)
+ self.username.setGeometry(QtCore.QRect(40, 60, 271, 31))
+ self.username.setStyleSheet("padding:5px;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"background:white;\n"
+"color:black\n"
+"")
+ self.username.setObjectName("username")
+ self.label = QtWidgets.QLabel(parent=create_user)
+ self.label.setGeometry(QtCore.QRect(40, 40, 101, 16))
+ self.label.setStyleSheet("font-weight:bold;\n"
+"background:none;")
+ self.label.setObjectName("label")
+ self.password = QtWidgets.QLineEdit(parent=create_user)
+ self.password.setGeometry(QtCore.QRect(42, 130, 271, 31))
+ self.password.setStyleSheet("padding:5px;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"background:white;\n"
+"color:black\n"
+"")
+ self.password.setObjectName("password")
+ self.label_2 = QtWidgets.QLabel(parent=create_user)
+ self.label_2.setGeometry(QtCore.QRect(40, 110, 71, 16))
+ self.label_2.setStyleSheet("font-weight:bold;\n"
+"background:none;")
+ self.label_2.setObjectName("label_2")
+ self.create_button = QtWidgets.QPushButton(parent=create_user)
+ self.create_button.setGeometry(QtCore.QRect(110, 250, 120, 32))
+ self.create_button.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#db1e3c;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#db1e3c;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.create_button.setObjectName("create_button")
+
+ self.retranslateUi(create_user)
+ QtCore.QMetaObject.connectSlotsByName(create_user)
+
+ def retranslateUi(self, create_user):
+ _translate = QtCore.QCoreApplication.translate
+ create_user.setWindowTitle(_translate("create_user", "Create User"))
+ self.select_candidate.setText(_translate("create_user", "Role"))
+ self.role.setCurrentText(_translate("create_user", "admin"))
+ self.role.setItemText(0, _translate("create_user", "admin"))
+ self.role.setItemText(1, _translate("create_user", "user"))
+ self.username.setPlaceholderText(_translate("create_user", "Enter the username..."))
+ self.label.setText(_translate("create_user", "Username"))
+ self.password.setPlaceholderText(_translate("create_user", "Enter the password..."))
+ self.label_2.setText(_translate("create_user", "Password"))
+ self.create_button.setText(_translate("create_user", "Create"))
diff --git a/qt/interviews_menu.ui b/qt/interviews_menu.ui
new file mode 100644
index 0000000..c8c3eda
--- /dev/null
+++ b/qt/interviews_menu.ui
@@ -0,0 +1,278 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 800
+ 600
+
+
+
+ MainWindow
+
+
+ background-image: url(:/assets/assets/zemin-buyuk.jpg);
+
+
+
+
+
+ 270
+ 60
+ 251
+ 61
+
+
+
+
+ -1
+ true
+
+
+
+ <html><head/><body><p><img src=":/arkaplan/WhatsApp Image 2024-10-17 at 23.49.08.jpeg"/></p></body></html>
+
+
+ color:white;
+font-size:36px;
+font-weight:bold;
+background:none
+
+
+ MULAKATLAR
+
+
+
+
+
+ 700
+ 180
+ 81
+ 31
+
+
+
+
+ true
+
+
+
+ QPushButton{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold;
+}
+
+QPushButton::hover{
+color:#47545a;
+background:white;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ EXIT
+
+
+
+
+
+ 290
+ 180
+ 241
+ 31
+
+
+
+
+ true
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ PROJESI GONDERILMIS OLANLAR
+
+
+
+
+
+ 700
+ 130
+ 81
+ 31
+
+
+
+
+ true
+
+
+
+ QPushButton{
+color:white;
+background:#db1e3c;
+border-radius:10px;
+font-weight:bold;
+}
+
+QPushButton::hover{
+color:#db1e3c;
+background:white;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ ARA
+
+
+
+
+
+ 20
+ 180
+ 241
+ 31
+
+
+
+
+ true
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ PROJESI GELMIS OLANLAR
+
+
+
+
+
+ 560
+ 180
+ 111
+ 31
+
+
+
+
+ true
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ TERCIHLER
+
+
+
+
+
+ 20
+ 130
+ 661
+ 31
+
+
+
+ QLineEdit{
+border-radius:10px;
+background:none;
+padding:5px
+}
+
+
+
+ Aranacak bir metin girin...
+
+
+
+
+
+ 20
+ 240
+ 761
+ 351
+
+
+
+
+ true
+
+
+
+
+font-weight:bold;
+background:none
+
+
+ 130
+
+
+ true
+
+
+
+ Ad -Soyad
+
+
+
+
+ Proje Gelis Tarihi
+
+
+
+
+ Proje Gonderilis Tarihi
+
+
+
+
+
+
+
+
+
+
diff --git a/qt/interviews_menu_ui.py b/qt/interviews_menu_ui.py
new file mode 100644
index 0000000..e5c2bef
--- /dev/null
+++ b/qt/interviews_menu_ui.py
@@ -0,0 +1,171 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/qt/interviews_menu.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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.setFixedSize(800, 600)
+ MainWindow.setStyleSheet("background-image: url(./assets/zemin-buyuk.jpg);")
+ self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.label = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label.setGeometry(QtCore.QRect(270, 60, 251, 61))
+ font = QtGui.QFont()
+ font.setPointSize(-1)
+ font.setBold(True)
+ self.label.setFont(font)
+ self.label.setStyleSheet("color:white;\n"
+"font-size:36px;\n"
+"font-weight:bold;\n"
+"background:none")
+ self.label.setObjectName("label")
+ self.pushButton_exit = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.pushButton_exit.setGeometry(QtCore.QRect(700, 180, 81, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.pushButton_exit.setFont(font)
+ self.pushButton_exit.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#47545a;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.pushButton_exit.setObjectName("pushButton_exit")
+ self.pushButton_gonderilmis = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.pushButton_gonderilmis.setGeometry(QtCore.QRect(290, 180, 241, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.pushButton_gonderilmis.setFont(font)
+ self.pushButton_gonderilmis.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.pushButton_gonderilmis.setObjectName("pushButton_gonderilmis")
+ self.pushButton_ara = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.pushButton_ara.setGeometry(QtCore.QRect(700, 130, 81, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.pushButton_ara.setFont(font)
+ self.pushButton_ara.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#db1e3c;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#db1e3c;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.pushButton_ara.setObjectName("pushButton_ara")
+ self.pushButton_gelmis = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.pushButton_gelmis.setGeometry(QtCore.QRect(20, 180, 241, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.pushButton_gelmis.setFont(font)
+ self.pushButton_gelmis.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.pushButton_gelmis.setObjectName("pushButton_gelmis")
+ self.pushButton_tercih = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.pushButton_tercih.setGeometry(QtCore.QRect(560, 180, 111, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.pushButton_tercih.setFont(font)
+ self.pushButton_tercih.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.pushButton_tercih.setObjectName("pushButton_tercih")
+ self.lineEdit = QtWidgets.QLineEdit(parent=self.centralwidget)
+ self.lineEdit.setGeometry(QtCore.QRect(20, 130, 661, 31))
+ self.lineEdit.setStyleSheet("QLineEdit{\n"
+"border-radius:10px;\n"
+"background:none;\n"
+"padding:5px\n"
+"}\n"
+"")
+ self.lineEdit.setObjectName("lineEdit")
+ self.tableWidget = QtWidgets.QTableWidget(parent=self.centralwidget)
+ self.tableWidget.setGeometry(QtCore.QRect(20, 240, 761, 351))
+ font = QtGui.QFont()
+ font.setBold(True)
+ self.tableWidget.setFont(font)
+ self.tableWidget.setStyleSheet("\n"
+"font-weight:bold;\n"
+"background:none")
+ self.tableWidget.setObjectName("tableWidget")
+ self.tableWidget.setColumnCount(3)
+ self.tableWidget.setRowCount(0)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(2, item)
+ self.tableWidget.horizontalHeader().setDefaultSectionSize(130)
+ self.tableWidget.horizontalHeader().setStretchLastSection(True)
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.label.setWhatsThis(_translate("MainWindow", "
"))
+ self.label.setText(_translate("MainWindow", "MULAKATLAR"))
+ self.pushButton_exit.setText(_translate("MainWindow", "EXIT"))
+ self.pushButton_gonderilmis.setText(_translate("MainWindow", "PROJESI GONDERILMIS OLANLAR"))
+ self.pushButton_ara.setText(_translate("MainWindow", "ARA"))
+ self.pushButton_gelmis.setText(_translate("MainWindow", "PROJESI GELMIS OLANLAR"))
+ self.pushButton_tercih.setText(_translate("MainWindow", "TERCIHLER"))
+ self.lineEdit.setPlaceholderText(_translate("MainWindow", "Aranacak bir metin girin..."))
+ item = self.tableWidget.horizontalHeaderItem(0)
+ item.setText(_translate("MainWindow", "Ad -Soyad"))
+ item = self.tableWidget.horizontalHeaderItem(1)
+ item.setText(_translate("MainWindow", "Proje Gelis Tarihi"))
+ item = self.tableWidget.horizontalHeaderItem(2)
+ item.setText(_translate("MainWindow", " Proje Gonderilis Tarihi"))
diff --git a/qt/login.ui b/qt/login.ui
new file mode 100644
index 0000000..a02b90e
--- /dev/null
+++ b/qt/login.ui
@@ -0,0 +1,254 @@
+
+
+ MainWindow
+
+
+ true
+
+
+
+ 0
+ 0
+ 800
+ 600
+
+
+
+ ArrowCursor
+
+
+ MainWindow
+
+
+ background-image: url(:/assets/assets/login.jpg);
+QWidget::setFixedSize(800, 600);
+
+
+
+
+
+
+
+
+
+ 120
+ 270
+ 151
+ 61
+
+
+
+ color:white;
+font-size:36px;
+font-weight:bold;
+background:none
+
+
+ CRM V.2
+
+
+
+
+
+ 460
+ 260
+ 101
+ 20
+
+
+
+ color:white;
+font-size:18px;
+font-weight:400;
+background:none
+
+
+ Username
+
+
+
+
+
+ 460
+ 290
+ 281
+ 31
+
+
+
+ QLineEdit{
+border-radius:10px;
+background:none;
+padding:5px
+}
+
+
+
+
+
+
+ Enter your username...
+
+
+
+
+
+ 460
+ 370
+ 281
+ 31
+
+
+
+ QLineEdit{
+border-radius:10px;
+background:none;
+padding:5px
+}
+
+
+
+
+
+
+ QLineEdit::Password
+
+
+ Enter your password...
+
+
+
+
+
+ 460
+ 340
+ 101
+ 20
+
+
+
+ color:white;
+font-size:18px;
+font-weight:400;
+background:none
+
+
+ Password
+
+
+
+
+
+ 460
+ 430
+ 121
+ 32
+
+
+
+ QPushButton{
+color:white;
+background:#db1e3c;
+border-radius:10px;
+font-weight:bold;
+}
+
+QPushButton::hover{
+color:#db1e3c;
+background:white;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Login
+
+
+
+
+
+ 620
+ 430
+ 121
+ 32
+
+
+
+ QPushButton{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold;
+}
+
+QPushButton::hover{
+color:#47545a;
+background:white;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Exit
+
+
+
+
+
+ 100
+ 340
+ 201
+ 41
+
+
+
+ PointingHandCursor
+
+
+ QPushButton::hover{
+color:white;
+background:#db1e3c;
+border-radius:10px;
+font-weight:bold;
+}
+
+QPushButton{
+color:#db1e3c;
+background:white;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Apply our next VIT course
+
+
+
+
+
+ 180
+ 530
+ 421
+ 20
+
+
+
+ color:red;
+font-weight:bold;
+font-size:18px;
+background:none
+
+
+
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+
diff --git a/qt/login_ui.py b/qt/login_ui.py
new file mode 100644
index 0000000..41a807b
--- /dev/null
+++ b/qt/login_ui.py
@@ -0,0 +1,141 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/qt/login.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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.setEnabled(True)
+ MainWindow.setFixedSize(800, 600)
+ MainWindow.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor))
+ MainWindow.setStyleSheet("background-image: url(./assets/login.jpg);\n"
+"QWidget::setFixedSize(800, 600);\n"
+"\n"
+"\n"
+"\n"
+"")
+ self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.label = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label.setGeometry(QtCore.QRect(120, 270, 151, 61))
+ self.label.setStyleSheet("color:white;\n"
+"font-size:36px;\n"
+"font-weight:bold;\n"
+"background:none")
+ self.label.setObjectName("label")
+ self.label_2 = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label_2.setGeometry(QtCore.QRect(460, 260, 101, 20))
+ self.label_2.setStyleSheet("color:white;\n"
+"font-size:18px;\n"
+"font-weight:400;\n"
+"background:none")
+ self.label_2.setObjectName("label_2")
+ self.lineEdit = QtWidgets.QLineEdit(parent=self.centralwidget)
+ self.lineEdit.setGeometry(QtCore.QRect(460, 290, 281, 31))
+ self.lineEdit.setStyleSheet("QLineEdit{\n"
+"border-radius:10px;\n"
+"background:none;\n"
+"padding:5px\n"
+"}\n"
+"")
+ self.lineEdit.setText("")
+ self.lineEdit.setObjectName("lineEdit")
+ self.lineEdit_2 = QtWidgets.QLineEdit(parent=self.centralwidget)
+ self.lineEdit_2.setGeometry(QtCore.QRect(460, 370, 281, 31))
+ self.lineEdit_2.setStyleSheet("QLineEdit{\n"
+"border-radius:10px;\n"
+"background:none;\n"
+"padding:5px\n"
+"}\n"
+"")
+ self.lineEdit_2.setText("")
+ self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
+ self.lineEdit_2.setObjectName("lineEdit_2")
+ self.label_3 = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label_3.setGeometry(QtCore.QRect(460, 340, 101, 20))
+ self.label_3.setStyleSheet("color:white;\n"
+"font-size:18px;\n"
+"font-weight:400;\n"
+"background:none")
+ self.label_3.setObjectName("label_3")
+ self.login_button = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.login_button.setGeometry(QtCore.QRect(460, 430, 121, 32))
+ self.login_button.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#db1e3c;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#db1e3c;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.login_button.setObjectName("login_button")
+ self.exit_button = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.exit_button.setGeometry(QtCore.QRect(620, 430, 121, 32))
+ self.exit_button.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#47545a;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.exit_button.setObjectName("exit_button")
+ self.apply_button = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.apply_button.setGeometry(QtCore.QRect(100, 340, 201, 41))
+ self.apply_button.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.PointingHandCursor))
+ self.apply_button.setStyleSheet("QPushButton::hover{\n"
+"color:white;\n"
+"background:#db1e3c;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton{\n"
+"color:#db1e3c;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.apply_button.setObjectName("apply_button")
+ self.error_message = QtWidgets.QLabel(parent=self.centralwidget)
+ self.error_message.setGeometry(QtCore.QRect(180, 530, 421, 20))
+ self.error_message.setStyleSheet("color:red;\n"
+"font-weight:bold;\n"
+"font-size:18px;\n"
+"background:none")
+ self.error_message.setText("")
+ self.error_message.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
+ self.error_message.setObjectName("error_message")
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.label.setText(_translate("MainWindow", " CRM V.2"))
+ self.label_2.setText(_translate("MainWindow", "Username"))
+ self.lineEdit.setPlaceholderText(_translate("MainWindow", "Enter your username..."))
+ self.lineEdit_2.setPlaceholderText(_translate("MainWindow", "Enter your password..."))
+ self.label_3.setText(_translate("MainWindow", "Password"))
+ self.login_button.setText(_translate("MainWindow", "Login"))
+ self.exit_button.setText(_translate("MainWindow", "Exit"))
+ self.apply_button.setText(_translate("MainWindow", "Apply our next VIT course"))
diff --git a/qt/mentor_menu.ui b/qt/mentor_menu.ui
new file mode 100644
index 0000000..fe8d829
--- /dev/null
+++ b/qt/mentor_menu.ui
@@ -0,0 +1,258 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 800
+ 600
+
+
+
+ MainWindow
+
+
+ background-image: url(:/assets/assets/zemin-buyuk.jpg);
+
+
+
+
+
+ 10
+ 240
+ 771
+ 341
+
+
+
+ QTableView{
+color:black;
+background:white;
+font-weight:bold;
+border-radius:5px
+}
+
+
+
+
+
+ 340
+ 190
+ 441
+ 31
+
+
+
+ QComboBox{
+border-radius:10px;
+font-weight:bold;
+background:white;
+color:black
+}
+
+ -
+
+ Vıt Projesinin Tamamına Katılması Uygun Olur
+
+
+ -
+
+ VIT Projesi ilk IT Eğtimi Al... ya Yönlendirilmesi Uygun Olur
+
+
+ -
+
+ VIT Projesi İngilizce Eğtimi Al... ya Yönlendirilmesi Uygun Olur
+
+
+ -
+
+ Vit Pojesi Kapsamında Dir.. Yönlendirilmesi Uygun Olur
+
+
+ -
+
+ Direkt Bireysel Koçluk İle İşe Yönlendirilmesi Uygun Olur
+
+
+ -
+
+ Bir Sonraki VIT Projesine Katılması Daha Uygun Olur
+
+
+ -
+
+ Başka Bir Sektöre Yönlendirilmesi
+
+
+ -
+
+ Diğer
+
+
+
+
+
+
+ 260
+ 80
+ 291
+ 31
+
+
+
+ QLabel{
+color:white;
+font-size:36px;
+font-weight:bold;
+background:none
+}
+
+
+
+ Mentor Interview
+
+
+
+
+
+ 10
+ 190
+ 91
+ 31
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Main Menu
+
+
+
+
+
+ 120
+ 190
+ 91
+ 31
+
+
+
+ QPushButton{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold;
+}
+
+QPushButton::hover{
+color:#47545a;
+background:white;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Exit
+
+
+
+
+
+ 10
+ 140
+ 201
+ 31
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ All Meetings
+
+
+
+
+
+ 340
+ 140
+ 351
+ 31
+
+
+
+ QLineEdit{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+padding:5px;
+}
+
+
+
+
+
+ Enter your search term...
+
+
+
+
+
+ 700
+ 140
+ 75
+ 31
+
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Search
+
+
+
+
+
+
+
+
+
diff --git a/qt/mentor_menu_ui.py b/qt/mentor_menu_ui.py
new file mode 100644
index 0000000..b8897db
--- /dev/null
+++ b/qt/mentor_menu_ui.py
@@ -0,0 +1,150 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/qt/mentor_menu.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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.setFixedSize(800, 600)
+ MainWindow.setStyleSheet("background-image: url(./assets/zemin-buyuk.jpg);")
+ self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.tableWidget = QtWidgets.QTableWidget(parent=self.centralwidget)
+ self.tableWidget.setGeometry(QtCore.QRect(10, 240, 771, 341))
+ self.tableWidget.setStyleSheet("QTableView{\n"
+"color:black;\n"
+"background:white;\n"
+"font-weight:bold;\n"
+"border-radius:5px\n"
+"}")
+ self.tableWidget.setObjectName("tableWidget")
+ self.tableWidget.setColumnCount(0)
+ self.tableWidget.setRowCount(0)
+ self.filter_select_button = QtWidgets.QComboBox(parent=self.centralwidget)
+ self.filter_select_button.setGeometry(QtCore.QRect(340, 190, 441, 31))
+ self.filter_select_button.setStyleSheet("QComboBox{\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"background:white;\n"
+"color:black\n"
+"}")
+ self.filter_select_button.setObjectName("filter_select_button")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.filter_select_button.addItem("")
+ self.label = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label.setGeometry(QtCore.QRect(260, 80, 291, 31))
+ self.label.setStyleSheet("QLabel{\n"
+"color:white;\n"
+"font-size:36px;\n"
+"font-weight:bold;\n"
+"background:none\n"
+"}\n"
+"")
+ self.label.setObjectName("label")
+ self.main_menu = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.main_menu.setGeometry(QtCore.QRect(10, 190, 91, 31))
+ self.main_menu.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.main_menu.setObjectName("main_menu")
+ self.exit_button = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.exit_button.setGeometry(QtCore.QRect(120, 190, 91, 31))
+ self.exit_button.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#47545a;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.exit_button.setObjectName("exit_button")
+ self.all_meetings = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.all_meetings.setGeometry(QtCore.QRect(10, 140, 201, 31))
+ self.all_meetings.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.all_meetings.setObjectName("all_meetings")
+ self.lineEdit = QtWidgets.QLineEdit(parent=self.centralwidget)
+ self.lineEdit.setGeometry(QtCore.QRect(340, 140, 351, 31))
+ self.lineEdit.setStyleSheet("QLineEdit{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"padding:5px;\n"
+"}")
+ self.lineEdit.setText("")
+ self.lineEdit.setObjectName("lineEdit")
+ self.search_button = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.search_button.setGeometry(QtCore.QRect(700, 140, 75, 31))
+ self.search_button.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.search_button.setObjectName("search_button")
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.filter_select_button.setItemText(0, _translate("MainWindow", "Vıt Projesinin Tamamına Katılması Uygun Olur"))
+ self.filter_select_button.setItemText(1, _translate("MainWindow", "VIT Projesi ilk IT Eğtimi Al... ya Yönlendirilmesi Uygun Olur"))
+ self.filter_select_button.setItemText(2, _translate("MainWindow", "VIT Projesi İngilizce Eğtimi Al... ya Yönlendirilmesi Uygun Olur"))
+ self.filter_select_button.setItemText(3, _translate("MainWindow", "Vit Pojesi Kapsamında Dir.. Yönlendirilmesi Uygun Olur"))
+ self.filter_select_button.setItemText(4, _translate("MainWindow", "Direkt Bireysel Koçluk İle İşe Yönlendirilmesi Uygun Olur"))
+ self.filter_select_button.setItemText(5, _translate("MainWindow", "Bir Sonraki VIT Projesine Katılması Daha Uygun Olur"))
+ self.filter_select_button.setItemText(6, _translate("MainWindow", "Başka Bir Sektöre Yönlendirilmesi"))
+ self.filter_select_button.setItemText(7, _translate("MainWindow", "Diğer"))
+ self.label.setText(_translate("MainWindow", "Mentor Interview"))
+ self.main_menu.setText(_translate("MainWindow", "Main Menu"))
+ self.exit_button.setText(_translate("MainWindow", "Exit"))
+ self.all_meetings.setText(_translate("MainWindow", "All Meetings"))
+ self.lineEdit.setPlaceholderText(_translate("MainWindow", "Enter your search term..."))
+ self.search_button.setText(_translate("MainWindow", "Search"))
diff --git a/qt/send_email_form.ui b/qt/send_email_form.ui
new file mode 100644
index 0000000..2651a6f
--- /dev/null
+++ b/qt/send_email_form.ui
@@ -0,0 +1,202 @@
+
+
+ send_email_form
+
+
+
+ 0
+ 0
+ 600
+ 400
+
+
+
+ Send Email
+
+
+ background-image: url(:/assets/assets/send_email.jpg);
+
+
+
+
+ 350
+ 40
+ 121
+ 16
+
+
+
+ font-weight:bold;
+background:none;
+
+
+ Candidates
+
+
+
+
+
+ 350
+ 60
+ 221
+ 31
+
+
+
+
+ 75
+ true
+
+
+
+ QComboBox{
+border-radius:10px;
+font-weight:bold;
+background:white;
+color:black
+}
+
+
+
+
+
+
+ 16
+ 16
+
+
+
+ true
+
+
+
+
+
+ 30
+ 60
+ 271
+ 31
+
+
+
+ padding:5px;
+border-radius:10px;
+font-weight:bold;
+background:white;
+color:black
+
+
+
+ Enter a email address or populate...
+
+
+
+
+
+ 30
+ 40
+ 101
+ 16
+
+
+
+ font-weight:bold;
+background:none;
+
+
+ Email Address
+
+
+
+
+
+ 32
+ 120
+ 541
+ 31
+
+
+
+ padding:5px;
+border-radius:10px;
+font-weight:bold;
+background:white;
+color:black
+
+
+
+ Enter your email subject...
+
+
+
+
+
+ 30
+ 100
+ 61
+ 16
+
+
+
+ font-weight:bold;
+background:none;
+
+
+ Subject
+
+
+
+
+
+ 30
+ 160
+ 541
+ 181
+
+
+
+ padding:5px;
+border-radius:10px;
+font-weight:bold;
+background:white;
+color:black
+
+
+
+ Enter your message...
+
+
+
+
+
+ 240
+ 350
+ 120
+ 32
+
+
+
+ QPushButton{
+color:white;
+background:#db1e3c;
+border-radius:10px;
+font-weight:bold;
+}
+
+QPushButton::hover{
+color:#db1e3c;
+background:white;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ Send
+
+
+
+
+
+
+
+
diff --git a/qt/send_email_form_ui.py b/qt/send_email_form_ui.py
new file mode 100644
index 0000000..d4704d5
--- /dev/null
+++ b/qt/send_email_form_ui.py
@@ -0,0 +1,104 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/qt/send_email_form.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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_send_email_form(object):
+ def setupUi(self, send_email_form):
+ send_email_form.setObjectName("send_email_form")
+ send_email_form.resize(600, 400)
+ send_email_form.setStyleSheet("background-image: url(./assets/send_email.jpg);")
+ self.select_candidate = QtWidgets.QLabel(parent=send_email_form)
+ self.select_candidate.setGeometry(QtCore.QRect(350, 40, 121, 16))
+ self.select_candidate.setStyleSheet("font-weight:bold;\n"
+"background:none;")
+ self.select_candidate.setObjectName("select_candidate")
+ self.candidate_names = QtWidgets.QComboBox(parent=send_email_form)
+ self.candidate_names.setGeometry(QtCore.QRect(350, 60, 221, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.candidate_names.setFont(font)
+ self.candidate_names.setStyleSheet("QComboBox{\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"background:white;\n"
+"color:black\n"
+"}")
+ self.candidate_names.setCurrentText("")
+ self.candidate_names.setIconSize(QtCore.QSize(16, 16))
+ self.candidate_names.setFrame(True)
+ self.candidate_names.setObjectName("candidate_names")
+ self.email = QtWidgets.QLineEdit(parent=send_email_form)
+ self.email.setGeometry(QtCore.QRect(30, 60, 271, 31))
+ self.email.setStyleSheet("padding:5px;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"background:white;\n"
+"color:black\n"
+"")
+ self.email.setObjectName("email")
+ self.label = QtWidgets.QLabel(parent=send_email_form)
+ self.label.setGeometry(QtCore.QRect(30, 40, 101, 16))
+ self.label.setStyleSheet("font-weight:bold;\n"
+"background:none;")
+ self.label.setObjectName("label")
+ self.subject_input = QtWidgets.QLineEdit(parent=send_email_form)
+ self.subject_input.setGeometry(QtCore.QRect(32, 120, 541, 31))
+ self.subject_input.setStyleSheet("padding:5px;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"background:white;\n"
+"color:black\n"
+"")
+ self.subject_input.setObjectName("subject_input")
+ self.label_2 = QtWidgets.QLabel(parent=send_email_form)
+ self.label_2.setGeometry(QtCore.QRect(30, 100, 61, 16))
+ self.label_2.setStyleSheet("font-weight:bold;\n"
+"background:none;")
+ self.label_2.setObjectName("label_2")
+ self.textEdit = QtWidgets.QTextEdit(parent=send_email_form)
+ self.textEdit.setGeometry(QtCore.QRect(30, 160, 541, 181))
+ self.textEdit.setStyleSheet("padding:5px;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"background:white;\n"
+"color:black\n"
+"")
+ self.textEdit.setObjectName("textEdit")
+ self.send_button = QtWidgets.QPushButton(parent=send_email_form)
+ self.send_button.setGeometry(QtCore.QRect(240, 350, 120, 32))
+ self.send_button.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#db1e3c;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#db1e3c;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.send_button.setObjectName("send_button")
+
+ self.retranslateUi(send_email_form)
+ QtCore.QMetaObject.connectSlotsByName(send_email_form)
+
+ def retranslateUi(self, send_email_form):
+ _translate = QtCore.QCoreApplication.translate
+ send_email_form.setWindowTitle(_translate("send_email_form", "Send Email"))
+ self.select_candidate.setText(_translate("send_email_form", "Candidates"))
+ self.email.setPlaceholderText(_translate("send_email_form", "Enter a email address or populate..."))
+ self.label.setText(_translate("send_email_form", "Email Address"))
+ self.subject_input.setPlaceholderText(_translate("send_email_form", "Enter your email subject..."))
+ self.label_2.setText(_translate("send_email_form", "Subject"))
+ self.textEdit.setPlaceholderText(_translate("send_email_form", "Enter your message..."))
+ self.send_button.setText(_translate("send_email_form", "Send"))
diff --git a/qt/user_menu.ui b/qt/user_menu.ui
new file mode 100644
index 0000000..f188e23
--- /dev/null
+++ b/qt/user_menu.ui
@@ -0,0 +1,167 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 800
+ 600
+
+
+
+ MainWindow
+
+
+ padding:0;
+background-image: url(:/assets/assets/zemin-buyuk.jpg);
+
+
+
+
+
+ 320
+ 350
+ 141
+ 31
+
+
+
+ false
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ MÜLAKATLAR
+
+
+
+
+
+ 520
+ 350
+ 181
+ 31
+
+
+
+ false
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ MENTÖR GÖRÜŞMESİ
+
+
+
+
+
+ 100
+ 350
+ 141
+ 31
+
+
+
+ false
+
+
+ QPushButton{
+color:black;
+background:white;
+border-radius:10px;
+font-weight:bold;
+}
+QPushButton::hover{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ BAŞVURULAR
+
+
+
+
+
+ 610
+ 500
+ 91
+ 31
+
+
+
+ false
+
+
+ QPushButton{
+color:white;
+background:#47545a;
+border-radius:10px;
+font-weight:bold;
+}
+
+QPushButton::hover{
+color:#47545a;
+background:white;
+border-radius:10px;
+font-weight:bold
+}
+
+
+ KAPAT
+
+
+
+
+
+ 250
+ 70
+ 321
+ 41
+
+
+
+ color:white;
+font-size:36px;
+font-weight:bold;
+background:none
+
+
+ TERCİHLER MENU
+
+
+
+
+
+
+
+
+
diff --git a/qt/user_menu_ui.py b/qt/user_menu_ui.py
new file mode 100644
index 0000000..336083d
--- /dev/null
+++ b/qt/user_menu_ui.py
@@ -0,0 +1,104 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/qt/user_menu.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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.setFixedSize(800, 600)
+ MainWindow.setStyleSheet("padding:0;\n"
+"background-image: url(./assets/zemin-buyuk.jpg);")
+ self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.mulakatlar = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.mulakatlar.setGeometry(QtCore.QRect(320, 350, 141, 31))
+ self.mulakatlar.setAutoFillBackground(False)
+ self.mulakatlar.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.mulakatlar.setObjectName("mulakatlar")
+ self.mentor_gorusmesi = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.mentor_gorusmesi.setGeometry(QtCore.QRect(520, 350, 181, 31))
+ self.mentor_gorusmesi.setAutoFillBackground(False)
+ self.mentor_gorusmesi.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.mentor_gorusmesi.setObjectName("mentor_gorusmesi")
+ self.basvurular = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.basvurular.setGeometry(QtCore.QRect(100, 350, 141, 31))
+ self.basvurular.setAutoFillBackground(False)
+ self.basvurular.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.basvurular.setObjectName("basvurular")
+ self.cikis = QtWidgets.QPushButton(parent=self.centralwidget)
+ self.cikis.setGeometry(QtCore.QRect(610, 500, 91, 31))
+ self.cikis.setAutoFillBackground(False)
+ self.cikis.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#47545a;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.cikis.setObjectName("cikis")
+ self.label_2 = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label_2.setGeometry(QtCore.QRect(250, 70, 321, 41))
+ self.label_2.setStyleSheet("color:white;\n"
+"font-size:36px;\n"
+"font-weight:bold;\n"
+"background:none")
+ self.label_2.setObjectName("label_2")
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.mulakatlar.setText(_translate("MainWindow", "MÜLAKATLAR"))
+ self.mentor_gorusmesi.setText(_translate("MainWindow", "MENTÖR GÖRÜŞMESİ"))
+ self.basvurular.setText(_translate("MainWindow", "BAŞVURULAR"))
+ self.cikis.setText(_translate("MainWindow", "KAPAT"))
+ self.label_2.setText(_translate("MainWindow", "TERCİHLER MENU"))
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..e9f9479
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,37 @@
+astroid==3.3.5
+cachetools==5.5.0
+certifi==2024.8.30
+charset-normalizer==3.4.0
+dill==0.3.9
+et_xmlfile==2.0.0
+google-api-core==2.21.0
+google-api-python-client==2.149.0
+google-auth==2.35.0
+google-auth-httplib2==0.2.0
+google-auth-oauthlib==1.2.1
+googleapis-common-protos==1.65.0
+graphviz==0.20.3
+httplib2==0.22.0
+idna==3.10
+isort==5.13.2
+mccabe==0.7.0
+oauthlib==3.2.2
+openpyxl==3.1.5
+platformdirs==4.3.6
+proto-plus==1.25.0
+protobuf==5.28.3
+psycopg2==2.9.10
+pyasn1==0.6.1
+pyasn1_modules==0.4.1
+pylint==3.3.1
+pyparsing==3.2.0
+PyQt6==6.7.1
+PyQt6-Qt6==6.7.3
+PyQt6_sip==13.8.0
+python-dotenv==1.0.1
+requests==2.32.3
+requests-oauthlib==2.0.0
+rsa==4.9
+tomlkit==0.13.2
+uritemplate==4.1.1
+urllib3==2.2.3
diff --git a/send_email_form_ui.py b/send_email_form_ui.py
new file mode 100644
index 0000000..f4ea069
--- /dev/null
+++ b/send_email_form_ui.py
@@ -0,0 +1,119 @@
+# Form implementation generated from reading ui file '/Users/yhtyyar/Documents/GitHub/Python-Module-Week7/send_email_form.ui'
+#
+# Created by: PyQt6 UI code generator 6.7.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_send_email_form(object):
+ def setupUi(self, send_email_form):
+ send_email_form.setObjectName("send_email_form")
+ send_email_form.resize(600, 400)
+ send_email_form.setStyleSheet(
+ "background-image: url(./assets/send_email.jpg);"
+ )
+ self.select_candidate = QtWidgets.QLabel(parent=send_email_form)
+ self.select_candidate.setGeometry(QtCore.QRect(350, 40, 121, 16))
+ self.select_candidate.setStyleSheet("font-weight:bold;\n" "background:none;")
+ self.select_candidate.setObjectName("select_candidate")
+ self.candidate_names = QtWidgets.QComboBox(parent=send_email_form)
+ self.candidate_names.setGeometry(QtCore.QRect(350, 60, 221, 31))
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.candidate_names.setFont(font)
+ self.candidate_names.setStyleSheet(
+ "QComboBox{\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "background:white;\n"
+ "color:black\n"
+ "}"
+ )
+ self.candidate_names.setCurrentText("")
+ self.candidate_names.setIconSize(QtCore.QSize(16, 16))
+ self.candidate_names.setFrame(True)
+ self.candidate_names.setObjectName("candidate_names")
+ self.email = QtWidgets.QLineEdit(parent=send_email_form)
+ self.email.setGeometry(QtCore.QRect(30, 60, 271, 31))
+ self.email.setStyleSheet(
+ "padding:5px;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "background:white;\n"
+ "color:black\n"
+ ""
+ )
+ self.email.setObjectName("email")
+ self.label = QtWidgets.QLabel(parent=send_email_form)
+ self.label.setGeometry(QtCore.QRect(30, 40, 101, 16))
+ self.label.setStyleSheet("font-weight:bold;\n" "background:none;")
+ self.label.setObjectName("label")
+ self.subject_input = QtWidgets.QLineEdit(parent=send_email_form)
+ self.subject_input.setGeometry(QtCore.QRect(32, 120, 541, 31))
+ self.subject_input.setStyleSheet(
+ "padding:5px;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "background:white;\n"
+ "color:black\n"
+ ""
+ )
+ self.subject_input.setObjectName("subject_input")
+ self.label_2 = QtWidgets.QLabel(parent=send_email_form)
+ self.label_2.setGeometry(QtCore.QRect(30, 100, 61, 16))
+ self.label_2.setStyleSheet("font-weight:bold;\n" "background:none;")
+ self.label_2.setObjectName("label_2")
+ self.textEdit = QtWidgets.QTextEdit(parent=send_email_form)
+ self.textEdit.setGeometry(QtCore.QRect(30, 160, 541, 181))
+ self.textEdit.setStyleSheet(
+ "padding:5px;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "background:white;\n"
+ "color:black\n"
+ ""
+ )
+ self.textEdit.setObjectName("textEdit")
+ self.send_button = QtWidgets.QPushButton(parent=send_email_form)
+ self.send_button.setGeometry(QtCore.QRect(240, 350, 120, 32))
+ self.send_button.setStyleSheet(
+ "QPushButton{\n"
+ "color:white;\n"
+ "background:#db1e3c;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold;\n"
+ "}\n"
+ "\n"
+ "QPushButton::hover{\n"
+ "color:#db1e3c;\n"
+ "background:white;\n"
+ "border-radius:10px;\n"
+ "font-weight:bold\n"
+ "}"
+ )
+ self.send_button.setObjectName("send_button")
+
+ self.retranslateUi(send_email_form)
+ QtCore.QMetaObject.connectSlotsByName(send_email_form)
+
+ def retranslateUi(self, send_email_form):
+ _translate = QtCore.QCoreApplication.translate
+ send_email_form.setWindowTitle(_translate("send_email_form", "Send Email"))
+ self.select_candidate.setText(_translate("send_email_form", "Candidates"))
+ self.email.setPlaceholderText(
+ _translate("send_email_form", "Enter a email address or populate...")
+ )
+ self.label.setText(_translate("send_email_form", "Email Address"))
+ self.subject_input.setPlaceholderText(
+ _translate("send_email_form", "Enter your email subject...")
+ )
+ self.label_2.setText(_translate("send_email_form", "Subject"))
+ self.textEdit.setPlaceholderText(
+ _translate("send_email_form", "Enter your message...")
+ )
+ self.send_button.setText(_translate("send_email_form", "Send"))
diff --git a/user_menu_ui.py b/user_menu_ui.py
new file mode 100644
index 0000000..f837f65
--- /dev/null
+++ b/user_menu_ui.py
@@ -0,0 +1,104 @@
+# Form implementation generated from reading ui file '/Users/yhtyyarannayev/Documents/GitHub/Python-Module-Week7/English/user_menu.ui'
+#
+# Created by: PyQt6 UI code generator 6.2.2
+#
+# 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.setFixedSize(800, 600)
+ MainWindow.setStyleSheet("padding:0;\n"
+"background-image: url(./assets/zemin-buyuk.jpg);")
+ self.centralwidget = QtWidgets.QWidget(MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.interviews_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.interviews_Button.setGeometry(QtCore.QRect(330, 290, 141, 31))
+ self.interviews_Button.setAutoFillBackground(False)
+ self.interviews_Button.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.interviews_Button.setObjectName("interviews_Button")
+ self.mentor_interview_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.mentor_interview_Button.setGeometry(QtCore.QRect(530, 290, 181, 31))
+ self.mentor_interview_Button.setAutoFillBackground(False)
+ self.mentor_interview_Button.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.mentor_interview_Button.setObjectName("mentor_interview_Button")
+ self.app_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.app_Button.setGeometry(QtCore.QRect(110, 290, 141, 31))
+ self.app_Button.setAutoFillBackground(False)
+ self.app_Button.setStyleSheet("QPushButton{\n"
+"color:black;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"QPushButton::hover{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.app_Button.setObjectName("app_Button")
+ self.exit_Button = QtWidgets.QPushButton(self.centralwidget)
+ self.exit_Button.setGeometry(QtCore.QRect(620, 440, 91, 31))
+ self.exit_Button.setAutoFillBackground(False)
+ self.exit_Button.setStyleSheet("QPushButton{\n"
+"color:white;\n"
+"background:#47545a;\n"
+"border-radius:10px;\n"
+"font-weight:bold;\n"
+"}\n"
+"\n"
+"QPushButton::hover{\n"
+"color:#47545a;\n"
+"background:white;\n"
+"border-radius:10px;\n"
+"font-weight:bold\n"
+"}")
+ self.exit_Button.setObjectName("exit_Button")
+ self.label_2 = QtWidgets.QLabel(self.centralwidget)
+ self.label_2.setGeometry(QtCore.QRect(300, 110, 221, 41))
+ self.label_2.setStyleSheet("color:white;\n"
+"font-size:36px;\n"
+"font-weight:bold;\n"
+"background:none")
+ self.label_2.setObjectName("label_2")
+ MainWindow.setCentralWidget(self.centralwidget)
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.interviews_Button.setText(_translate("MainWindow", "INTERVEIWS"))
+ self.mentor_interview_Button.setText(_translate("MainWindow", "MENTOR INTERVIEW"))
+ self.app_Button.setText(_translate("MainWindow", "APPLICATIONS"))
+ self.exit_Button.setText(_translate("MainWindow", "EXİT"))
+ self.label_2.setText(_translate("MainWindow", "USER MENU"))