From 4467a56d679dcacf419a55c4fa80b87210497f7e Mon Sep 17 00:00:00 2001 From: Faheed Date: Wed, 15 Oct 2025 20:00:42 +0300 Subject: [PATCH] base.html update --- .../__pycache__/settings.cpython-312.pyc | Bin 7903 -> 7918 bytes recruitment/__pycache__/forms.cpython-312.pyc | Bin 23172 -> 23641 bytes .../__pycache__/models.cpython-312.pyc | Bin 45244 -> 47574 bytes recruitment/__pycache__/urls.cpython-312.pyc | Bin 9416 -> 9990 bytes recruitment/__pycache__/utils.cpython-312.pyc | Bin 18688 -> 20475 bytes recruitment/__pycache__/views.cpython-312.pyc | Bin 71210 -> 74177 bytes recruitment/forms.py | 18 +- recruitment/models.py | 38 + recruitment/urls.py | 4 +- recruitment/views.py | 88 +- static/css/style.css | 947 ------------------ templates/base.html | 465 ++++----- templates/forms/form_wizard.html | 95 +- templates/forms/job_detail_candidate.html | 88 ++ .../forms/partials/candidate_facing_base.html | 265 +++++ templates/includes/language_options.html | 18 + templates/jobs/base_public.html | 628 ------------ templates/jobs/career.html | 704 ++++++++++--- templates/jobs/job_detail.html | 5 +- templates/jobs/job_detail_candidate.html | 260 ----- templates/jobs/job_list.html | 6 +- templates/meetings/list_meetings.html | 8 +- templates/recruitment/candidate_list.html | 8 +- templates/user/profile.html | 40 +- 24 files changed, 1327 insertions(+), 2358 deletions(-) delete mode 100644 static/css/style.css create mode 100644 templates/forms/job_detail_candidate.html create mode 100644 templates/forms/partials/candidate_facing_base.html create mode 100644 templates/includes/language_options.html delete mode 100644 templates/jobs/job_detail_candidate.html diff --git a/NorahUniversity/__pycache__/settings.cpython-312.pyc b/NorahUniversity/__pycache__/settings.cpython-312.pyc index 668c15d2b936102999b6f63e271daa78eaf137e0..790184711efb7d2bbd577dd7cd3fb4ec578657b3 100644 GIT binary patch delta 382 zcmca_`_7j4G%qg~0}x2Wz0XkG$ZN{VD81R4Re*_)w>&c?J+&mhq&zh-yLfXDyBZ6l z^yEtJaz^FNAGyykvq=JV6-iA#%dwqgxzEJPAZ3 zg9tD;1<2A=D2jy%++xo!ElEkuE4js%nFpdF%Hl!t2_PbIvX_uMW8CCPLfR^Dvu<&e zAb zgHR@8^yDaE6QHJk;V2;aO4x!iYO=D(1d$Gql1?B2w6>rmGe57mD0T925gW#|$t8Q6L4ZnYoGSskc~55|eUL!9KagRZx^) ykXlrdnOdyLT+}l8jHnEw*yfj_Z&(mKvMu;Wo4rP diff --git a/recruitment/__pycache__/forms.cpython-312.pyc b/recruitment/__pycache__/forms.cpython-312.pyc index 1ae9473efbc85c1d6e403685c07b92190d708ee8..cea0bd578f4de5a5d2aea967a4d5a8f50609b291 100644 GIT binary patch delta 5616 zcmai2Yj9h|71ot(S&D7R@gsi3vE^5={C>r;gOm6f=Vc{M;xw2tsw`dXn_THCE14vQ z)}dq?!cZXWlmgR22yMZIQi9sT^uct1P}*juOv?m%O9=fze}on&gl49lPJ6z+wk#_O z(Tu*?`|a7YXV0E6+@3&_^o;thZq@zgcIe9}U#}u%u`N4wm z0?8CG2bQTPpD3;kt{PtzEE_KimXDVcZ3<+nu3*J@g=8|DhE0L2W2Qj1EbSlUXEx<= zr`g6e$!d2H>r7;w)j~Rl_~lFZ8o}ohpSOfxE%mii-<3d z^E=EAdkHZs;|v*BQ)f2G8FC%1uJqYe&sg9ClWDwOj4vbU@OT2pt-zxYz;_DOn^tK}n?nd5ZdB`s5X=4$Y zx$XR{C1TSvb~5c&MUAaZ)64}fS`e!MR0661)%+LMX{nC4X5{6#KqU0@JsE9ME?rhx>*22t(@mm05CFbw}*36&Ft*sHh%J5HVieHYfoshtUZX4T!_84F<|4(ks zfN<~>p2f0l)N&cWqsHo?d1mE+FBDJ$zNoxA>YJ1|X)M^}^(rAH>h*4m`STnWasylO zLj5Q-As=+-UZ08)iWVATOk>81g~b5~HS-;Xg*`Gv)Anmh$eku^)9oSokT-%^n1W7+ zPgS);a=_psku)MFZ8HNQ`tGc!bno)$e4mKki<&7CcC7K60}l@O~Z(&NrfGM+6bdTG3DTL>8Rtc9xV zL7Hq2O|~Tzo{s97p6TF(%)|p*2dNtYaE`H;BEDwm@d!V)^29=XHJ6^0W_uyj2j~Y3 z0B#3h(QF8C2jHuKVS*XQ0OfL2c8wUGV4I1Y%U%peW{2oDz;?h0zysI;SO$nEZ;KHg zyNR4L0%1N#AtfSne%}|Ol51tFq~rXXWsg*g_1y%)bty z5c`=wzn`=erubA>REero6EU)Z-&*0G#s0Z1?0zsO0S^+S*swhGrA%;ii2bsS?b>c^ zm3@<<8oPGwjk=GSr3^aBc+XXXc zY$WFjPBeC~VLn*how)_lNNHy0Wo1SDRCRutC`Ir*yN6&Q!QzhoV|AtVhv>MEpUZ0I z?i&9Wc>G?d0eqW3Uo-FVdxgh8u6fNO-5>jjyF;=HU)J)E>RL+RU6BGf8V*h?Ob&=d zV&COm^^G@)eRvEqsI6`zo7f8=9tWHv(5?MiB&vnj6L>I>^s&>_n8_Za@+1dbRI#FR zWPYfgew$C7mf83D%k_mTp2C1MWGuUrn(S%7kNJo7RUOCBe4bz?uWCwRl8QeoSq?Q<{Ad1D}Jo^g-skHOhX3wsn_s#21(n zzM63w4=y_EZ&N~kSvYMbYqxJYpt$;&Z$j}2_fa+VL)*^*@u<;lN{DJR#s$zJj*_2Pm-SJr`yM@8b*xr|F&1vhtXsN^Yvf&T(?mDr<&=T zTvG41b#zD_v7;TYOVa&(xO1w_&_jcDiz7Ux;7U7EMPQS0WSv>pD{beWuA3cA3Xa>LD1IqnujBC?;17Ve0ONq<689)bz_0l$ zH+C8k@u)bqzP$4WzM&^Pn>0}o1}sKlsuSWJ5;-W5*HE61nci`%x;y=yoYK3$cEV~L zCa}{(bvjA4Fh5D*`D)B}o*)d3SwiC#vpK!&Qxk!q?|f`@eN4*26;V$M`GPWglILvf zS}h9n{DB*lgJG3Y#D)Gn>3P`f|uoil28 z@+pf|C!DfNO=cgUcbK2+uP;7)vv*LZZj(a+FYY&#o`l9V-psy^(bxmACzN^+X8$1Yxb4a26ryj@ z>BtV<9>2z1tMX--*xyO=asJ}auvn)^7Z1~+Eh*|Qfdf327)+Hb zS$9G71%A(PxAX>oZFpnm6bOTjIW`}Ytj1FK!&_=*e}+CpCHoj4;_oB0uylIKNTcak zIv~D&mVrkbfoJZjmx2`-yVMixC2*ert~v*DiCm8!k!fbq`77?(`q08TaB1tS6V2$h zP!B~xylgWXNN*3?#D3Wyjp$Z-%cCRDsNSDbmpk34TWJw>dNTRql}-Xwyj<}MfpdG6 z^&HI*8K4V65#PDJ8MSfyw_2>2*23b|QMV|eC=sFzqf@s8d`A+h;m}B*^cFupvNHi!37tR?vV#tN7 z9$0mK4_4DK2KWH`02j`CupAyNH;k+{j12BRb<0r_NJ`uk9u!fxxa}xR>>Ge}fK*GU zquD>?`}cHpU&pDnFc@$NjY@zRQ7deWm5kjk_1nRIVTtjuWspf_Ni%g^=5OzP@Osk1E_ylDV%o_xiSBF*$>k`(4W#@{rwgGW>e{vAw-pNn(5J=41)9?<5E>Q6 z0@3YpxAWMS4oPcx{l3xKlE8jnXi{tPYoRDpCYpTH(W$1O7Le5l%OPF5)p+1{@2kpS z;uclRpWatKTY^se2qfVI@uf(7NDyzH;$=u&(8MK3oUr0#(sTOhPH_Oo9)|6vk6NNk ziP|7iP{g>18?j|#SxcRz+j@dST3}k0H?Tgqj7*8FC;Y@BNzw&V(FIf81yl0{Q|kp& zC$%q{hTk>~Uoh2QF{er9D<*=^1!VENZn{!(*_0_QyIf+CDjptt-1~_4a}za%zy1$2 CvDx7O delta 4888 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 diff --git a/recruitment/__pycache__/models.cpython-312.pyc b/recruitment/__pycache__/models.cpython-312.pyc index 053cd403fdd426bc6944d87001cd647005b99e46..fa577345e98644ac5a4d29ffbec3c1e1fbc58621 100644 GIT binary patch delta 13229 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 delta 11425 zcmai433yZ2vDTGsS>A0d+wy+B3V|_Rz?jV}1_y{SE{G&Jiy~XsSVWf0xiVmpuzgMf zqy)&cO%s-orb)w+rBTwRUz+B zsR=&5IUoM1(VSDv{2b)x#`Eh+n4gFIDN4!dBvNQF^p!F78ZFFF<}_oOC&J zi;!!L<5n=Y7`Y{J+)Cz_BDXA#D>JtoxfOBTD&|%qSJt^Z*|=(ES0TGPPPm4-HOQ@v z{ZOomH+yw(nLiWxO>s)5 zF}E4HEpgoGW3BdC@B`zE(!k-og3yVifRvtxQxrsUp(15|YPJ3f-*;GHTgoNL2BW41 zq#y1mhUZN6*B4WJ36WAHn%UK_283%MAgYMRy=$l;d9@O7iJACVhX2%5B;$s2`9=H8 zx==GRdh8h@P9H2t?WiDrf-X@; zox#2olUdj=F$OLZ%Qu2FA5bRs*Lwazu__PFFF z!qx9_*^MkL*1++c=}n|aOd+zCM2nQhjg1X*ZCg`AQ&W>XL#}P-r|<|OA1>z1ZF59B zQTLNZT>;zFf{ZSE*q)3L;Td*`G3PDHn3w@Wxd)^T@LBHFxzRZYR<$0!me-lZrqH`x zLgOCH8_8h1bT*VtX)&##aUI~8A_|J=(Mlv<=wGLJb6K8SY`XZh`SUZPx`hpn<d?;$ z&q$IABi5RRQEdL;EBuKReA1Gd+T8XmL0pl{44;3imOQ4oglLBstc#^>_Y{{%w?k?1 z{8CC}aR5m$XO+Ld*RKX}I*qDpi}EYjT>L5yw7BFc$+C^~q>Q*kKvj+SER#8=vU$>Z zSW>nX?Oj|_3~!eG3hNaLCc9k$MNBaLsq%X1Pw-AT%`LCuf6LlX4x@RH{!7zLYQPm3 zRoPrI4keZKQX4F(EXX6vCMw!kDNCQg-pZaSMxR*NKN92AY zIY_h&x1tUR&q%=I_i5RiM_pdepl85Eud0@*y1bN-!sXkjXy$&!rwn=ms%Bolw!6!t zc-?|lpLi5D)Z63-NS)O+GU5&QcY1tSBSr^Uml%b+>SgI+I8(n_YJm!yReA*G*oKR4 zrEWQ^UA{4gpQx_46`r%LbZ}yf(GWX`@WhYN(}P4#BGIy(&H=AWRRqIJT205n5~NGfAQCQ=dx8{4CRyV$my7I~;0wcqd6{86y~LCoaN`iYf|`6HFn_ zOe_Kxd=u-D^w`tm-An8wA{9g`k!VSq{QZKepP=ferN@*eCjJ{FMC1#}0ME==s8``P z3~=|8)|5*ogW*p2jbje1ZoCy<=(U=ZbR}t1A$;GQUzKJwD4Fi`)3gfkcP8UBWi|f# zvals-QyEKTvQ$=7D*H6$DM{tTr1EvCoOmgiagB^yB@U4rW#>hn`liG>SJ88(J3rEP zCN@MqOHE}%EG$)U8L0x6Y9J|iZ)S3Nrn@LAWsRC!#8OSH3jqd>SQ3>gjY?5V5<(Gj zkSqqaK&y>W>FQ`G z5SXy^KX1)XGNUBgWvg*lxy#)MWN;3((LQyjG1wd!ge}--G0E0M1U-^egZinBNB& zvYbZL)Ew0`6PI9dN(*Ycna0_P$|Xc(IrhqWONn-kU0qO`i(#|@|T zfEfB_;rraU_u2S9FYdi?QXwEMX9iCj!jqeJ}SCxvXU?7Sj!TWn8FJF8x>?gOM6(s zhiplxz1Dgb8+z=f#A4kFAGVj&Bq+;TqHkNifMaY#5g%jM9B7zp+sRnuFZimZ54e18 z4{hSAmV~eXF%M0$+es4 zw3OZ=s9(X+btAT4Vr}lN%QimdFvtBu3*+$MI9Yh z?m=XP$i$!uMh~fy!7zmX)B=7usQJN9jbwyQX700=n%Tbtv>;$I;HOlN!QC z818NKd^eGUL>LSaGLU6?myU-R*T$Jfu=X(QT12K1V0~%HvFbah@0~>6LZYScq$gT> z=h8aqd+^xO7VP%k((xHN=sP^fl;eL|8m8|E;zwF3F0Xe&M^ah|hdZs(DLB>HguTC9 z+g{GSC6R}{CrOV%)3U;%C$LG)#NN9M=W_B7?%22Eb#u9(v5R5LviXgy!Khi(fg!~` z>Q&r`J`rzk@hDqWAt&mEcbD0vryy;)9G-RO^5DW@)Q&E!A>qAbXBj?enL)pQ*g32y zbO^vCCJ$@o$S`UY_JGu&uZPQVMJv9vBNhK?1&z>MX$pO!> zqM4L!9yOpw!Z!|Yu9%HSAM?uD(vP8I<*Az|qk7Usuv5!$DBA*^`axElC-(b9J|seQ zOT0*=od|(b(Mp7(D$Wqeq{(K%>Qxoe%ivvQHCc%9JnUa}RVCF2Ek&hzujPhuy)WQI z1{LlWxUj0s+JNF(Zq(J0#%G}V>Rmg3Nec4S(f(miAb=6+A9JEE-@q6zP0c(a{8(%Q zWBNki;1|;HjPogzL?sbE0MydcR3gnpUM1sSLlO`5sbUBs1{6_0laipid$sW+Yv@4t z(j?R#c|Z9I8ko zZ!mmN;c~SO8{U=R?X^{rV=yj{o#EvXpbqgTNO~vl1g#F?^7t@8SJNTW*Db)yEDUB<wratbSRMTpVh{pCi z8y!`uglwibu3x$#aZ<9pPzkjM&n|E4MvN5cU*PMd82xmxz1Ukp0~%J7Jn zfY-_7ILxIx5^i+XOA238(uLGdocYo)yy>i6;v=n9L=u+RF0=~*s>wpAH(B*=AH zChqA?t`-^33_48Fx47;5w!fVtzmX%ql~et?xf&JVwgN|7FWJI-ooSG+U{rBCPe?O1 zHi-rJsG=JEE^2@OB55|f+&{N)oMs>=P6LVuTBKRfJ)q;<9(!Rz5^1SUr`tc^bjDqA z#I};R$hn+X3}jxW*C&a@3IW%E=aHwSc~mD}7kltJFjf=pAd3zlDM^gfc4{F~2$}95 z>Upyrq)o-4-??#b1h-}Xpd1)dWXxkcpxg@c2JM&_?!j+dITZj0SV7T> zq(bSTxs(bulnT@1Qh|Wc+KrA5fuo%?YUW5rPKIzae=f;+lp0t~HY$<4SPg&JI33YJ z?$Dm5Z_xZQNjNdDtk@FFiFF?EDlT6y{B$T1q$vqO5_gj>uHEc-b{+5a_fbPEK(wj_ z56ltC!ibCr1@FE+KE)ju6|x{P9*2=<5=7g<=Q*GUOLn@=m~Cz3X@Gqt3CY=6AdL6|amX zfaA*9E^Z~6ZX6((M@O|t(76#eTP`33T==To5zOuNx(1XXzZdVMWwJ-C!^W;)`L#m| zCQF=V*#o~G&cKX$dw5UA8q&Z;+!1p7Dy4368=mbjq%vPn;sm14YLB>Lv3V5x-Gdn> zzDaghliKFcYyJ#l#)HIoh{$*0KQ}i^*FllkFCBsJh@nCb(xk)yS+z*_!ff?VI>dze z0a$)7YQU|97QWzk(^}M0yyUt`xfM%HoRUHOdDaR`U3qYEKi7Zba}lHRgN4DTgQ8&7&U7Io@IPTs%thDrc z%&TE1gHu(d+ivt?5ydCAL0j<^k7@P9T>&?Yl}hVi+gO=25Z-P)ORpIB=W)n4Fz(@F z=Q&Hw>-n`*TBcHIX^JZ?uULvf1aDtOr6rhMw_!%z@QgaQT(@Fg-D)%`7Sqfakah*| z1QHN~yjdsa$rvozUMii18@DgGjuNiNZn<1cgC@Y;@o z464cDV4%OfJ;n4M{Q{}qWL)vs|4SU_0{K4+d*LQuWFx=NjPv_z{$lv)PPLTtl@A+} z9of69#Q2F3yt`)LileVjpx^F*;g#KV_Pnrr(3X!PSh`~31&MuV=7q3*k1R=WbdL@Dq4lAE-?Lsaog&$9LHl@b z4Z{LSOTx^+lDZ!oG-*o|4Umqz;PiN_lmqXM+uLHp=@ny(%R8!wGo+5!;SuWaR-z@) zar;au6@0gkgzH5jWJuhNIO@C`v5$F~zD!zi$s5GK5TPT4?xz?s=q4VU_!>R&vG6QC zRgqbgRC)S!#xICTL^Fc#j^F8N^$Sib|DCOpR0I$0ZIKo1fJ->%eTDi6&3y52=CK9v)xPw?Z&R=MAd`_}P`STSs)t4U zYr?+Dz4AKbuSW^%kV_`vrjgNp{H7*eBCWJIwT$pYwt50XS6*=E$SNWQaDM-=Zuhy6 zjmS%8vPrw&V;6eO{MHe zuAMQ-=g5MK2H1YEqkzXr6oOX|-YMMx*BqLi%Uf=&>$Py?(Bilc&*72&=TKKctU$-a zyP@lFkNtNz9vVO98;}us;VlJTPR7P%SfCF>*nTdpm%oGUvvns#Hpu`YEU|~WRO2z; z2J7!>UrTP(Qgu0%v0%^1)WjgSlF!&uu2z0}ts)XDjhtbBLfu>8-Fxafxq)~+c59+G z#(BKavR+=h87ha%8KAps9freIU^BJQD6=2{^(M+CaS%?xtQy`udBg-OI4Ousd+4uV z)GtZ~^^20iZ#5*F{);C6M_6%x=lXqa=Zo0t(9Fwy?h!n$ z22O@yAt#>=P8_MlBjPWP%*>R?*z-g#8SXhc&1jUs*JXu^OUvNqqibe{p%s0g=GbZ` zI>6vfz%1fSUhe;Kv=pyIKR?=r^||@jMjYh6W78HSxQfG{kP;Jpqc3RujB7XrUmdeY z>J1)2LRTHHmhv*lo#Y|i&zB?!K2SDsSNhHaP0|za)&t65HJaLEmlLxnc4Xii0@n5- z&5B(dyC~$jbGET}X=u%?g#D_Sh7m*i-H45jpQw^^$t21?ElUx?FYwM(Rp}`95qbDy z3En-?Fe8?HT;cf^BVqa%Nu0=Sq4o#w4I{aWd}nasJ9kM-hse$qNF2e8C48O8Ut7cw zcKP62$j6I!ysg4m$-RnDF<)CtQ95B<4|Zc3zD{BlyYm=5ngoIh_9*_WgDkhzNo|I~n1agVq_7FLmk z6t%d$2fxG{UWSH8rZ#YcUKu8Vy2Q!=yB@JPTS@0EB78D?8Wn4)Ta|v*gZG3StQ4Og zZ&n21B)aAs#cR(o(MCODu}UzCBS7Ri`1Fxi^#mQlzoICH_rCYTR1fvNWPsz3Iy-m? z8O3H~ao*_HOOuukstV>U#pB^EbnzDP;aQk}vTg%S`7(cV5zSyNjr#C;M!(#q!4LpN zCXiq|euOp%BCo@bPA<}mT)hzvZ?%SsPQ7XDqr-t+;=h#&hA#u@8yH^(2C1a*C$V7W zwSI96MjhYARKZiWp;Amqo(5kas#uwLy9pPb&c_z#aeZRuJ7nf_5}aRZg)@&`Tly9b zECNI(xd$p9uQ2{O2|6B^!$_j?$_tv8al$3dOQiNJkfj2RSH-2wlVmvsXsG=jgYyyp(UG=9|D5s+)Q< z3TbHre!MDF@a|np>x?{#)ufcL2nKd4L1*}F=-^^nbo!T&%X=N0gC*-CpOd1aN3zoj z4?W!y4oAs92nV~KtLh^10Ee0pA77Bx(NnYd0xwoePQ7mdSzH&N>7Z(8F}(n!o{5H1us0FC7V-4`q+*deA3Jd whW+%}u0y1Eqg|-Upti%|XYKI(v$Z*0Ns{G|<FhWf$_ZXAwji z&t;Z!XD_9e(wTHBCyAMKq*0N;5G&XTwJ1rs%+f3-j$D{>g0IR>?ei7CF}4`;1D%z2 zkgW29el}>EelAnlnwAzM==#iLW?2#c?e!9W4(q`<+tRxp%x5K~5rMd(EYD;X;Bbqn zSxL;Vph-#fiX1s&|5r0m8{7Y!ou|D@7;fq4HQ0VpT+6Jdl(e{-k=B%Um{uYPI)I%E zf%m!UQl%HgeF*wNnv0jr!=Dtqv+LlHv$HaFl77q-ZF6@wjH-}U6*>s(Os{E`!7=A? zAofX##a6s6+^;m)T8*tOl z#~CcLV^P~ds}Ua2!XxVBiq2d%t1wrM8r0m485IGoBCtE4GhvgJ!B4ycI{eN%+OW!l z9XvZR!xz?kVYMrvGoz*#a{L7jxFfSq8XGyMDRk7i-Hg09gKSzHNp1^ zt_*?C1Qr|%Ho8>?4yS|1*|)J@L!sPgN@z_9bte&Gxdk0>ym zPHPON{=md37ixFLg+xh=w=wRyc$oRY#c{aF6otFEcKi<;9yAm-bf(9gh636hgjnYm zi2Dp^bXQqtVQS7TgmL8xsbufB8jgC+QD1;7>ozY_m{bV)#%{u>@6hTy4wrN$VP;|d zBR2=}7dM*XZ;Uk_o;2A2l*j(oCUNMZ@n9+S(%fJ0OQqhSpOA-Xu?*2!`cI3+mZQyX z8u#k~lODdPmjr#_V-N4{C&7Ef=gmT^(UQbiWfYn#>b5Ksuo{`i`}4- zc(EdF_7YVeQO&9I%kUUv>H<0j^nmISTEXfpZT1uOAX0BT(Pvtxv2}$qor#!3go_iW bW)7W1Tx*G|<5``_nZuaAaYC7ce+d5ofSl2! delta 1022 zcmXYwO-vI(6vubBgHmWQu_FE4mhA`7ASi7mip5e|q@YNEA{HV+VIf4rm#CmZ(8Tnl zn7I%ydL%K?)m}JqGDa^u$;OQbHG1?whQu2loDVmdxB^6*^WPH9Ri;w!J(oHbKo^Q}R^*0%8tsxMJ{xyA}R)dn|no z=~Aa>R)X(+j>>bS%VLtE9qPWgyMu;licX3QMV6uq*2@EDrb#H0Z%HT@1Z)vS@tfdf zuj8BG$3PX2NMAvD(Yv{3*2Gawe5cI-7qCTzC0X%Mb-zL=vliv8YSYz#Tn(Dd07+b_ zLM(ek725nxFLNCwF5T+gnlj}kBsXbe21sLv3R8Y+8}oZwnaxR?xi_=su?RXA+3qty z8+I{8W(`hkFPqI-)ST5XUNgWr_N(v>>+s3%@iAY7`A%wKv!x%k^y^n{8sHYLQ=t?H zlAR)f5MeLld?0j))wIC=fXg;-fCU_53vs$|m@On!_#;5ic)(awtC09?ZG>=wvB>zA z@k=f3e!yZyp`IM$yy7GAQ^ia8T5%J8Q0fTx6q(Q-q-%wQ4)lX|9LfKhyxG}sN&4Zkz~4f^>4oH6lp=?mXS#Ij)rc+wNjO9@*uaB)7;6BcAwTG*5ZOS}7 zh)xgcg(U;r#=VjXwb1`P2jG6FdUB8#4Do{c?XVe5p=fINp#kzZ&&6Rbw(aE2WC0}$ z`UKnS3Rg$C+M;F6_y~%R=;Q13s2vi%$_)iL8}^lt@?;)93m=ax@MMvfrgyVuW*lY4 zb@iSBR`3#6@4?SuxqO8ut8hOoTkrGafdrkAu=OF&)+E>!31434S=z#;H>3}bn!~GT qc$JJVEnR2hyCLCD3!8Bdbrt>eZbXqQs@Vhf`|$vR4ai-KKtAJca!fM%;4OEUIhSl!2@1sWxC!WF1uH>ZpT9g zd>$}I6_{HeTJ$E-^E5#U-+E8bJh)$nR~5X10TzTYiW@G1cn`o!T#N97*CCAeXy{dv zC-=kfSM*I{`l^ywE~tfWN2hQx&|z-W{$;1NX7C8DDARLqvCveV#*?uW{18puEfq~Xndat_Q5JrR zF%@LfnFLoc)OQrAedj9rENV}rzM96jn#KdtILlDmPo&;Gs6^Lt6kXi(7ih9ZJfY~j zX1Uuhb^D8n67|yBa9K^|=Owji^K?mlV%PF~(IpQAq=7)mGMqQ;=q#HqN%zd%mB+gN zvdt}e&gLZBVE)pcig0*jyH~P%3)hRw-`sw1yJR2E2RA}Hbe~N3OLTwH`e;TT3Q0qu z5>t885dPV$Dkz-_ivH0(0=x{YWvffJ_DR;h!tA3Xxso*~T1NLsaC8j(Ns^RdPeV9e z&7!-?)^|g1hs0wii$U2xBKb$elfj>~Vt7UlUy;IB#H%rJeyJ2*7N=H3V|H74tK4ZX z^nB&H=PAyL7p|5(uS>d!sEojC=se*sD7ZZp9b}_06XzD$hg~Cj&{I9vdqj;xBThv# kxR_!x3HBUpLnn=YM(MAG(cqVDe{`vU>1l@(Tmx15-_wPpdH?_b delta 89 zcmex8pRr*QBj0IWUM>b8NcDJ^5$`#XPlC~6qdF5Kqs(M2Ml+U5PEFa(S&YkE*^ABt p6=`a2X7m$hoGj}v&c)8izyL%H#p@^A`LE^rEW^eqUX%b7008ss6x{#- diff --git a/recruitment/__pycache__/views.cpython-312.pyc b/recruitment/__pycache__/views.cpython-312.pyc index f32524de0730b42435603379db85e07b78504407..41776d0ff72c76baefeb4a065ff829cc4c4965bb 100644 GIT binary patch delta 18276 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 fa91qd#}c@$Mmxu8uPldXzopL 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 F{|7DcYB&G@ diff --git a/recruitment/forms.py b/recruitment/forms.py index 9c3c193..30f1ca9 100644 --- a/recruitment/forms.py +++ b/recruitment/forms.py @@ -5,9 +5,11 @@ from django.forms.formsets import formset_factory from django.utils.translation import gettext_lazy as _ from crispy_forms.helper import FormHelper from crispy_forms.layout import Layout, Submit, Row, Column, Field, Div +from django.contrib.auth.models import User from .models import ( ZoomMeeting, Candidate,TrainingMaterial,JobPosting, - FormTemplate,InterviewSchedule,BreakTime,JobPostingImage + FormTemplate,InterviewSchedule,BreakTime,JobPostingImage, + Profile ) # from django_summernote.widgets import SummernoteWidget from django_ckeditor_5.widgets import CKEditor5Widget @@ -505,4 +507,16 @@ class ScheduleInterviewForCandiateForm(forms.ModelForm): 'end_time': forms.TimeInput(attrs={'type': 'time', 'class': 'form-control'}), 'interview_duration': forms.NumberInput(attrs={'class': 'form-control'}), 'buffer_time': forms.NumberInput(attrs={'class': 'form-control'}), - } \ No newline at end of file + } + +class ProfileImageUploadForm(forms.ModelForm): + class Meta: + model=Profile + fields=['profile_image'] + + + +# class UserEditForms(forms.ModelForm): +# class Meta: +# model = User +# fields = ['first_name', 'last_name'] \ No newline at end of file diff --git a/recruitment/models.py b/recruitment/models.py index be2c445..d204f3e 100644 --- a/recruitment/models.py +++ b/recruitment/models.py @@ -10,6 +10,7 @@ from django_countries.fields import CountryField from django.urls import reverse # from ckeditor.fields import RichTextField from django_ckeditor_5.fields import CKEditor5Field +from django.utils.html import strip_tags @@ -246,6 +247,43 @@ class JobPosting(Base): "form_wizard", kwargs={"slug": self.form_template.slug} ) self.save() + + def _check_content(self, field_value): + """Helper to check if a field contains meaningful content.""" + if not field_value: + return False + + # 1. Replace the common HTML non-breaking space entity with a standard space. + content = field_value.replace(' ', ' ') + + # 2. Remove all HTML tags (leaving only text and remaining spaces). + stripped = strip_tags(content) + + # 3. Use .strip() to remove ALL leading/trailing whitespace, including the ones from step 1. + final_content = stripped.strip() + + # Return True if any content remains after stripping tags and spaces. + return bool(final_content) + + + @property + def has_description_content(self): + """Returns True if the description field has meaningful content.""" + return self._check_content(self.description) + + @property + def has_qualifications_content(self): + """Returns True if the qualifications field has meaningful content.""" + return self._check_content(self.qualifications) + + # Add similar properties for benefits and application_instructions + @property + def has_benefits_content(self): + return self._check_content(self.benefits) + + @property + def has_application_instructions_content(self): + return self._check_content(self.application_instructions) class JobPostingImage(models.Model): diff --git a/recruitment/urls.py b/recruitment/urls.py index 4aefef5..4bc00ac 100644 --- a/recruitment/urls.py +++ b/recruitment/urls.py @@ -107,5 +107,7 @@ urlpatterns = [ # users urls - path('user/',views.user_detail,name='user_detail') + path('user/',views.user_detail,name='user_detail'), + path('user/user_profile_image_update/',views.user_profile_image_update,name='user_profile_image_update'), + ] diff --git a/recruitment/views.py b/recruitment/views.py index 58b4be2..68d11b1 100644 --- a/recruitment/views.py +++ b/recruitment/views.py @@ -19,7 +19,9 @@ from .forms import ( FormTemplateForm, InterviewScheduleForm,JobPostingStatusForm, BreakTimeFormSet, - JobPostingImageForm + JobPostingImageForm, + ProfileImageUploadForm, + ) from rest_framework import viewsets from django.contrib import messages @@ -51,7 +53,8 @@ from .models import ( ZoomMeeting, Candidate, JobPosting, - ScheduledInterview + ScheduledInterview, + JobPostingImage ) import logging from datastar_py.django import ( @@ -316,7 +319,7 @@ def job_detail(request, slug): status_form = JobPostingStatusForm(instance=job) - image_upload_form=JobPostingImageForm(instance=job) + image_upload_form=JobPostingImageForm(instance=job.post_images) @@ -334,6 +337,7 @@ def job_detail(request, slug): return redirect('job_detail', slug=slug) else: + messages.error(request, "Failed to update status due to validation errors.") @@ -355,19 +359,32 @@ def job_detail(request, slug): def job_image_upload(request, slug): #only for handling the post request job=get_object_or_404(JobPosting,slug=slug) - if request.method=='POST': - image_upload_form=JobPostingImageForm(request.POST,request.FILES) + try: + instance = JobPostingImage.objects.get(job=job) + except JobPostingImage.DoesNotExist: + # If it doesn't exist, create a new instance placeholder + instance = None + + if request.method == 'POST': + # Pass the existing instance to the form if it exists + image_upload_form = JobPostingImageForm(request.POST, request.FILES, instance=instance) + if image_upload_form.is_valid(): - image_upload_form = image_upload_form.save(commit=False) - - image_upload_form.job = job - image_upload_form.save() - messages.success(request, f"Image uploaded successfully for {job.title}.") - return redirect('job_detail', slug=job.slug) + + # If creating a new one (instance is None), set the job link manually + if instance is None: + image_instance = image_upload_form.save(commit=False) + image_instance.job = job + image_instance.save() + messages.success(request, f"Image uploaded successfully for {job.title}.") + else: + # If updating, the form will update the instance passed to it + image_upload_form.save() + messages.success(request, f"Image updated successfully for {job.title}.") + else: - + messages.error(request, "Image upload failed: Please ensure a valid image file was selected.") - return redirect('job_detail', slug=job.slug) return redirect('job_detail', slug=job.slug) @@ -387,7 +404,7 @@ def kaauh_career(request): # job detail facing the candidate: def job_detail_candidate(request, slug): job = get_object_or_404(JobPosting, slug=slug) - return render(request, "jobs/job_detail_candidate.html", {"job": job}) + return render(request, "forms/job_detail_candidate.html", {"job": job}) def post_to_linkedin(request, slug): @@ -2337,6 +2354,43 @@ def schedule_meeting_for_candidate(request, slug, candidate_pk): -def user_detail(requests,pk): - user=get_object_or_404(User,pk=pk) - return render(requests,'user/profile.html') +def user_profile_image_update(request, pk): + user = get_object_or_404(User, pk=pk) + + if request.method == 'POST': + profile_form = ProfileImageUploadForm(request.POST, request.FILES, instance=user.profile) + if profile_form.is_valid(): + profile_form.save() + messages.success(request, 'Image uploaded successfully') + return redirect('user_detail', pk=user.pk) + else: + messages.error(request, 'An error occurred while uploading the image') + else: + profile_form = ProfileImageUploadForm(instance=user.profile) + + context = { + 'profile_form': profile_form, + 'user': user, + } + return render(request, 'user/profile.html', context) + + + +def user_detail(request, pk): + user = get_object_or_404(User, pk=pk) + profile_form = ProfileImageUploadForm(instance=user.profile) + if request.method == 'POST': + first_name=request.POST.get('first_name') + last_name=request.POST.get('last_name') + if first_name: + user.first_name=first_name + if last_name: + user.last_name=last_name + user.save() + context = { + + 'user': user, + 'profile_form':profile_form + + } + return render(request, 'user/profile.html', context) diff --git a/static/css/style.css b/static/css/style.css deleted file mode 100644 index 24bdb3f..0000000 --- a/static/css/style.css +++ /dev/null @@ -1,947 +0,0 @@ - -/* Custom CSS for NorahUniversity ATS */ -/* Keep only essential custom styles that Bootstrap doesn't handle */ - -/* Primary Brand Color */ -:root { - --primary-color: #1b8354; - --primary-hover: #155f3e; -} - -/* Header and Navigation */ -.header { - background-color: white !important; - box-shadow: 0 2px 4px rgba(0,0,0,0.1) !important; - border-bottom: 1px solid #e0e0e0 !important; -} - -.navbar { - background-color: white !important; - border-bottom: 1px solid #e0e0e0 !important; -} - -.nav-link.active { - background-color: var(--primary-color) !important; - color: white !important; -} - -.nav-link:hover { - background-color: var(--primary-color) !important; - color: white !important; -} - -.logo { - font-size: 1.5rem; - font-weight: 700; - color: var(--primary-color) !important; -} - -/* Buttons - Override Bootstrap primary color */ -.btn-primary { - background-color: var(--primary-color) !important; - border-color: var(--primary-color) !important; -} - -.btn-primary:hover { - background-color: var(--primary-hover) !important; - border-color: var(--primary-hover) !important; -} - -.btn-outline-primary { - border-color: var(--primary-color) !important; - color: var(--primary-color) !important; -} - -.btn-outline-primary:hover { - background-color: var(--primary-color) !important; - border-color: var(--primary-color) !important; - color: white !important; -} - -/* Cards */ -.card { - border: 1px solid #e0e0e0 !important; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05) !important; -} - -.card-header { - border-bottom: 1px solid #e0e0e0 !important; - background-color: white !important; -} - -/* Table Improvements */ -.table-hover tbody tr:hover { - background-color: rgba(27, 131, 84, 0.05) !important; -} - -/* Custom Badge Colors */ -.badge.bg-success { - background-color: #28a745 !important; -} - -.badge.bg-warning { - background-color: #ffc107 !important; -} - -/* Form Improvements */ -.form-control:focus { - border-color: var(--primary-color) !important; - box-shadow: 0 0 0 0.2rem rgba(27, 131, 84, 0.25) !important; -} - -/* Responsive adjustments */ -@media (max-width: 768px) { - .nav-list { - flex-direction: column; - } - - .nav-item { - margin: 0; - } -} - -/* Utility classes */ -.text-primary-custom { - color: var(--primary-color) !important; -} - -.bg-primary-custom { - background-color: var(--primary-color) !important; -} - -.border-primary-custom { - border-color: var(--primary-color) !important; -} - -/* Loading states */ -.loading { - opacity: 0.6; - pointer-events: none; -} - -/* Icon Styling */ -.heroicon { - width: 1rem; - height: 1rem; - margin-right: 0.5rem; - vertical-align: middle; - flex-shrink: 0; -} - -.size-6 { - width: 1.5rem !important; - height: 1.5rem !important; -} - -/* Responsive icon sizing */ -.icon-sm { - width: 0.875rem !important; - height: 0.875rem !important; - margin-right: 0.375rem !important; -} - -.icon-md { - width: 1.125rem !important; - height: 1.125rem !important; - margin-right: 0.625rem !important; -} - -.icon-lg { - width: 1.5rem !important; - height: 1.5rem !important; - margin-right: 0.75rem !important; -} - -.icon-xl { - width: 2rem !important; - height: 2rem !important; - margin-right: 1rem !important; -} - -/* Context-specific icon adjustments */ -.btn-sm .heroicon, -.btn-sm .size-6, -.btn-sm .icon-md { - width: 0.875rem !important; - height: 0.875rem !important; - margin-right: 0.375rem !important; -} - -.nav-link .heroicon, -.nav-link .size-6 { - width: 1.25rem !important; - height: 1.25rem !important; - margin-right: 0.5rem !important; -} - -.card-header .heroicon, -.card-header .size-6 { - width: 1.375rem !important; - height: 1.375rem !important; - margin-right: 0.625rem !important; -} - -/* Print styles */ -@media print { - .navbar, - .header, - .btn, - .pagination { - display: none !important; - } - - .card { - box-shadow: none !important; - border: 1px solid #ccc !important; - } -} - -/* Responsive adjustments for icons */ -@media (max-width: 768px) { - .nav-link .heroicon, - .nav-link .size-6 { - width: 1rem !important; - height: 1rem !important; - margin-right: 0.375rem !important; - } - - .card-header .heroicon, - .card-header .size-6 { - width: 1.125rem !important; - height: 1.125rem !important; - margin-right: 0.5rem !important; - } -} - -/* Header and Search Enhancements */ -.card-header { - background-color: white !important; - border-bottom: 1px solid #e0e0e0 !important; - padding: 1.25rem 1.5rem !important; -} - -.card-header h1, -.card-header h2, -.card-header h3 { - margin-bottom: 0 !important; - font-weight: 600 !important; -} - -.card-header h1.h3, -.card-header h2.h3, -.card-header h3.h3 { - font-size: 1.25rem !important; -} - -/* Search Form Enhancements */ -.search-form-container { - display: flex; - align-items: center; - gap: 0.75rem; - flex-wrap: wrap; -} - -.input-group { - flex: 1; - min-width: 250px; -} - -.input-group-text { - background-color: #f8f9fa !important; - border: 1px solid #ced4da !important; - /* border-right: none !important; */ - color: #495057 !important; - transition: all 0.2s ease !important; -} - -.input-group-text:hover { - background-color: #e9ecef !important; -} - -.input-group-text .heroicon { - width: 1rem !important; - height: 1rem !important; - margin-right: 0 !important; -} - - -.form-control:focus { - border-color: var(--primary-color) !important; - box-shadow: 0 0 0 0.2rem rgba(27, 131, 84, 0.15) !important; -} - -.form-control:focus + .input-group-text { - border-color: var(--primary-color) !important; - background-color: rgba(27, 131, 84, 0.05) !important; -} - -/* Button Group Enhancements */ -.d-flex.gap-2 .btn { - white-space: nowrap !important; - transition: all 0.2s ease !important; -} - -.d-flex.gap-2 .btn:hover { - transform: translateY(-1px) !important; -} - -.d-flex.gap-2 .btn svg { - margin-right: 0.375rem !important; -} - -/* Responsive Header Adjustments */ -@media (max-width: 768px) { - .card-header { - padding: 1rem 1.25rem !important; - } - - .card-header h1.h3, - .card-header h2.h3, - .card-header h3.h3 { - font-size: 1.125rem !important; - } - - .input-group { - min-width: 200px !important; - max-width: 100% !important; - } - - .d-flex.gap-2 { - flex-wrap: wrap !important; - gap: 0.5rem !important; - } - - .d-flex.gap-2 .btn { - flex: 1 !important; - min-width: 120px !important; - } -} - -@media (max-width: 576px) { - .card-header { - padding: 0.875rem 1rem !important; - } - - .input-group { - min-width: 100% !important; - } - - .d-flex.gap-2 .btn { - font-size: 0.875rem !important; - padding: 0.375rem 0.75rem !important; - } -} - -/* Search Input Placeholder */ -.form-control::placeholder { - color: #6c757d !important; - opacity: 0.7 !important; -} - -/* Enhanced Focus States */ -.form-control:focus::placeholder { - opacity: 1 !important; -} - -/* Detail Page Enhancements */ -.detail-page-header { - background: linear-gradient(135deg, var(--primary-color) 0%, rgba(27, 131, 84, 0.1) 100%); - border-bottom: 3px solid var(--primary-color) !important; -} - -.detail-page-header h1 { - color: var(--primary-color) !important; -} - -/* Information Cards Enhancement */ -.info-card { - background: #f8f9fa; - border-left: 4px solid var(--primary-color); - border-radius: 0.375rem; - padding: 1rem; - margin-bottom: 1rem; - transition: all 0.3s ease; -} - -.info-card:hover { - background: #e9ecef; - transform: translateY(-2px); - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); -} - -.info-card .info-label { - font-size: 0.875rem; - color: #6c757d; - text-transform: uppercase; - letter-spacing: 0.5px; - font-weight: 600; - margin-bottom: 0.25rem; -} - -.info-card .info-value { - font-size: 1rem; - color: #212529; - font-weight: 500; -} - -/* Action Cards Enhancement */ -.action-card { - text-align: center; - padding: 2rem; - background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); - border-radius: 0.75rem; - transition: all 0.3s ease; -} - -.action-card:hover { - transform: translateY(-3px); - box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1); -} - -/* Resume File Display */ -.resume-file { - background: #f8f9fa; - border: 1px solid #dee2e6; - border-radius: 0.5rem; - padding: 1rem; - transition: all 0.2s ease; -} - -.resume-file:hover { - background: #e9ecef; - border-color: var(--primary-color); -} - -.resume-file .file-name { - font-weight: 600; - color: #495057; - margin-bottom: 0.25rem; -} - -.resume-file .file-info { - font-size: 0.875rem; - color: #6c757d; -} - -/* Parsed Data Grid Enhancement */ -.parsed-data-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 1rem; - margin-top: 1rem; -} - -.parsed-data-item { - background: white; - border: 1px solid #e0e0e0; - border-radius: 0.5rem; - padding: 1rem; - transition: all 0.2s ease; -} - -.parsed-data-item:hover { - border-color: var(--primary-color); - box-shadow: 0 2px 8px rgba(27, 131, 84, 0.1); -} - -.parsed-data-item .data-key { - font-size: 0.75rem; - text-transform: uppercase; - color: var(--primary-color); - font-weight: 600; - letter-spacing: 0.5px; - margin-bottom: 0.5rem; -} - -.parsed-data-item .data-value { - font-size: 0.875rem; - color: #495057; - line-height: 1.4; -} - -/* Status Badge Enhancement */ -.status-badge { - display: inline-flex; - align-items: center; - gap: 0.375rem; - padding: 0.375rem 0.75rem; - border-radius: 2rem; - font-size: 0.875rem; - font-weight: 600; - transition: all 0.2s ease; -} - -.status-badge .heroicon { - width: 1rem !important; - height: 1rem !important; -} - -/* Contact Information Enhancement */ -.contact-info-item { - padding: 0.75rem 1rem; - margin-bottom: 0.5rem; - background: white; - border-radius: 0.5rem; - border: 1px solid #e0e0e0; - transition: all 0.2s ease; -} - -.contact-info-item:hover { - background: #f8f9fa; - border-color: var(--primary-color); - box-shadow: 0 2px 8px rgba(27, 131, 84, 0.1); -} - -.contact-info-item .contact-label { - font-size: 0.75rem; - text-transform: uppercase; - color: #6c757d; - font-weight: 600; - letter-spacing: 0.5px; -} - -.contact-info-item .contact-value { - font-size: 1rem; - color: #212529; - font-weight: 500; - margin-top: 0.125rem; -} - -/* Responsive Detail Page Adjustments */ -@media (max-width: 768px) { - .detail-page-header { - background: linear-gradient(135deg, var(--primary-color) 0%, rgba(27, 131, 84, 0.05) 100%); - border-bottom: 2px solid var(--primary-color); - } - - .detail-page-header h1 { - font-size: 1.5rem !important; - } - - .info-card { - padding: 0.75rem; - margin-bottom: 0.75rem; - } - - .parsed-data-grid { - grid-template-columns: 1fr; - } - - .contact-info-item { - padding: 0.5rem 0.75rem; - } - - .action-card { - padding: 1.5rem; - } -} - -@media (max-width: 576px) { - .detail-page-header h1 { - font-size: 1.25rem !important; - } - - .info-card .info-label { - font-size: 0.75rem; - } - - .info-card .info-value { - font-size: 0.875rem; - } - - .status-badge { - font-size: 0.75rem; - padding: 0.25rem 0.5rem; - } -} - -/* Loading Animation for Detail Pages */ -.detail-loading { - display: inline-block; - width: 20px; - height: 20px; - border: 3px solid rgba(255, 255, 255, 0.3); - border-radius: 50%; - border-top-color: white; - animation: spin 1s ease-in-out infinite; -} - -@keyframes spin { - to { transform: rotate(360deg); } -} - -/* Print Styles for Detail Pages */ -@media print { - .detail-page-header { - background: white !important; - border: 2px solid #dee2e6 !important; - } - - .detail-page-header h1 { - color: #212529 !important; - } - - .contact-info-item, - .info-card, - .parsed-data-item { - border: 1px solid #dee2e6 !important; - break-inside: avoid; - } - - .btn, - .action-card { - display: none !important; - } -} - -/* Form and Update Page Enhancements */ -.form-page-header { - background: linear-gradient(135deg, var(--primary-color) 0%, rgba(27, 131, 84, 0.1) 100%); - border-bottom: 3px solid var(--primary-color) !important; -} - -.form-page-header h1 { - color: var(--primary-color) !important; -} - -.form-page-header p { - color: rgba(27, 131, 84, 0.8) !important; -} - -/* Form Section Enhancement */ -.form-section { - background: #f8f9fa; - border-left: 4px solid var(--primary-color); - border-radius: 0.375rem; - padding: 1.5rem; - margin-bottom: 2rem; - transition: all 0.3s ease; -} - -.form-section:hover { - background: #e9ecef; - transform: translateY(-2px); - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); -} - -.form-section h5 { - color: var(--primary-color); - font-weight: 600; - margin-bottom: 1rem; - display: flex; - align-items: center; - gap: 0.5rem; -} - -.form-section .section-icon { - width: 1.25rem !important; - height: 1.25rem !important; -} - -/* Form Field Enhancement */ -.form-field-wrapper { - position: relative; - margin-bottom: 1.5rem; -} - -.form-field-wrapper label { - font-weight: 600; - color: #495057; - margin-bottom: 0.5rem; - display: flex; - align-items: center; - gap: 0.5rem; -} - -.form-field-wrapper .required-indicator { - color: #dc3545; - font-size: 0.875rem; - font-weight: bold; -} - -.form-field-wrapper .field-icon { - position: absolute; - right: 1rem; - top: 2.5rem; - color: #6c757d; - pointer-events: none; -} - -.form-control, -.form-select { - border: 2px solid #e0e0e0; - border-radius: 0.5rem; - padding: 0.75rem 1rem; - font-size: 1rem; - transition: all 0.2s ease; -} - -.form-control:focus, -.form-select:focus { - border-color: var(--primary-color); - box-shadow: 0 0 0 0.2rem rgba(27, 131, 84, 0.15); - color: #212529; - background-color: #fff; -} - -.form-control.is-invalid, -.form-select.is-invalid { - border-color: #dc3545; - padding-right: 2.5rem; - background-image: none; -} - -.form-control.is-valid, -.form-select.is-valid { - border-color: #28a745; - padding-right: 2.5rem; - background-image: none; -} - -.form-text { - font-size: 0.875rem; - color: #6c757d; - margin-top: 0.25rem; -} - -.invalid-feedback, -.valid-feedback { - font-size: 0.875rem; - margin-top: 0.25rem; -} - -.invalid-feedback { - color: #dc3545; - display: block; -} - -.valid-feedback { - color: #28a745; - display: block; -} - -/* Form Enhancement for Special Fields */ -.form-check-input { - width: 1.25rem; - height: 1.25rem; - margin-top: 0.25rem; -} - -.form-check-input:checked { - background-color: var(--primary-color); - border-color: var(--primary-color); -} - -.form-check-label { - font-weight: 500; - color: #495057; -} - -/* Action Buttons Enhancement */ -.form-action-buttons { - background: white; - border: 1px solid #e0e0e0; - border-radius: 0.75rem; - padding: 1.5rem; - margin-top: 2rem; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); -} - -.form-action-buttons .btn { - min-width: 120px; - font-weight: 500; - transition: all 0.2s ease; -} - -.form-action-buttons .btn:hover { - transform: translateY(-1px); - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); -} - -/* Responsive Form Adjustments */ -@media (max-width: 768px) { - .form-section { - padding: 1rem; - margin-bottom: 1.5rem; - } - - .form-section h5 { - font-size: 1.1rem; - margin-bottom: 0.75rem; - } - - .form-control, - .form-select { - font-size: 0.875rem; - padding: 0.625rem 0.75rem; - } - - .form-field-wrapper label { - font-size: 0.875rem; - } - - .form-text, - .invalid-feedback, - .valid-feedback { - font-size: 0.75rem; - } - - .form-action-buttons { - padding: 1rem; - margin-top: 1.5rem; - } - - .form-action-buttons .btn { - min-width: 100px; - font-size: 0.875rem; - padding: 0.5rem 1rem; - } -} - -@media (max-width: 576px) { - .form-section { - padding: 0.75rem; - margin-bottom: 1rem; - } - - .form-section h5 { - font-size: 1rem; - } - - .form-control, - .form-select { - font-size: 0.813rem; - padding: 0.5rem 0.625rem; - } - - .form-field-wrapper { - margin-bottom: 1rem; - } - - .form-action-buttons { - flex-direction: column !important; - gap: 0.5rem !important; - } - - .form-action-buttons .btn { - min-width: auto; - width: 100%; - } -} - -/* Loading State for Forms */ -.form-loading { - position: relative; - pointer-events: none; - opacity: 0.6; -} - -.form-loading::after { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(255, 255, 255, 0.8); - z-index: 1; -} - -.form-loading .spinner { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - z-index: 2; -} - -/* Print Styles for Forms */ -@media print { - .form-page-header, - .form-section, - .form-action-buttons { - border: 1px solid #dee2e6 !important; - background: white !important; - box-shadow: none !important; - } - - .form-section { - break-inside: avoid; - page-break-inside: avoid; - } - - .btn { - display: none !important; - } - - .form-control, - .form-select { - border: 1px solid #000 !important; - background: white !important; - } -} - -/* File Upload Enhancement */ -.form-control[type="file"] { - padding: 0.5rem; - border: 2px dashed #dee2e6; - background: #f8f9fa; - transition: all 0.2s ease; -} - -.form-control[type="file"]:hover { - border-color: var(--primary-color); - background: #f0f8f4; -} - -.form-control[type="file"]:focus { - border-color: var(--primary-color); - background: white; - box-shadow: 0 0 0 0.2rem rgba(27, 131, 84, 0.15); -} - -/* Checkbox and Radio Enhancement */ -.form-check-input:checked ~ .form-check-label::before { - background-color: var(--primary-color); - border-color: var(--primary-color); -} - -.form-check-input:focus ~ .form-check-label::before { - box-shadow: 0 0 0 0.2rem rgba(27, 131, 84, 0.25); -} - -/* Help Text Enhancement */ -.help-text { - font-size: 0.813rem; - color: #6c757d; - margin-top: 0.25rem; - display: flex; - align-items: center; - gap: 0.25rem; -} - -.help-text .help-icon { - width: 1rem !important; - height: 1rem !important; - color: #6c757d; -} - -/* Error State Enhancement */ -.field-error { - border-color: #dc3545 !important; - background-color: #fff5f5 !important; -} - -.field-error:focus { - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25) !important; -} - -/* Success State Enhancement */ -.field-success { - border-color: #28a745 !important; - background-color: #f8fff9 !important; -} - -.field-success:focus { - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25) !important; -} diff --git a/templates/base.html b/templates/base.html index ffe4948..3738bdf 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,5 +1,6 @@ -{% load i18n static %} -{% load partials %} +{% load static i18n %} +{% get_current_language as LANGUAGE_CODE %} + @@ -8,12 +9,17 @@ {% block title %}{% trans 'University ATS' %}{% endblock %} - + {% comment %} Load the correct Bootstrap CSS file for RTL/LTR {% endcomment %} + {% if LANGUAGE_CODE == 'ar' %} + + {% else %} + + {% endif %} + - {% comment %} - {% endcomment %} + {% block customCSS %}{% endblock %} @@ -21,218 +27,219 @@
- -
-
- {% trans 'Saudi Vision 2030' %} -
-
-
جامعة الأميرة نورة بنت عبدالرحمن الأكاديمية
-
ومستشفى الملك عبدالله بن عبدالعزيز التخصصي
-
Princess Nourah bint Abdulrahman University
-
King Abdullah bin Abdulaziz University Hospital
+
+
+
+
+ {% trans 'Saudi Vision 2030' %} + +
+
+
جامعة الأميرة نورة بنت عبدالرحمن الأكاديمية
+
ومستشفى الملك عبدالله بن عبدالرحمن التخصصي
+
Princess Nourah bint Abdulrahman University
+
King Abdullah bin Abdulaziz University Hospital
-
- KAAUH Logo + KAAUH Logo
@@ -272,43 +279,24 @@ {% include 'includes/delete_modal.html' %} + - - {% comment %} {% endcomment %} - {% block customJS %}{% endblock %} diff --git a/templates/forms/form_wizard.html b/templates/forms/form_wizard.html index e13ec75..655db00 100644 --- a/templates/forms/form_wizard.html +++ b/templates/forms/form_wizard.html @@ -1,40 +1,6 @@ +{% extends 'forms/partials/candidate_facing_base.html'%} {% load static i18n %} - - - - - - {% translate "Application Form" %} - - - - - - +
- + - - +{% endblock content %} \ No newline at end of file diff --git a/templates/forms/job_detail_candidate.html b/templates/forms/job_detail_candidate.html new file mode 100644 index 0000000..7bb8472 --- /dev/null +++ b/templates/forms/job_detail_candidate.html @@ -0,0 +1,88 @@ +{% extends 'forms/partials/candidate_facing_base.html'%} +{% load static i18n %} +{% block content %} + + + +
+
+ +
+
+
+
{% trans "Ready to Apply?" %}
+
+
+

