From 1cadf42660fec36dfb12889f7142cea5e51051fc Mon Sep 17 00:00:00 2001 From: Yhtyyar Annayev <70913322+yhtyyar94@users.noreply.github.com> Date: Fri, 15 Nov 2024 22:37:49 +0100 Subject: [PATCH] copy project to hw repo --- .gitignore | 9 + Basvurular.xlsx | Bin 0 -> 44869 bytes Etkinlikler.xlsx | Bin 0 -> 8641 bytes Kullanicilar.xlsx | Bin 0 -> 19491 bytes Mentor.xlsx | Bin 0 -> 63327 bytes Mulakatlar.xlsx | Bin 0 -> 8774 bytes README_CRM.md | 73 +++ __init__.py | 0 admin_control_menu_ui.py | 175 +++++++ admin_menu_ui.py | 152 ++++++ application_form_ui_ui.py | 342 ++++++++++++++ application_menu_ui.py | 265 +++++++++++ assets/.DS_Store | Bin 0 -> 6148 bytes assets/assets | Bin 0 -> 48514 bytes assets/create_user.jpg | Bin 0 -> 16554 bytes assets/login.jpg | Bin 0 -> 61045 bytes assets/send_email.jpg | Bin 0 -> 30504 bytes assets/zemin-buyuk.jpg | Bin 0 -> 54374 bytes backend/__init__.py | 0 backend/app_page_filter.py | 96 ++++ backend/auth.py | 28 ++ backend/create_user.py | 23 + backend/download_file.py | 38 ++ backend/fetch_candidate_emails.py | 15 + backend/interview_filter.py | 56 +++ backend/list_files.py | 22 + backend/login.py | 21 + backend/mentor_interview_page_filter.py | 57 +++ backend/read_xlsx.py | 44 ++ backend/send_email.py | 38 ++ backend/set_table_data.py | 38 ++ backend/upload_file.py | 38 ++ backend/write_xlsx.py | 16 + check_assets.py | 22 + create_user_ui.py | 98 ++++ db_controllers/__init__.py | 0 db_controllers/config.py | 23 + db_controllers/connect.py | 23 + .../create_table_from_excel_headers.py | 41 ++ db_controllers/fetch_data.py | 14 + db_controllers/insert_records_from_excel.py | 60 +++ interviews_menu_ui.py | 213 +++++++++ login_ui.py | 141 ++++++ main.py | 226 +++++++++ mentor_menu_ui.py | 150 ++++++ qt/admin_control_menu.ui | 287 +++++++++++ qt/admin_control_menu_ui.py | 175 +++++++ qt/application_menu.ui | 447 ++++++++++++++++++ qt/application_menu_ui.py | 265 +++++++++++ qt/assets.qrc | 8 + qt/create_user.ui | 191 ++++++++ qt/create_user_ui.py | 98 ++++ qt/interviews_menu.ui | 278 +++++++++++ qt/interviews_menu_ui.py | 171 +++++++ qt/login.ui | 254 ++++++++++ qt/login_ui.py | 141 ++++++ qt/mentor_menu.ui | 258 ++++++++++ qt/mentor_menu_ui.py | 150 ++++++ qt/send_email_form.ui | 202 ++++++++ qt/send_email_form_ui.py | 104 ++++ qt/user_menu.ui | 167 +++++++ qt/user_menu_ui.py | 104 ++++ requirements.txt | 37 ++ send_email_form_ui.py | 119 +++++ user_menu_ui.py | 104 ++++ 65 files changed, 6117 insertions(+) create mode 100644 .gitignore create mode 100644 Basvurular.xlsx create mode 100644 Etkinlikler.xlsx create mode 100644 Kullanicilar.xlsx create mode 100644 Mentor.xlsx create mode 100644 Mulakatlar.xlsx create mode 100644 README_CRM.md create mode 100644 __init__.py create mode 100644 admin_control_menu_ui.py create mode 100644 admin_menu_ui.py create mode 100644 application_form_ui_ui.py create mode 100644 application_menu_ui.py create mode 100644 assets/.DS_Store create mode 100644 assets/assets create mode 100644 assets/create_user.jpg create mode 100644 assets/login.jpg create mode 100644 assets/send_email.jpg create mode 100644 assets/zemin-buyuk.jpg create mode 100644 backend/__init__.py create mode 100644 backend/app_page_filter.py create mode 100644 backend/auth.py create mode 100644 backend/create_user.py create mode 100644 backend/download_file.py create mode 100644 backend/fetch_candidate_emails.py create mode 100644 backend/interview_filter.py create mode 100644 backend/list_files.py create mode 100644 backend/login.py create mode 100644 backend/mentor_interview_page_filter.py create mode 100644 backend/read_xlsx.py create mode 100644 backend/send_email.py create mode 100644 backend/set_table_data.py create mode 100644 backend/upload_file.py create mode 100644 backend/write_xlsx.py create mode 100644 check_assets.py create mode 100644 create_user_ui.py create mode 100644 db_controllers/__init__.py create mode 100644 db_controllers/config.py create mode 100644 db_controllers/connect.py create mode 100644 db_controllers/create_table_from_excel_headers.py create mode 100644 db_controllers/fetch_data.py create mode 100644 db_controllers/insert_records_from_excel.py create mode 100644 interviews_menu_ui.py create mode 100644 login_ui.py create mode 100644 main.py create mode 100644 mentor_menu_ui.py create mode 100644 qt/admin_control_menu.ui create mode 100644 qt/admin_control_menu_ui.py create mode 100644 qt/application_menu.ui create mode 100644 qt/application_menu_ui.py create mode 100644 qt/assets.qrc create mode 100644 qt/create_user.ui create mode 100644 qt/create_user_ui.py create mode 100644 qt/interviews_menu.ui create mode 100644 qt/interviews_menu_ui.py create mode 100644 qt/login.ui create mode 100644 qt/login_ui.py create mode 100644 qt/mentor_menu.ui create mode 100644 qt/mentor_menu_ui.py create mode 100644 qt/send_email_form.ui create mode 100644 qt/send_email_form_ui.py create mode 100644 qt/user_menu.ui create mode 100644 qt/user_menu_ui.py create mode 100644 requirements.txt create mode 100644 send_email_form_ui.py create mode 100644 user_menu_ui.py 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 0000000000000000000000000000000000000000..47e0c7cba1aa6bcad9495e9f8c684bd9060b659e GIT binary patch literal 44869 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

