From 36826575271d283770a64450e87891e3360a8743 Mon Sep 17 00:00:00 2001 From: ismail Date: Wed, 15 Oct 2025 13:13:59 +0300 Subject: [PATCH] more update in css and templates --- .../__pycache__/settings.cpython-313.pyc | Bin 7693 -> 7927 bytes .../__pycache__/models.cpython-313.pyc | Bin 45802 -> 45802 bytes recruitment/__pycache__/urls.cpython-313.pyc | Bin 9373 -> 9512 bytes recruitment/__pycache__/utils.cpython-313.pyc | Bin 20463 -> 20463 bytes recruitment/__pycache__/views.cpython-313.pyc | Bin 71654 -> 71941 bytes .../views_frontend.cpython-313.pyc | Bin 19074 -> 16895 bytes recruitment/urls.py | 11 ++- recruitment/views_frontend.py | 79 ++---------------- templates/includes/search_form.html | 8 +- templates/meetings/list_meetings.html | 2 +- templates/recruitment/candidate_detail.html | 51 ++++++----- .../partials/stage_update_modal.html | 59 ++----------- 12 files changed, 46 insertions(+), 164 deletions(-) diff --git a/NorahUniversity/__pycache__/settings.cpython-313.pyc b/NorahUniversity/__pycache__/settings.cpython-313.pyc index b4559a90f4c47624f9ad7c5a4613c0e6af2856a3..9395c449071310344438a33cd0f34f15a44e5438 100644 GIT binary patch delta 1440 zcmb7COH&+G6z)4OWQON3JOYGw!n=FIBY^}G2n>iKg!uqtAdrS>pd-wXGYtfc4pC#& zDl5TWx$qCTbT@ zp;!}PffCgf7F34Pc@gc9vS*)Y_t{uR^Vultb{*$60UyqBmsI(bl&erZnxG0)QYE)J z&(x~+fTEz%SmsAX0S>Kt3|*oLssJXD1XRL!e~1%0@vx~LY7XyPI2&`kBL)FPEw zy#cLsfrq)ss}XI~gm!99F+qJvXnCbsw3At=^_BL8PxrOq5~bSF!Pn3^CD?XN33NLX ztGG-Wu22{~bP2uGfveQXtBcRxjcarneRKu=JXH^_Q!lTpxIx!2Kz$gbe%z$%7{V|j z7~xwPWz5Fw7{eP7cvE#_9B*L)ld3y~TU?q_U5N668lW4P#tddTdK zcd_8$BJN4ld^7-^2C+mpv5XiGV#trmpGU!pGuSE*wg!{A3hq0ZcR91paZ16)l$alw zA3$7nogfl?#!Wl`Aqk89Eo@^453#Fyu!r~X2=6=o2S{NbkEO49_^jwL`QyHbbVu!Ue!Ga+Kjl9V(KHGs z#mIupFG;g3jT6S$Yp$WYCy7i}V#|sdaVz69;}VZ)i?V)C8r}ZAa8xYV;b3dSsaEDS zD-lbKo5`1SsY-@43wA1Kih27*u!}cU72RRGTht@w>~D*nhdz^(&)IO>P0LKgleA*b zhWf;+ZHHP)p3917+cb9QKr+9SX3hQ~)Fe#%pHNTZoFsV74Sm(fcrATt-Ebz!_%|uB zX^>?a$!0e_vFC~_D@!Fe%XnxR@mMnBS?9xMyh%%6S!s^gcJbG@gX5EjmC;5TkBe~4t3$F44) zj8q3*`*}wrLJ8#TXC3*JlKMj>$XH!>s8mR7JI37V{p=&Z;tl`k={@qgD_n<4>7V|b SJlDSes4{JrZ@WFeuY`(v@4UWy?)~od zpA(;_1HU&lc@_RH(XSWt@q2+bv3f6lzY3qJQnRVRpAi&96K#i^LI_Y8%?M&ULZ(Ow zgbg(%D1t~<%nr#hFMqSimvfnAw;?*JKC7DoZnW?&tr4BD%4QcJQRQoW$dMFi5>D zW+z)864Z|&8sPr$^ZqU=rTXu4|A&^{FSJnnf89aypLK&UC;^jiA(at~dolvmy^i7` z?4x0f&~A)U68p)(0W#TAeD*yUqrDiXeK^RfMsSEm+4dt%2QWcnn51zWrh_rSy2<8*1p!h5F%Eaa&@bor-I-5TEc$lkJ#UMP781C56_RH=J#F~qTRmb z+Z4Uu`X6ZSR;E##{iu1`Jtf2Ac7HG_rtI0^WpSqVU2sO6$jbVngq#E?UE(OwLuX$U z>Ymb-O5Q3~>h3~O`e(ES**_=Yyge5>DYEugq2c~TS&*~puT)C;(sZHxoGz!*1qoTZ z5h{pzdp%k@fT^$Fi delta 21 bcmaF$lkjJX=L?m&;$pgewCrzOq{mHLi=>t%k21eC^dEfQGO`)qWOu zPSp+sufS9v5|!R4Y!?i%3&gH!4$v9wR<&k7mBsvgACq}$vEv(KMoSc0qPuB8r?8J@ zL{=cSyJE!0AU>w2z5c;P`e%!PmT;S@)%+4!>9s#X zD2S9JV&pKJqi7+~cjPLdYq*;QdT8JS7U)&Asz~?vg7GggOl(IWN~kb?!FVqaz00Pi zINAcgQ7}Al@Wc&IA9(s|p8lU)fHHWBW1=(_>5bCPj3Ez$JZ#A0AdlDNN&Va$ps(>+ zQWwxe#uIJg_&Y80FrfeWyZ8Z`pNTiI!G$f{LiCO*2B|ytKYwD&= z-TyK@`wgIZJVRQ^2L;00!Q+Hm!8XEYL6Pte#(x=w5Y_aDghAFrg;rblZuA=NPH=bX z-Q$2J@QS(Ab#tlEPOl*ifi$F#UI26v-yj7xLw>^V8Gm8?I}{@kUzpxWG8_q*=V)a| zl&JO^-80ZVqvuuu-NI8=Rl6Ui6~1NM57SN68DFzVs}v-WlM=0VQKHJ5j9ZdS?0v>R rCAwmBgz|KR#tV^Hn|U=h+E##m&mG|Fs5${9@mU+q-FK80$iMO*u-{Sh delta 998 zcmX|=%S#(U7{GVqCe_4fFp9=(c9U$3S}Z zb}NIgSE+^HkvBTvcgH7e1m2saQIzE@WM&( zSG7qyara7U1c%NY3v24i?DleIPMx3KT2{8zC^2sl^l0ULhZf`0H>z}-b9igv~O-DLKUl`)rPg@YRCl7UMu zlmjk`Y>L+EakGjx;;G}QRfR3Rj6YDI5C%fHFax+gs=f2LyQo%2iq+?0usR5; zgZWXwMUacm2(&5*6)|RrX}PLo8|G$`>#R?^6doF!m138G1Tj%H2c stUbw#&G!=N@|EWPq_hMYNFBa4zdS2Mn1^k=*1?DI_{r~^~ diff --git a/recruitment/__pycache__/utils.cpython-313.pyc b/recruitment/__pycache__/utils.cpython-313.pyc index fbf2b0d82f84aabde430b7ecca08c22bb8f46092..d6f5ba5cf057d2c5ff51a00baaab23f8f29b3978 100644 GIT binary patch delta 21 bcmaDqpYi>CMy}7iyj%=GAYZkS>#08gQ$_~J delta 21 bcmaDqpYi>CMy}7iyj%=Gpc}A}>#08gQpg6Z diff --git a/recruitment/__pycache__/views.cpython-313.pyc b/recruitment/__pycache__/views.cpython-313.pyc index 433256d66faafab84c5b6634d60ef08847543e98..415073d87081adaecd30c2cf4b31de145f91d24d 100644 GIT binary patch delta 13417 zcmbVTdvsLQxu26sCJA|xcOZ{R2#?{B$RoT2B|s1+5YWRzF*uoIhGddSChnOKNv{r7 z!B^GdE~cnd?7E^*KxC>|Z3XY@qAG0#ZN(m?YL~55i%YAwtM&T0-|yQqbA|x7?d6YO z_SuhbfA9UBJ%>L%k-YVAa`tCgStBg;uX6C?&ie+oXP0RH?c-Ng+AX?8Pi@L{W{E6k zw#eq^w5A+qj>vK5itRgQPqye;O{1Kn#b_GK)^nQ5oaLh2Ss^N%m7>yV7j|crsB%_| zYUdcS{U7$LEqY#)!#Pn*x$WT4$Z8<9!O7E^$s3Q=QYqH0N|N zo%@QKW;p9by>q6R>6|5IIcJO6ytcSW_GqQ!oeRVQXM0Fh^tF1)fT;MltnLZ8F$rT`R(cX^3ZoubH#cdsGxz$#DTE5mIv%KP}NdjZ;jGv z;ofTM9n&&9-n)T&Yp8c@%dB|sb=*6SddIiSjQ6_q38O5cRd*1&^@)US`Xs`3eKMg( zpF-%>!?pBhqh3eYpC*_i^y!4%EerK^`ixPQF0Ed1XA%CE^p*?~w7yP@ ziLTEaWr>Z){)!%+H7jA(Y;%_A)#rq1gMdDlut|_O9^k(ml58iI|;*j z6X6zpIpMeU6@)kI&4jn;D+zC<4Ob;>xK+QBdbcS-^m=(+a>?S@LtRo_QF_9X+w|46 z-~zM)+<-Pf3!ojaLGH^LpV5J4C%`Y?$|=*DBmc;GRSPRQGcPFT9GY#U z^aMO!zmXO4_VoGPA+M{~-QyJn7#guLAbMQwes?fvWCZ)$+r7b{t6%s<5Zhcx4>|?_ z7z~cKSfn$rT&Z1`ucVhow&i`M)pXOKVZEYpwPEe>h78+ApFc#Z$fj;bvgoBh!YOwZ zjI*(BZ-nA#o=S2BB5E-M&Te4tGmeQST(SCR5D1sJ28u=x>sLFB&)VRy6MhKv*Nor8L#< z_4{2eho&|{##^9v8N}2T3ZvzEp15(ucK*(wtlZwB=`!JUPCaLTi4&`A^T71@p?nP-i|u424m|1 z*88|l7a050SX3BSb>wg~vY@B!feq6@%g z8$&H4sjpj1LKkn6gVqlS$iVCp0d({c7@3MwkBj(qi|eT?m_k4XwcC}h;h=_neIU@Y zLP@ix&m-S1NtM@^ec2v2bhG21SsGy=1^}%5O=#T!xM&3I#OO|Wvb;{&VyDb4Esa!E z+^K~h!O$=*LdT8_QH3FdqY8BgwG11DrI+G@RmCb{eL+>C2NSH6G8{IgK&CwuCjgxY zK@hYNuwv{Go=XbTcdp$n5 z1e-xTOq5nTk_{_OfoWat_KF1fz#|IjQS6g>5#rx5L@HA40d0(GUR+c^E9jm8d3|ZH(DXxr^kT2v2^PUPm=o5hbYmPZf4I z+)*T+0%5lOrD!R2q4hN22;dn2$JI~JdKSQ}bU=;bIe_UQNAVcfk~oG(_8L}Ait-f* zC=LRc7go=?@nfXLxE8;N9H=W#(T>X#Gv?b6ePqw<`jB=|-cm2uo4g~Vl2T(X6I4g% zR`jN{2l{(M;&v=90gM8$>`-}vhzWwozL_Oqmc-;gb2$I6(sCmw6bQNfE_Yv_-$(n0 z#BV_Kw}96HrvYyOeh0XhAec#@qC%m{8mBN0aA-8=ZY`2J>$@7AJlC%*jXXK~LoM?- zCV*%13HjJuhjvPyn%fjMwZKBLc$j6RELpa^QBM$%wVog)=&_J&6G%$u7H34$NZ>kl zV5#(Gu_QFd6^=J9i{B=rr`B?K}@__EkYUV-!IzUW`L6JJn zp>@fo z#cS)?9-|U=Y{6{k&`9?6((%IjgW`?UAQdR6oVw)ei#u!_H5GDEf|YPV3J+uJKX$NXIER=9jwb5rBuWzDW-x@*zO z=H|vls~Z=q^Ea*@I)B-^RtgFMCdC(kc-p9B4Ji3X#^fe1^84G|?cE|ZvSs-VTGo5C zhO!^DELvnrb4>}y!iRYNh`^LrHZ+gY(q&8Y)N{P=FU@17U2F-hH}azi0Hw1lTC9o; z*|1W1-ACGfxnb34ZIj%*s`5(q-)Y#JGi^3RJA_9LkZ1_zq8I5x-Bn;P!_tA6~m~(l5bD8TC?K?(_ORuF&Q_uc*W{JD?Cy1SpZ2 z>l(xC>AV%{wY^Eotn3}@K?+4(v!mEZ?g|EajTAp+k)V;>7VvCV&Qyg-rjD3V4ykS$S`xK(hk;6V^By$C~35zq7a#T&n zY(oRlZdX8%nvD@WM@{*qY`D5Sw*KvxF1Awa)kaK>?7sTa zByC&dt@X*)Fk2v9aaNAiP;P=knRY4qMga;4$S$U@phFZBtZt^NBi?Uhc)Y=ODsK2C z?g^Hl_o##DvB&}W#h#BvZFN8 z-8wfZZ3_uVHPwE3plzz{B}jXte6Ovh5*l$>jr5plf<_9x1B=aEk_=YJCvVD^bKA2w zn7NI$#Jk|1@`&p8aPTEMa_in9vAFWeG;$RNq+#VCkUM&uT`Vtx0 zI5v!p9GR-_Vg9f#p*CQNkO>m%IW{Kea^^mIQZUP~oS8IfnNgt1=3y3EO7ptNLULWl zf3jtMUN{HRUkZpjt(Y!<+gaJl&bfd_$V)DuaKpCA?Wd~>719$iFIr4s%{j$HK6G_1 zD?zbBuJ)}bCZ6ye)UxDtU6a@IhR9EJ%2YviGZ;9zz>#AIWIQPh6I;C}ox7Jzu!AC(H_B2wxi1f10n7|LY`lI@ zFCgY2!1;fqio>``Ss)`#3GVZVYawk8y8+Imo<#5(~iyhizh2$p%)uuyulB5#}uhV3*-(SGI(!wE-Cp-$f3SvE?&u z&RR?b)1sfip^0nIM*21~)%mDSOH~jkNodC41WKv}vgziirLY;FUXJX9$YZ}SEpH0P z)_)&rDF>K&*%ULHTTPp8ifwVOjJd;8t^D-nG1{Okyycf9;~#E$LMwxedE{}6O@Hy5kM{X-tuVkjBFk<9Vfwj>aYVULjFK#+L>gebO zmn<1e%PEn~mY(3FCMO9yVc|^xa1(@w$Bqvx9UyYwwsI=nUflK)Np;_CyRy_P&puhd zL)U8M9Xlpyo$~OGIkg-!ocM1Av8{k@fKF)oHneUB+yS^#mfr6On_!(Ojup>HVw)vtP!7(p!~YoiEI z@{Qen#${1IEZmOC&=puY20)#X#`= z4i^OzFoR{7gVsC%pO}0GJR>*nEGvZ&^!vT4&}Lm4^7EYwwR_~O2c~4Oqg)TN_sY-%RY~NN_dPJf1{(zJ()CTD zeCL5|+%|stK!tWNlKbG45q8eBFJsLKz^@4C4l(Ac;uX2!(Pbl<5B8!6(Gow_Dn_sBf0}E zyH{@CQ=~P^$M;ld&qjW+XKm7`L)e~K2BV7Q!_+reBVT#6NUqpBvNz7_UYn@Gq+uK} zGt9wx7dl{jSdow)4=|Va26vAt6P~9Xdu%kf(IQXn$(L{Mtycw2q;}stEtmOYH$92{ zpO=F_x}=?h2d0djR&z1NCwo3xJm0)i*AZJo_-O2R> zA4eQ^?AFXKIE~%%n(mA3RqDX8KkV9j(i7vg;}QLdv6}X%+D?x5flxC6XcIlRQLvEwTM zNNA)t#4bo_0w13*%bTB?s68tWJXMmA0@*`2-91di5`GIspcyvx)64K*a@aa)*eh-# z0W-&5HcdPI3PhRL1Jp9ogg4k1=&hxjyHr{pJwMgkSFsrsYFAg(NnVrUX*yKp(fy@z z&5`dFvj4HToLms8;-~WKBXxB@0}tl~;Jvg{f$(q3nj@p71@i09SS8REXupx{GF|dL=GW=s9&B%Dk&ysHQWe|Ak{D=UeMbBP;*w zWosVfq|)5f;k|OwaWQ5Mx>Ho1;ujZI0B_ieA)7cVj~$;vzpi|Id{Kh5^Jq|&8hqTn zkH-;!2chQefcpUV0@w{QG0N0uppV^*lg@4$K%NeDs<(e;BhG>Hhzve7!>ay<3`Rk$ zCh)l8r*=@h57JK(7}*q>BE+eV3mEWVWYXo8+4V{wPsJ?cDWy|KBYzmqC+ zn_E$=s)cdpY;oquwmBz8YoEwTCstBc_|}QT$qv|cZ<2TfJMhAHY2g<(`+zUhX-_Dj z-;!%jR%FzG>Uzw*R)$a3+O9!!m#jQf5^hDa4bVOlbTA@8ggKa~z`+ z3LZ{UN3n>Vi-VdEkEb!6U;5ckhwyj=VCJU@ScU`_PN<^UVrIo$hB=(CTG3)Z-32m; zYpN=`>5q|yI~jb5Aby7-Rs$;p`7!32a7#Ks1c!%_+v}#^u5qA{*XFXzc47m>xltf< zQwx%)Fg*C`WGW2be6>bPKK$Bt>*cV%_$&5cL6ei%8NNXW@BA>0H}6fz?8XTENKQXU z;Hw#{Jo$R{$|}&{I*4`0*$af!PvO-x8Y^y0x~4=NKj*k;!)bfQ2wLBjO1Y`iBA@*I zICdhhE=cgan#w!dCRP0eE`csm0$x_aA^S0B_Tj)#889{1WgLfSs`7948D@ zH)}F}swKQC{r{Zu-}1>d!gNaY(}uX1^^`s=P&w;ZLo4okA_bOT}(8w|))kVh_JIglt!UqM~F8TTg6PCw0F*41>M-$-zbQqb= zWu?6_hcXe}y75mlX<&!_LwSXCepr1@S{wLqS}ps5=|2yFV>T%V?sa%%Cul{hO`iVn zWFD+ZC6HMiwaTA-R2F8_PD(KCJS8Rjeh`P}j(*Urx@*##URv zXqkNbgR*jwiw<^y+ZPkq7i*~Hn4I7toJHq>$}l&fYabb-6ZZI zq8O}>!LmsxP#k&c(&9os!aj~brQ_+7uPciJG~Y3J2hE>^a#p^VGN*q)b>eDo2-XhS0kpVK%5BvnSsi7Jz2$$bt zc`K{pq0nw|Dl0tk_T;y63cuTVvU1vMInz(3P3KRY9a^*FE-@Acnn5d#QJyY$Z%3dO zU)Bm=TP;3aspYSUg91z$$->v($zL!VMbWvjpGIr(TQYq(k%D<;(Lvl=2Wvgvq1#4k z*_v(W{*hXBIF;Fs&gcw<`a~M_B$Sq%cVPn~Gm(zSLRW6I%hML)EIW}Nm1RLLyy!>! zxG)>l$1#dpexSBL05Jn3Bb~v;$Pa89tKVvhp=>mg(R1);j^guv#i_w^tZ4!fK zMA^{JJZ*HioH>erA`|)H9>v_?U6 zg3?`wmoAAZ3)FzXSim^Ic+5;mVL^uG=WA24#8hPWof@B5HBEcdlJTY`=Zt028B5U_%k(pr8D}i>-?mJ9+cNo-W%3zI`58;a8OxD* Zh1w62^8VVH?AEl5&z#mIZ3c(m{{mB~b6NlZ delta 13311 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 diff --git a/recruitment/urls.py b/recruitment/urls.py index 4aefef5..e48911c 100644 --- a/recruitment/urls.py +++ b/recruitment/urls.py @@ -41,11 +41,11 @@ urlpatterns = [ path('training//delete/', views_frontend.TrainingDeleteView.as_view(), name='training_delete'), # Meeting URLs - path('', views.ZoomMeetingListView.as_view(), name='list_meetings'), - path('create-meeting/', views.ZoomMeetingCreateView.as_view(), name='create_meeting'), - path('meeting-details//', views.ZoomMeetingDetailsView.as_view(), name='meeting_details'), - path('update-meeting//', views.ZoomMeetingUpdateView.as_view(), name='update_meeting'), - path('delete-meeting//', views.ZoomMeetingDeleteView, name='delete_meeting'), + path('meetings/', views.ZoomMeetingListView.as_view(), name='list_meetings'), + path('meetings/create-meeting/', views.ZoomMeetingCreateView.as_view(), name='create_meeting'), + path('meetings/meeting-details//', views.ZoomMeetingDetailsView.as_view(), name='meeting_details'), + path('meetings/update-meeting//', views.ZoomMeetingUpdateView.as_view(), name='update_meeting'), + path('meetings/delete-meeting//', views.ZoomMeetingDeleteView, name='delete_meeting'), # JobPosting functional views URLs (keeping for compatibility) path('api/create/', views.create_job, name='create_job_api'), @@ -105,7 +105,6 @@ urlpatterns = [ path('jobs//candidates//schedule-meeting-page/', views.schedule_meeting_for_candidate, name='schedule_meeting_for_candidate'), path('jobs//candidates//delete_meeting_for_candidate//', views.delete_meeting_for_candidate, name='delete_meeting_for_candidate'), - # users urls path('user/',views.user_detail,name='user_detail') ] diff --git a/recruitment/views_frontend.py b/recruitment/views_frontend.py index 3e1043a..34d3f55 100644 --- a/recruitment/views_frontend.py +++ b/recruitment/views_frontend.py @@ -92,7 +92,7 @@ class JobCandidatesListView(LoginRequiredMixin, ListView): context_object_name = 'candidates' paginate_by = 10 - + def get_queryset(self): # Get the job by slug @@ -239,75 +239,14 @@ def candidate_detail(request, slug): def candidate_update_stage(request, slug): """Handle HTMX stage update requests""" - try: - if not request.user.is_staff: - return render(request, 'recruitment/partials/error.html', {'error': 'Permission denied'}, status=403) - - candidate = get_object_or_404(models.Candidate, slug=slug) - - if request.method != 'POST': - return render(request, 'recruitment/partials/error.html', {'error': 'Only POST method is allowed'}, status=405) - - # Handle form data - form = forms.CandidateStageForm(request.POST, candidate=candidate) - if form.is_valid(): - stage_value = form.cleaned_data['stage'] - - # Validate stage value - valid_stages = [choice[0] for choice in models.Candidate.Stage.choices] - if stage_value not in valid_stages: - return render(request, 'recruitment/partials/error.html', {'error': f'Invalid stage value. Must be one of: {", ".join(valid_stages)}'}, status=400) - - # Check transition rules - if candidate.pk and stage_value != candidate.stage: - old_stage = candidate.stage - if not candidate.can_transition_to(stage_value): - return render(request, 'recruitment/partials/error.html', {'error': f'Cannot transition from "{old_stage}" to "{stage_value}". Transition not allowed.'}, status=400) - - # Update the stage - old_stage = candidate.stage - candidate.stage = stage_value - candidate.save() - - # Return success template - context = { - 'form': form, - 'success': True, - 'message': f'Stage updated from "{old_stage}" to "{candidate.stage}"', - 'new_stage': candidate.stage, - 'new_stage_display': candidate.get_stage_display(), - 'candidate': candidate - } - messages.success(request,"Candidate Stage Updated") - return redirect("candidate_detail",slug=candidate.slug) - def response(): - stage_form = forms.CandidateStageForm(candidate=candidate) - context['stage_form'] = stage_form - stage_form_partial = render_to_string('recruitment/partials/stage_update_modal.html#id-stage', context) - success_html = render_to_string('recruitment/partials/stage_update_success.html', context) - yield SSE.patch_elements(stage_form_partial,"#id_stage") - yield SSE.patch_elements(success_html,"#availableStagesInfo") - yield SSE.patch_signals({'stage':candidate.stage}) - - return DatastarResponse(response()) - # return render(request, 'recruitment/partials/stage_update_success.html', context) - else: - # Return form with errors - context = { - 'form': form, - 'candidate': candidate, - 'stage_form': forms.CandidateStageForm(candidate=candidate) - } - return render(request, 'recruitment/partials/stage_update_form.html', context) - - except Exception as e: - # Log the error for debugging - import traceback - error_details = traceback.format_exc() - print(f"Error in candidate_update_stage: {error_details}") - - return render(request, 'partials/error.html', {'error': f'Internal server error: {str(e)}'}, status=500) - + candidate = get_object_or_404(models.Candidate, slug=slug) + form = forms.CandidateStageForm(request.POST, candidate=candidate) + if form.is_valid(): + stage_value = form.cleaned_data['stage'] + candidate.stage = stage_value + candidate.save(update_fields=['stage']) + messages.success(request,"Candidate Stage Updated") + return redirect("candidate_detail",slug=candidate.slug) class TrainingListView(LoginRequiredMixin, ListView): model = models.TrainingMaterial diff --git a/templates/includes/search_form.html b/templates/includes/search_form.html index 5cdad13..721c99f 100644 --- a/templates/includes/search_form.html +++ b/templates/includes/search_form.html @@ -1,6 +1,6 @@ {% load i18n %}
@@ -15,10 +15,4 @@ value="{{ search_query }}" aria-label="{% trans 'Search' %}">
- {% comment %} {% endcomment %}
diff --git a/templates/meetings/list_meetings.html b/templates/meetings/list_meetings.html index 0297876..a602ac3 100644 --- a/templates/meetings/list_meetings.html +++ b/templates/meetings/list_meetings.html @@ -184,7 +184,7 @@ {% trans "Apply Filters" %} {% if status_filter or search_query %} - + {% trans "Clear" %} {% endif %} diff --git a/templates/recruitment/candidate_detail.html b/templates/recruitment/candidate_detail.html index a35e152..e00e130 100644 --- a/templates/recruitment/candidate_detail.html +++ b/templates/recruitment/candidate_detail.html @@ -118,11 +118,11 @@ padding: 1.5rem 1.25rem; background-color: white; } - + /* ==================================== */ /* NEW: Vertical Timeline Styling */ /* ==================================== */ - + /* Highlight box for the current stage */ .current-stage { border: 1px solid var(--kaauh-border); @@ -131,7 +131,7 @@ .current-stage .text-primary { color: var(--kaauh-teal) !important; } - + .timeline { position: relative; padding-left: 2rem; @@ -163,17 +163,17 @@ color: white; font-size: 0.8rem; z-index: 10; - border: 4px solid white; + border: 4px solid white; } .timeline-item:last-child { margin-bottom: 0; } - + /* Custom Timeline Background Classes for Stages (Using Bootstrap color palette) */ - .timeline-bg-applied { background-color: var(--kaauh-teal) !important; } - .timeline-bg-exam { background-color: #17a2b8 !important; } - .timeline-bg-interview { background-color: #ffc107 !important; } - .timeline-bg-offer { background-color: #28a745 !important; } + .timeline-bg-applied { background-color: var(--kaauh-teal) !important; } + .timeline-bg-exam { background-color: #17a2b8 !important; } + .timeline-bg-interview { background-color: #ffc107 !important; } + .timeline-bg-offer { background-color: #28a745 !important; } .timeline-bg-rejected { background-color: #dc3545 !important; } {% endblock %} @@ -187,7 +187,7 @@ - + {# LEFT COLUMN: MAIN CANDIDATE DETAILS AND TABS #}
@@ -199,7 +199,7 @@

{{ candidate.name }}

- + @@ -345,7 +345,7 @@
{% trans "Candidate Journey" %}
- +
{% trans "Current Stage" %}

{{ candidate.stage }}

@@ -356,8 +356,8 @@
{% trans "Historical Timeline" %}
- - + + {# Base Status: Application Submitted (Always required) #}
@@ -365,11 +365,11 @@

{% trans "Application Submitted" %}

{{ candidate.created_at|date:"M d, Y" }} - | + | {{ candidate.created_at|date:"h:i A" }}
- +
{% if candidate.exam_date %}
@@ -378,11 +378,11 @@

{% trans "Exam" %}

{{ candidate.exam_date|date:"M d, Y" }} - | + | {{ candidate.exam_date|date:"h:i A" }}
- +
{% endif %} {% if candidate.interview_date %} @@ -392,11 +392,11 @@

{% trans "Interview" %}

{{ candidate.interview_date|date:"M d, Y" }} - | + | {{ candidate.interview_date|date:"h:i A" }}
- +
{% endif %} @@ -407,21 +407,18 @@

{% trans "Offer" %}

{{ candidate.offer_date|date:"M d, Y" }} - | + | {{ candidate.offer_date|date:"h:i A" }}
- + {% endif %} - - - - + - + diff --git a/templates/recruitment/partials/stage_update_modal.html b/templates/recruitment/partials/stage_update_modal.html index f6a5f28..bf809f4 100644 --- a/templates/recruitment/partials/stage_update_modal.html +++ b/templates/recruitment/partials/stage_update_modal.html @@ -19,66 +19,21 @@
Current Stage: - -
- - - -
-
Application Pipeline
-
-
-
-
- -
-
Applied
-
- - -
- -
-
- -
-
Exam
-
-
- -
-
- -
-
Interview
-
-
-
-
- -
-
Offer
-
-
+ {{candidate.stage}}
-
- {% comment %}
{% endcomment %} - {% url 'candidate_update_stage' candidate.slug as stage_update_url %} - +
+ {% csrf_token %} -
{% partialdef id-stage %} - {% for value, label in stage_form.stage.field.choices %} {% endfor %} @@ -95,17 +50,15 @@
-
-