{% trans "Review the job details, then apply below." %}

+ + {% if job.form_template %} + + {% trans "Apply for this Position" %} + + {% endif %} +
+
+
+ +
+
+
+

{{ job.title }}

+
+ +
+ +

{% trans "Job Overview" %}

+
+ {% if job.salary_range %} +
+ + {% trans "Salary:" %} + {{ job.salary_range }} +
+ {% endif %} + +
+ + {% trans "Deadline:" %} + {% if job.application_deadline %} + {{ job.application_deadline|date:"M d, Y" }} + {% if job.is_expired %} + {% trans "EXPIRED" %} + {% endif %} + {% else %} + {% trans "Not specified" %} + {% endif %} +
+ +
{% trans "Job Type:" %} {{ job.get_job_type_display }}
+
{% trans "Location:" %} {{ job.get_location_display }}
+
{% trans "Department:" %} {{ job.department|default:"N/A" }}
+
{% trans "JOB ID:" %} {{ job.internal_job_id|default:"N/A" }}
+
{% trans "Workplace:" %} {{ job.get_workplace_type_display }}
+
+ + {% if job.has_description_content %}
{% trans "Job Description" %}
{{ job.description|safe }}
{% endif %} + {% if job.has_qualifications_content %}
{% trans "Qualifications" %}
{{ job.qualifications|safe }}
{% endif %} + {% if job.has_benefits_content %}
{% trans "Benefits" %}
{{ job.benefits|safe }}
{% endif %} + {% if job.has_application_instructions_content %}
{% trans "Application Instructions" %}
{{ job.application_instructions|safe }}
{% endif %} + + +
+
+
+
+
+ +
+ {% if job.form_template %} + + {% trans "Apply for this Position" %} + + {% endif %} +
+{% endblock content%} \ No newline at end of file diff --git a/templates/forms/partials/candidate_facing_base.html b/templates/forms/partials/candidate_facing_base.html new file mode 100644 index 0000000..c171571 --- /dev/null +++ b/templates/forms/partials/candidate_facing_base.html @@ -0,0 +1,265 @@ +{% load static i18n %} +{% get_current_language as LANGUAGE_CODE %} +{% get_available_languages as LANGUAGES %} +{% get_language_info_list for LANGUAGES as language_info_list %} + + + + + + + {% translate "Application Form" %} + + {% comment %} Load the correct Bootstrap CSS file for RTL/LTR {% endcomment %} + {% if LANGUAGE_CODE == 'ar' %} + + {% else %} + + {% endif %} + + + + + + + + {% block content %} + + {% endblock content %} + + + \ No newline at end of file diff --git a/templates/includes/language_options.html b/templates/includes/language_options.html new file mode 100644 index 0000000..f9f7bcf --- /dev/null +++ b/templates/includes/language_options.html @@ -0,0 +1,18 @@ +{% load i18n %} + +
  • +
    {% csrf_token %} + + +
    +
  • +
  • +
    {% csrf_token %} + + +
    +
  • \ No newline at end of file diff --git a/templates/jobs/base_public.html b/templates/jobs/base_public.html index 80b2721..e69de29 100644 --- a/templates/jobs/base_public.html +++ b/templates/jobs/base_public.html @@ -1,628 +0,0 @@ -{% load i18n static %} - - - - - - {% block title %}{% trans 'Careers' %} - KAAUH{% endblock %} - - - - - - {% block customCSS %}{% endblock %} - - - - -
    -
    - - - -
    -
    -
    - -
    - 24/7 {% trans "Online Support" %} - info@kaauh.edu.sa -
    -
    - -
    - -
    - {% trans "Contact Us Free" %} - +966118200000 -
    -
    -
    - - -
    - -
    - -
    -
    - -
    - -
    -
    -
    جامعة الأميرة نورة بنت عبدالرحمن الأكاديمية
    -
    ومستشفى الملك عبدالله بن عبدالعزيز التخصصي
    -
    Princess Nourah bint Abdulrahman University
    -
    King Abdullah bin Abdulaziz University Hospital
    -
    - KAAUH Logo -
    -
    -
    -
    -
    - - - - - -
    - {% block content %}{% endblock %} -
    - - - - - - {% block customJS %}{% endblock %} - - \ No newline at end of file diff --git a/templates/jobs/career.html b/templates/jobs/career.html index 0c1d06c..62768fc 100644 --- a/templates/jobs/career.html +++ b/templates/jobs/career.html @@ -1,154 +1,568 @@ -{% extends "jobs/base_public.html" %} -{% load i18n static %} + + + + + + + + + + + King Abdullah bin Abdulaziz University Hospital + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + ع +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    + +
    +
    +
    + {% load i18n %} +
    + + + + + + + + + + + + + {% for job in active_jobs %} + + {# The columns below directly correspond to the headers above #} + + + + + + + + {# Hidden on small screens to prioritize space #} + + + {# Hidden only on extra-small screens #} + + + + + {% endfor %} + + +
    {% trans 'Job ID#' %}{% trans 'Job Title' %} {% trans 'Hiring' %} {% trans 'Posting Date' %} {% trans 'Apply Before' %} {% trans 'Link' %}
    {{ job.internal_job_id }}{{ job.title }}{{ job.open_positions }}{{ job.application_start_date }}{{ job.application_deadline }}
    +
    + -{% block customCSS %} -{% endblock %} - -{% block content %} -
    -
    -
    -

    - {% trans "Home Page" %} -

    -

    - {% if LANGUAGE_CODE == 'ar' %}التوظيف{% else %}Careers{% endif %} -

    -
    -
    - -
    -
    -

    - {% trans "Open Positions" %} -

    - -
    - - - - - - - - - - - - - {% comment %} Django loop would typically go here: {% for job in jobs %} {% endcomment %} - {% for job in active_jobs %} - - - - - - - - - {% endfor %} - - -
    {% trans "Job ID" %}{% trans "Job Title" %}{% trans "Hiring" %}{% trans "Posting Date" %}{% trans "Apply Before" %}{% trans "Apply" %}
    {{job.internal_job_id}}{{job.title}}{{job.open_positions}}{{job.application_start_date}}{{job.application_deadline}}
    -
    - -
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + + +
    +
      +
    • Need Help
    • +
    +
    - -{% endblock %} \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/jobs/job_detail.html b/templates/jobs/job_detail.html index d0c57cb..1d0ff7b 100644 --- a/templates/jobs/job_detail.html +++ b/templates/jobs/job_detail.html @@ -280,10 +280,10 @@ {% trans "Updated At:" %} {{ job.updated_at|default:"N/A" }}
    -
    +
    -
    {% trans "Financial & Timeline" %}
    diff --git a/templates/jobs/job_detail_candidate.html b/templates/jobs/job_detail_candidate.html deleted file mode 100644 index f74189d..0000000 --- a/templates/jobs/job_detail_candidate.html +++ /dev/null @@ -1,260 +0,0 @@ -{% load static i18n %} - - - - - - {% translate "Application Form" %} - - - - - - - - - - -
    -
    - -
    -
    -
    -
    Ready to Apply?
    -
    -
    -

    Review the job details, then apply below.

    - - {% if job.form_template %} - - Apply for this Position - - {% endif %} -
    -
    -
    - -
    -
    -
    -

    {{ job.title }}

    - - {% comment %} {% with status_class=job.status|lower %} - - {{ job.get_status_display }} - - {% endwith %} {% endcomment %} -
    - -
    - -

    Job Overview

    -
    - {% if job.salary_range %} -
    - - Salary: - {{ job.salary_range }} -
    - {% endif %} - -
    - - Deadline: - {% if job.application_deadline %} - {{ job.application_deadline|date:"M d, Y" }} - {% if job.is_expired %} - EXPIRED - {% endif %} - {% else %} - Not specified - {% endif %} -
    - -
    Job Type: {{ job.get_job_type_display }}
    -
    Location: {{ job.get_location_display }}
    -
    Department: {{ job.department|default:"Not specified" }}
    -
    JOB ID: {{ job.internal_job_id|default:"N/A" }}
    -
    Workplace: {{ job.get_workplace_type_display }}
    - {% comment %}
    Created By: {{ job.created_by|default:"N/A" }}
    {% endcomment %} -
    - - {% if job.description %}
    Job Description
    {{ job.description|safe }}
    {% endif %} - {% if job.qualifications %}
    Qualifications
    {{ job.qualifications|safe }}
    {% endif %} - {% if job.benefits %}
    Benefits
    {{ job.benefits|safe }}
    {% endif %} - {% if job.application_instructions %}
    Application Instructions
    {{ job.application_instructions|safe }}
    {% endif %} - -
    -
    -
    -
    -
    - -
    - {% if job.form_template %} - - Apply for this Position - - {% endif %} -
    - - - - \ No newline at end of file diff --git a/templates/jobs/job_list.html b/templates/jobs/job_list.html index 4b366bc..9fac4b4 100644 --- a/templates/jobs/job_list.html +++ b/templates/jobs/job_list.html @@ -225,14 +225,14 @@
    -
    +
    - {% if job_filter or search_query %} - + {% trans "Clear" %} {% endif %} diff --git a/templates/meetings/list_meetings.html b/templates/meetings/list_meetings.html index 0297876..1985170 100644 --- a/templates/meetings/list_meetings.html +++ b/templates/meetings/list_meetings.html @@ -168,7 +168,7 @@
    {% if search_query %}{% endif %} -
    +
    -
    +
    - {% if status_filter or search_query %} - + {% trans "Clear" %} {% endif %} diff --git a/templates/recruitment/candidate_list.html b/templates/recruitment/candidate_list.html index 8c350b8..dd795d6 100644 --- a/templates/recruitment/candidate_list.html +++ b/templates/recruitment/candidate_list.html @@ -165,7 +165,7 @@ {% if search_query %}{% endif %} -
    +
    -
    +
    - {% if job_filter or search_query %} - + {% trans "Clear" %} {% endif %} diff --git a/templates/user/profile.html b/templates/user/profile.html index d5133cb..eb057e3 100644 --- a/templates/user/profile.html +++ b/templates/user/profile.html @@ -104,7 +104,7 @@ {% endblock %} {% block content %} -
    +
    @@ -122,7 +122,7 @@
    {% trans "Personal Information" %}
    - + {% csrf_token %}
    @@ -139,7 +139,7 @@
    @@ -160,9 +160,9 @@ {% trans "Change Password" %} - {% comment %} - {% trans "Two-Factor Auth" %} - {% endcomment %} +
    @@ -192,4 +192,32 @@
    + + + + {% endblock %} \ No newline at end of file