cOFxf$T9B8 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 U@GqLaX)*X$3ydJ+Y15znKf#6hcmMzZ literal 0 HcmV?d00001 diff --git a/Etkinlikler.xlsx b/Etkinlikler.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..abe2056c5fdead1078c2aa5e214c494b949a8903 GIT binary patch literal 8641 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 literal 0 HcmV?d00001 diff --git a/Kullanicilar.xlsx b/Kullanicilar.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..79c6291f46df22b52dec98b02b8f8e95b34e8a90 GIT binary patch literal 19491 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 W8l7BEk{IHPFX7 zL-d%wo1L(Qli3p+2dMMkJ0h3e?CnzfjU1Xlq=Z{k8|2zEHU{)m5NhLoRS@|cw*ymD zL?`*{Der;15;h*^Sna#O`oWYc{y6BO^H{O8R-IglvgDJ6baDLa(B$PH+C&?d=;x z$sQjo(s>rv8u60x7I)ApqwumT#6NDPG9O&yfYX{E;Qz3iE65{!ry-+$bgtFMUn~?i zSR!7aVx52dj@+^Ig==WW-RXACy3S#f_G#+2b1Z7jf|Zb`?ZF>-jO$`7<)3`oOI5_J6lPRCToNS$~ zEiGM~g-?HensRzlm07WjV2(HO$&Fmtq*e;2;N)u?gTkch0qgHGgLSVnrsT!8?y*Bjl_;7jJsZwS_$PwZ0b>vX(b+Wx= z;f!{0_bPM$@U*^W+zW|%=;c*5ef;EjvSa!9sk`eVkN(|ZMMJ^0j@@x&&(~>U;nCvO zHPmF+4ze$Q2Qb?85;c8s9XUMiI*MMNMjrNz4!;BU#aGu!o4l9EFQ24a$zMN=b7e_M z7X+sZ!^zq$^@n*W@`k*v_j@b@>`YMAZp%r%$=2UJ4wfFOc5T7g+w-6Xe$2hS zJdBDyF|2nlJt(TJs?kR~dzI`v)=KUB9F^1;nhYb*KrJ*e~_&%I>6?0r7iUjDL)=qvZ}sXDpq zHPCq+H4EmMVWVPu5i;L06#V88GFWck3h|i*bIr18*0VSr)_Pxm@MQKAs`6mp&g1*? z@YCH@YcG$D;~#a0v{q19`FKKRJ?gDQd12!VH5%Enf}JQW8%asA@G0`|ft-@vhoM7tO*>xrU%HlE5&>(V)K46$2gEyd z*@y$j7ZL@{o(93I734$iMk`(_gx}}u?97Ar+sTKLSh67=-G`lo%Nj-eEXxlhl~-I6 zN!Lb}?Ui|V=es)OA1C&$fmlW|RD*Bi#z-7AO4u0(?>CSSg|K9E9!ljvB@uuhmJq4# z9M{AbC{XI;?5eF~1x6Gj<;gP53oz>D*+uh4_^_9BFw+gmESOidVb~u<{7lVu5uiy< z<_SEX;&6n_f?b50HQ=SUNYD2>2${hQ8N28f=}FGM@7Kh$GsE-rtUO}JS&{v$5>Do+ zC=n*m*Zv5ffn`NIgv^9pgsU|mnGD<_d;bHQLDZMEA-B&jR9xE9vLR0%WLAF_XQ>*Z zoVLkX?Kg`3d|6T@_)FxiC+#+pF1tB7@6j=^KsA#l4@?t`ZIrPM=PdEg5M8tJ{7~K| zjV#M1rgQxZrZZ-o!4q>Osi4C`g~wL(b_{>A@_PTLkfli6>=rkg8Z&i(*B}de-7*8RPK4AS&8qRXuBIvy6RsAOSUPvbvu2 zEwe@j8P1`@xRe30r`0AM7$)VE5v;&64{S~u`BE&ic>9!bMVvBxr%d(-Ec2T3lo>2K zWe7101>~kFKan!NUm-h)_WX!{gCTH?1UKNOsR)rWfnN_hi1EBmK!Y7{j10H=rs;Je zWkNp`JBaoCNI-)pa14NpCue$-NSVlwj01G>ybin}3^+!C3z0KbBvQWMC&U5bIX?n# zNCA#f;ReW=Y7i+C`>Ak%1kUROHWUEIXmFe5O!bMBN&M_NK$p*t1UA$F$LMhJAf{$S z%A|hb93av2IzbKHz%ho4QVk%E>(N(r1UAF%Z{r^av2r&!SpzhwtaRyN-h!wPbgET3X;~y>@ zPya9n(BH}t+t$6-}L|MU;j5N$tV(|b`5IkRUcy@mV%f; z`8G%cQ~#+#pSQ2UBLnH{p8>Alc%{%G3Q|t;Xh#K~s@LF|sDI*Aip8{CgF1WF#~B2q zAePYF4br&OjDHQ`u?!{p;su`=c>Ud`S?+n^m^~_3%v{)!7bRNm!asb{AH>96gIat0 z#~2u;AP=C{8>Hc>8UO0SovXSB`InBT!MRLjzj45Fup{r^nY8<=MB=- z)C`1}i)&DCZ~r)hq!a`S{r3|#_JYP32&9@#q4XQ10jXw1Vx+D?|8_#6=PMcW7CR1= zQ)tgJ8IPT{jb_)~F66LlrL2MQY@IB69tMUdfR9c9)okHU;^@{9Y6(~CSqe>zjca6$ zPZk%x?5XANZkF5D>;teV@5GAya3MJkj%)E>rM#R!Uk}ctye3YTc4rgc%UC|VPl>n* z1SFWFatj7|#Eb+!6GzFz9kN(W?_>k)Sh>CqOuh`yoNGdM_jxv(Tmgt7m;$d|zm&0r z4=V0l?I5S@oqkk{M@wZ8jzDmkWe};69W^M!wTl9D7GH%tWv(WkQ2p? zm7=;-6BH8LLd-$ICq_%>elzia7Af7Vsp1|c_kxYaUOwu9zF6#hY~w_FeJeO3Q=Gk8 z`kEEIBNR>*niYLHx&#OWrSOLb!-4#B%Us*>(SwlKAm44st2jW>e610hLb`5JlbjV~ z1W`I+pD@fMxPb(gkJdBl;x&1!aLeW_FfBawWb_TVaa+W2(wP=LlmCGrmyx^@_FiUm zSIRA5mgQk(<+y>7cX^8kUd_6ZuxEL|4}%&o<+>eooTX-V0ov>ay;_Yb2pD|@&))F% zEwi7Ub+C283voI?TDm=#YwgWDN=lhfU_i(0)Z%_#c#G=r^%S@R#|x}p=FjGqF{Y4q z0DMej*?oqHtsN2&5)s84HiJ&*)~|Esy?&v27qA@?{a#Lq^14cMt>{{a>%(Y6u7`TU zqm3=h>mqZNN2#4lk#llF57ueSHSV?HQdg=6Ur=>gf5VJ`xw{FhuTJq33f`|qUUiL= z)7OXYe2<4v&^q&nwx=ha2d2U2=V8NZTF0` zh@Roxql|z2_DF45#v>~ydYo*M;R0+mwQ!JyqSbXh6jWyB4;j3gUOCc*bjwTCVAyH# z_{2!INzhp(ww2qPvVJKUht8HhZ(W%TA@}tHEyUNRfR)#;fa(~0RjDy>$}CC?betCo zR^p!b%}$zFw_@P4EgkQjI;dEPA8G4iUZYF8MR8#Xo|XC*M$_?m^s0ZCqPJEiKyi=g z%jc+*1_2H9)MYCAY&nT>(t8eeUnHK_uD_KH&w+Rf+1yTjspn}aFV>^mLzH;$8QGCEmwkr6YGy8?GT6Wlx?pf^ITS(S@}*-zUT z*v_{)Awp`d#|(QuxcYh1z@p~TZov<=$&TWELhM1aeC=n(hk0AW2An@XXw*LsnzOZ; zlcmKy7bom{CH9%}akPeNGl(=ut%0SW2Ju3M9X_E-6awX%!_iqU%?=S;u*j?){?gD$ zM9NVTmcZ8mTRGXNFs_#(ks|IiW^^vqV`N|T>=PAVM()pVxBAM*vKG=k>{fm_g1TME z$dMB&VHNhswxEw^DRmIDq_tY*5CaJ^RLEuFzhceB^eOQ@i=A9Yym8I^$O^ z)N@yz)LPpj%U+<2P98-@G_$51g@F&NLhX&bR@)NW=1eXS2+QD?6#zxH+M&&Ge1Zco zk%9t+xI)Ffj)8KCM~*eZl+aH{-{4|t0v^eMWgx_3y`oJU^UwEg@NZ~391&!62@d7) z*}y|2*NDkmM4b2d1AX>9z_C_s#ZoV5Nrbal?$bwW3vkrWIc>)Dd%lg5>~>hl%}wU& zGekR=SPq}#T*_)sipeIMbBRwkY@m3Wwg*#qE1iwv#qI{~=Qk_Ln2@)G`&YX`_P5<| zaksNP-G&}*BiKt2^)db-Abyr9Mm%(cIQO8bB;iX&Qi(1ekKQg}u?pewZgp!UJo|pk zLjalP*0JQu*c8cEBVPQcR;^Bjlr@I8=tZ>e<$B zK*ie{q|Dthrni5Lqz#O}rAs3`#y?0_$x)IRxy0Yix}Z+cO=sp1RerpzjLY&18wr_IIrZLOeov6VzA&ig20V& zYrWKeC#()E2-aEdwrFNTmA*4zLgS7bCw-0Cm8Uag-#v)A!@ZcuLUw5P>BmgKjT2*~ zt$-X_dZZBDi+tcq6%o_;X)|BQx2-s(6U>1oB;xa@8KTFylK|mgxfI~1OJUK3ISgid zT7rl%f=z&^gM1p%5UWQds(SR?7xS`G?jilx_7--(ebN-g_QWlXdgXgoKt`+ z)#2wo>6P8}n0?DjZbj$p6QlV<v#j?WWomBteYiynzjT3r!vAK%c=i7C z!F9vD$8&30iUXY!l8s~iG(_g|ZwXdKvj+Y3=+=l|8sPDF6E_gQXfxZRAZg;7prZ65 zhs1HeE>bU{U`MfL`cbWadP$S7qCkbZpbB~$r;){?!A;JU<7;ls?{|N@t5xIc@dISOQ;DYn16HWslcyg zk6-$T)A@aR79dNOX|V;};z(Q6o!a1Yl3__cczM&do^gHj)qvpbt9P}TJx!d4>GMCn z>sUnlut+@+h)cXW9xxua){`xp6RYG>r^~vb;$zwU5v9#ZlCNJ2F)H+Zr?Qw>t$>oXpI?C#x4m%^8K8-Hz<<8q*>a(Neo#sxEERqva|*8aCLluA|dp zJA%eUBd7C!030NelLStc=lJF?a||*wKT+?PNv}u z!Vbb`p7)LI(=zVGTA5FOi^>ABala2aAmqq=*O-@R29TZBqEE@>3ZSVSEG%XparfqJ z5)Vj#CfPx`08;lH%h;aosY&Q)zn-VqZS>1YBED%utNDtU_Rcn&yZCd#z(*o|MRi<| zHyKK>YjVuHn#a4h*KKJUYSizLq-iRnxD#J0HF=s^KOnoo8#!mZ^jvF~P`AsO4W;jVg%>Isdc0q!>IpCWa`=wXy zPNvp0tBs83M!(m{;E-q-2=Ny4nYQ3OF69@#){*ES2d-$KG!O8Vm4C7%oy!Vk5OuO1 z%H{-jCCbApVjjj4>|gHtF;&l`?v+?Dfb031#1yr*#rCqwLEY`*{2l$PPhydj z%jV+L3*us8CF14cATdq1#&;Z9A8pJX>>M6in3=7{^|d4?)3GrMa&08OG>A<~$=!@G zVctwkNK1|}*kE6XqFm}~X=-F|=8-bSvilM|os0<`P_W(1tg#PS5EOVU8s1tnu9 zoP_!QIaI>tB=;dO2Nz2R7ZWXaM@wfTY&0#^>cA9qu{jB3$@Vs>jF$H8xqjrBj=-@m zM;ed>woR&pu2c2Bdpi#&&#*?O@4n#V;_67UU3gT zbSo>ZraoKb`)Zb|Y9xnmBuz(+#U4(s(3Tvo&-B)suzs`rA*Eb*4tt0OnaSJaF-l{Re?) BJQDx_ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 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 literal 0 HcmV?d00001 diff --git a/assets/login.jpg b/assets/login.jpg new file mode 100644 index 0000000000000000000000000000000000000000..77717fb4f429b4a7fc57aaa2d32a09a451f25aa1 GIT binary patch literal 61045 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 BcaQ)8 literal 0 HcmV?d00001 diff --git a/assets/send_email.jpg b/assets/send_email.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d99ec7a7251020bf28c2523d918c55d99f337ce5 GIT binary patch literal 30504 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 S4+769|3laR=qmMJ%l``l&@kfw literal 0 HcmV?d00001 diff --git a/assets/zemin-buyuk.jpg b/assets/zemin-buyuk.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb5cc4f43fce895d774aed148b6fe660490c63f5 GIT binary patch literal 54374 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⋘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 Kl%e+DgZ~G!x5ID% literal 0 HcmV?d00001 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"))