From e1e791abf6678d1f19c1898a2862591a15d985a3 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sun, 1 Feb 2026 13:17:06 +0000 Subject: [PATCH] adding some features --- assets/pasted-20260201-075032-c186b500.png | Bin 0 -> 14879 bytes assets/pasted-20260201-081838-f3ed2987.png | Bin 0 -> 14516 bytes core/__pycache__/admin.cpython-311.pyc | Bin 22143 -> 22982 bytes core/__pycache__/api_views.cpython-311.pyc | Bin 8534 -> 8947 bytes core/__pycache__/models.cpython-311.pyc | Bin 33448 -> 35232 bytes core/__pycache__/views.cpython-311.pyc | Bin 56839 -> 57280 bytes core/admin.py | 17 +++++- core/api_views.py | 4 ++ ...ile_driver_grade_profile_is_recommended.py | 23 +++++++ ...ormprofile_accepting_shipments_and_more.py | 28 +++++++++ ...ade_profile_is_recommended.cpython-311.pyc | Bin 0 -> 1263 bytes ...cepting_shipments_and_more.cpython-311.pyc | Bin 0 -> 1463 bytes core/models.py | 29 ++++++++- core/templates/base.html | 2 +- core/templates/core/index.html | 31 +++++++++- core/templates/core/profile.html | 23 ++++++- core/templates/core/shipper_dashboard.html | 57 ++++++++++++++++-- core/views.py | 5 ++ static/css/custom_v2.css | 29 ++++++++- staticfiles/css/custom_v2.css | 52 +++++++++++++--- staticfiles/js/admin_date_range_dropdown.js | 15 ++--- .../pasted-20260201-075032-c186b500.png | Bin 0 -> 14879 bytes .../pasted-20260201-081838-f3ed2987.png | Bin 0 -> 14516 bytes 23 files changed, 282 insertions(+), 33 deletions(-) create mode 100644 assets/pasted-20260201-075032-c186b500.png create mode 100644 assets/pasted-20260201-081838-f3ed2987.png create mode 100644 core/migrations/0027_profile_driver_grade_profile_is_recommended.py create mode 100644 core/migrations/0028_platformprofile_accepting_shipments_and_more.py create mode 100644 core/migrations/__pycache__/0027_profile_driver_grade_profile_is_recommended.cpython-311.pyc create mode 100644 core/migrations/__pycache__/0028_platformprofile_accepting_shipments_and_more.cpython-311.pyc create mode 100644 staticfiles/pasted-20260201-075032-c186b500.png create mode 100644 staticfiles/pasted-20260201-081838-f3ed2987.png diff --git a/assets/pasted-20260201-075032-c186b500.png b/assets/pasted-20260201-075032-c186b500.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f9f686ee0d9c7429d0776c3c055a80596b665f GIT binary patch literal 14879 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 literal 0 HcmV?d00001 diff --git a/assets/pasted-20260201-081838-f3ed2987.png b/assets/pasted-20260201-081838-f3ed2987.png new file mode 100644 index 0000000000000000000000000000000000000000..46a64d7796d70007c8efa7a5c9a35db4764317a7 GIT binary patch literal 14516 zcmd73bx<5Zxb_RdC1`?6@ZfHX1&83lg1fu>F2SAP?!nz%f(CbYx5eG>a?V%x)OSzS ztvXd--MWA5ZqIg4&(3yF&+|U>dqWlFB|jn)AVWbxeUz3G`vC>@0RSmCAi_i5C-P~& zLq4FLen^TyRg4iGLN;K{gyn>xpsJ%$o(IcWZ)DVqewx0iskTaue%a(UDjW3Q!~RIC73~&ZPK-}?urH^0 zCM~UH{+LF~3je$3rLh$^;3NylhMwhAo$WI!5BUO2< zIbW8d9e$@hUys8D7r3Ma#l^+7u&|(5&>}=Xt3nfiA%b}Eb&(F`y+BqL2un-`Dg9(b z0zftcsx-OwotOyb5AFV!?CnQV@3$uLH z-Ybxg-qR%Gwq5yiJ;!KLj{(AK;Ns%2oWYnckaHjTtE=HNFf>*i8%yXYA1YM$b}y4ucd{LhXvBk&(Aln`0PZh7is2nr>T=XI!-%ZApf7cImja^ z6{x8zkJgLuuc$UPbH$+4-1pSh*Y}OqBaxiaam*tp%({t<(UQ@vL_2*CVXJS+O^jdZ zsxOYK`57X_0qH0{enk;y9h0{(pa`rBX*e`PcM!kULbVPERIIA6FTYtL_^-Nu39A3I zzkIeiI}T*ex*ZgRjfEv5C55<|XIguRU?UFWPf{)szNX(Xe{xt)z@gb*^Aqv-=8D=- zZeIz~j0~nbl!P^^Suaz}DQRCJ!=-Q@#)dl0bO1xJ>sli~lI^rdbSLesa6Wg^yt%Zr zH>0BiV=JauSy-~wii`D(w9n@rp)5L_;`9o{R_()-CGQn3CzL{gUT`nx zV^12u#Kj#L(!k^?7&S?M*gs$Wk(-y~sIDH$=i#HoOq{$YN=RB;?k@x#qrBi=Behtk z7S^FR+-t_Ca=lLFw>ao=5dV=BLnns7W%9+no_{Xz0i%UlK|=|SlQ8&kqMs%Rw!Y>R zND`M1_~d-K*u0BZ0kh9yCgruFqvK$+mN{{FJsD2lWZpa^jOF@NUYA z)0`vq`})vzAVHWN6nEI9IY<0Q@Bs>^`DgUiGRGas%JKvCj^dHf232Zr65^@ zlh&LnI|{y05D($CIcNXXz*hQK!d=DJR_=Q4Ogd9gM~s5$lCHv0!P0A1LIu0%_eKZ>;g2^~xFX&#pYKSWnxwJDM zG{ZO(Dxn`mrtABjIZM1=N+g0x@E>S9O;z2%xoT@E>C^X!Z7SB(OK?LHB`}=Vx+;PmVM4RWYHVj@DNVf{eDm0b^!EOTAw_p+M5xKi0vL^oX>aJYo5K1H=OF2Nd|#T@vQ)9}HP?FghPBr@5LD)H>wix2bFjM(D_q_Q1`E^y*z0^ z*o@_jC8s!*X`iXHc)w?T%Rj?EQtH_SQV0iO5l>n~M<-ADy-j-cXVnCYT62)`P8A=2 zihVt^Nsfk|^_IOWK!YQ8gYSjyiE0c1`p^!VUDAVKP?M#HT9PcJWps6uM21o^>mcW^ z+gn2FlYHrcCGFrqNmXtV;6xWbmjSEEW+;d3^!UMN|95O`_Xw1D=WKJ#P)W4H)|Drb zbf`nG&2o1-6eA%v`sylw2ZqZa^Mm<$&W*C~D_-fF8_li1&==cfoGq-lg-fB;LA}}# z8-i>D7Nr;BL0P$c@}mRk7XW_w`WJGQ&#NSW{aysE28>3=(1aeM#oJp#@Qt4I4?`lY zhVtEA9F4Li=YKPRq+ScVm?PGh8)@lYD(aZ)3&jwS|AW`ac!ekteY)7n7-ej1>`&g6 zj53!}sdlB8o9x)mj;`Uglrm4+#AZUY7}dT5>EReFX%8AaL{s_i$h5T|pallzM$8I* zU`czas!gVGVjD(so_19kmMWUB<}3Yx>vV~k*9PCUv9!4QV&Zv%ySgJONh-Xpb6qR+ zI>(;x*3In2V7=~6Rn^w9gW>z%_Iyahec!yN7%gWhJGK1i5 z1Pcp~`86E$XYvsYI4`_XQy!fT@FtMrc*ev!0gLKLv(rM13HU5dsIJ>hyJp=KStB$zPq zGY=Mzm4H?OoS`Qb*-_h8jRkIG&@+4J$jiEM-FN`j3Q^VBSbP(uTGU}gX-0LsQCF=q zb=-78xZ-}tU!Kf|pqZMOJ;LCHCt_H1#0DO8zhJb!RkSXWtOmjCGud8@>1beUA}oAE z0I5@C9?5>3^uN=Qg~OZzpRTnh6Wx=uf7L!-qa9MPm)-Oy4jc_#G&>ra1eb%Inrj=k zV8{f1@Z9@oCvE$zy*-MCS?yN!bvg4iZd>Z{UKP-q8b$=;(STx{IsBupolmnIhhS-2 zQEdb7-^fR;arTMBAg)2-TX{!wKUX8ep;UU@E^}~ zT%YCnsl9|+#z}59$SRw-3^;>kinC!h4v2^TP#sGzrSv|6XB&auqkYYxzaSY-gS@RAt`+43U+n}z^a>H+5GTn8$vsgH8B=&wAo zo90CoH7lRf50jm~;2#xIur?d&NZ&@;?9_*nmB@L-r0`#k(GJ`8cyYu9d#VL&MYzwI z!m|1Z!_rMRZ%&x+`;TGkt2>c3Jb4S)Qs%O^-^RN# zGEB)T$#MCIGV(m|eXC*Q@8xhj`Z$`o^yyf;agM?Mm{C)Z_{2jdOb9wmf7?*$-ttb$ z2oZKjYt5mL@!5gsKAG~*R^zXyi%68}Pc|y!)#!PlJ|O1QLiqFU8ILmUEaPNP#nxKTML4* zqy_rsN8ivMMHqP=CwQ%4r8#;^LGa)-%%65m8WT&5c~- z!Bq7uzf-LCSjZWY$JQ!%EU)P09vZ-;-=FA>oAvB2cNCO3^Fi>UQXb(&-Kv zD;c@N8144C4<;@DPPVe=P|&d2$q^|7tfb`YE9hl(0EI0s$Nl@q^X#BakyLKGin0zE zw4&#Nsy!P$HX%*D4yFMzhOl4O6b8X#90J(A|8h*j=RffasMz1bn#6G>&KOglk)IgK zg~E0v<{6sx~;5|-R-bm-ryBhM^zfmk_;CHG?i*^4xktx-r(7REv5IzqIQ7o zA-(LH*Pe_Te0y>3V@(85zF>t=VuGGrpMpa=AHm|_+U%4Ia>laoOY*WdDJ?2Dx0S)I z1&3)|f5K);W`!beOf_+qY%js!Ia{jQ)i3a?gPgV0YyKgg)N!hBwPA4uw1h9?gCjn) zu?sG4)ls=qH`z6}zgDY-n!^@Rlp|4MK6=(I7LU9=74C4M>@C*Ze`v^$v8;~gw`xsZaQ({Qs z^O9s_zgD{+)iS+MbfNj3cP`E7e#n?1>OgEEP3AY0^|02z5II|@;49?wq21w2^eR${ zyTbCf6>!Y;@id7-0{c;$B~5vR?J~2wr>7d41r-gC(n--*->B8W)-UeW4jD0viPe;d zu4jgBE^cnCG%hp;8&U`932jSUS&{69A*kqN{A@vuT>I0n^$8<~cF12oih8(2v^uQH z_L8IFgOM_M0=tGwLy*wPC@IsEU2eq!G~{(2P_xABC#m}b)mJi?fHV9O{3(4U^At$v z(Wa+^y0Qe?9gfg#dZufzr1DG=)clkIzt8d1biiZr;>=Fb>t^D_s$6Bdt5vPD7g2_L z_L8?_QCuBo{~CGrNX4^jh;R9q8~K`rcBce+nhbpu%A2t+qCuCA(<*BO2Hsen_w>X6 z?$UY?@=mwFCC&nhTu@7GLqczuzg{*U`UC$#qHu2;!C){&@?E9+1#Oz2)zyc%*8-Di zs{*a|3o^@oM54P9YER#b!6`f9WBK?8oix?<4y&)qGzdMJ&Anm)*n)e?U_Fn}Q`6Rm zh|~efthf&v`hTv6-G6TS(lK-X+()+(_jl_bqqSA_1RDY*PH^>Le zyV1P(-CbdyD_82z1s{IGhteTIn%=8j&NT~+)v;dw_yT`hdELyzPbe(pT5VH#aYIKu z?PI8{Skw-uZ)D^j87U_&&Iy9&$#TM6M=LKaYh_0DtP9k=}j(dQnHkz19ZbB zN(a^^6D;3CN%drRz-P}ol}_DsT~~Fcj=fpx zb`Bj!HWO-caGzeZYc(&WD`O8tn@thgO*EXWGKCb|>!+d{b*Oy;xNmVAQiq#fGwW4Z z#gE2jzm};)Q=VS);gA(s0xo0M4YulF*@l7H%f$!WHgIRr7x~uZPHU;Juy*(oM^QhA zU0B5r%hLEW;SlKN2s|X2_ru-f1`;|WLm}>mj@qgR|J7?t_#(o{Bi+(C_%%;j(f{uH zg);i0&8PF5(vo+sWI5IHb$++ot)m|nbrs{(Ot9Z$_}33>K7QhbiR@KVQb|!K+k7lH zNp3vpJXor#1J0x~quCT<0;*}@Y%XL6Gh&sJ3QUB0qyr5Nq*W%4W+o_PB*{ye%IHa{ zk)kgegiYZy+-J7B>gsrPBu{d8zNRuKEKwT&Mzy!W|(2H;G`B9Nb@7VhS=zL?=K-RPO4PhT~My z!u}c44ipbhsU@x>6j8cTaR~~=#zt-l>kgDELfG;(3K~x-iR{0e7NZt~cT1AflGmF` ztAR2Gi#zUHZT+Lj^Ctc+d#NZwOXPac9T=`nU&m^&JP6`uij9K74)Ji5A}Xf1y-zgq zza5yuo086e9FqJ*|6y*1Xgb=v_UE(^YKUcg`JdXMvvdawOACscnk5W4Tj=F=b)S|s zU%!9)FSifk1im|#qxFU+)fgc2RI5G?OO@7jSK9q}jD*!;UMjH^O*mqRq1hB)xmQx4 z*bx{e)HXHsqrwuoIli*L-U8d?hByXdJ0jn0r(@;HmIJ+byW}!RAa14YN|W?qxz>;+ z*(-~+jkWnq5m|*?+Ih0*2}o6BkyrJHqv#mzMX+lp#F1=D%2xiA5{;$hjBqQ{)r@X!V}o>zO=%!GqfxJ!2l+iw%G(kgc6)S?xu8Vz*`ogW>6m!P5UOMR z-|yc}S@DU9mp&3f5R(;WF;*5*DK!mrZW>JuFjh#N=(?(Kj+($l$*b(&}(}A zgSmptbITj!ohx44i<60#Apn_}NxctS%|P~HS;j$d@ZtQ+f$cNAuV{}@il+9yP+Ahp z<@WYxJ|q+izU_E%?~Yv=lSvx^Z2o|?(_3wU)|7jc@`J@2{H2#ge1t2R4MqXDx6#d~ z?L+N*{};ALr5Mq8agiA$$V_%ewEXPMuS@<~D_mC_yhVy$g*XW2vW&TWFimWINavBa5` zY_pYQz2FeCjT;_ce&n0Qn;P5Q!Co(P5!i$~-aZ-ZdYe7G+H;*WB7)YH@9%xThniTR zhmbmDb?}paq@;Al31C%t-7o4DHv6XCeeF@I@nQo#*5Uv2elmOcj2X(_W9XBkt?us5 z=1Ez|Q|x$yt%1#oDHoBT%&Xi+wdwT%p{&{NSi%bB+d#PX{RKHLaAw;49g5wr`yJ{>xV$zfA z`6S4s5)L7gk@zWgXWAlbZ!Z+=&PFt7Z(gCJIrc-{I~#*-Vu#Mjh%cIAdOFuVqx1EM zjR#JR6JLF>N~3gp)`qk888p2nOZDu!A8#sv7f#C+0Vzw@mR1_Oo5zwr6(#x4bLan6 zj}Xt+=hk=&33;lxjgSyOXmzdy+#G-BGttqpKc;?Aub5uA8OQnc=fDu4m;c8}8i9vn zJEd#Sv|e>m*?vdshwSoL`|<-MZU?Vu>feUq&m#z!Xrt`Rj!fnj$UbQ1(9K~&^Ke@k zlz~ckZFlpd-0Q4O(t)+rg*VFO=DU{FX&5(aq8TkMzX=q=mQvOXVBGtQ%Vxg4ZrXUe zRFerHpl3T#4EvB|Ok1xyhi$3(;Njc1h9_Wfwmub?B3TQZbGO;18{PQgGpMR1S@n0z zkz(&TWaJG?vH^58^bGEEKaO0sckd+^w}GTJtP1vjZkYv7jbS=_+E)da;%j+$87^L{ zu}h3*4gbj;wP$$_iW1t?za!)wM8U7?YEmYw;y&r_rtWc1i;1XDFOM4*$us zfKpgPOVZ;q=G`7(@CMLjb#bAExlty*sDS}P`H<+1ru3%UjYeHCt(+Cp%V;wFv8E9( z{|clIQ0HqlaJyoo)g#{U%Ow~psMr`OpuAP314YQtbQm9NbmbBDJZo*6qQk>1EDDD{ zGCci|oz{|9z$RG3oX!Am|Hmn-f{V zxOi*RGK;-%IN6y%3ESc6qA_&m-;z2HVZf;3dZ9vK1c=EqUXAUO0qt#d2y zCdRHgUBP7Sf zc8P%vDfl+8-!iV50nvDtYgZHwmtc*tcsce28?!M-6?{i1V3XgY+Xky7e}W6A;~%H( z0pGMw8F22Y!oYHe$(ND8Cutg=8&e>wOqH^LTqV@DRGMVrT%D!2e|pcd#%I#;Fqp+p z9QJuS2-{7Ol6QjF=T(wEdr3bT1?t@AxV`&I=sVky`$;0AHr%hs*7F8Btu%j zWbnk?n$1i8)M@byeW^rVlIc3>^f;IJOiuP*$WKhGz2zoWEuNe`IbYK<25FxaNnGD+ zu=r~0IV|_Y=ecz2YFfJ|?SAn56htxoRyePGzOD45!nY)poles0+c0{oTh$HtGgw8} z*=G8~-4wld+9Rj5nQh_;sxQ+UqTUN)xwq!@SUI$Kk^(j;d+5weWJMBRdkX5Kz{4<$ zNd`VTh+hQ?PP@c_1HsoWiQRlm;`SL)S0I?p>Xn?$6=+G+PHS})CX|t;y`5%)vS>|k z!+Z7M_{xmJ4+xlq`SL382#;>mwI0U{(@$HM$NOoSbKBzTf%!y(E2;69v`<#QblTq% zZfrRd-ZG#Ql9S-i5&qi1nZClfl(yOXz@4czDx!8+G`W%#L9b+{4AZPd4&|X3J89|8 zZ?p8MH+ZK9ciKzaTkCNcZVCLpE*uTGakihRO1eOfO`6>yhaK+oiycu2>V9#pclk>h1a{9%zm#cTN=B zDA0$|&w`C#1;*6hl7!{hEpC)WiH0(v6!QiY>(6^j18H8N=xuUT1wkLJ$`>PFL{G})JL>j%a#_X|a5-?Jxp66L2O=GleaVf=J>g5>|^Drz~PYr5j@)`T*d3!)DJM95`F>)9BrpiudW`p zKqxE=+<8_sSK>ZV&crMcF+OdqS;9`PSAVux^Yd0|aIlW~x{P3~^aY3k^XiKn88n@jELTm6k~U zfolvAs8=syVnt^|r0IQC>#P&Le`ev0j-T*mr%`BZ;AJQZ*??<~i9na%>C};t6adbD z4>y1!O_sT~2_uYJ)6OoZu-1kn4s^Y4(Z`8e)mb+o-o_*8Gqo|_U!_U%s~%8{^7{u= zjIK<&*NlXK=_6LC7WzbG)5B(=nAcSeqjh=6#PSU<>@?e7%doz`gyN-gZQ`Fq{+ca@ z;2LyH#F^#zM3#2NTga1Y zUr0_^;dHYiyasYY;&TMSNHPbF>kO?}_Q(^wCFTA7TZm35NMNNMveH1`qX$a*IPNL( z8tr`}aQ;9NWdV_;D<4b)J)uVrSiJ!MXrDxPf;HXrxL~wwHLJYrm)~)`ez3p5H+IeD1*5M_*ksN2c=mZ(QZ)QSIBbL!%GS5LbpT!4G5afZ#|q8F{kMG#1W=Q8 zwS;7dS{Fo&E!z&qkM)4 z#4J^R%g_)7Z2jRKn`*>OwIyEfxkqnsybi+cF=HU#?i%pEOeGylLaQ+cl0!+(+nS8$ z_g{M&Vd5h+V7w&?rH?hg%&1;^wYBs5lV>UJRji5hA0eUMO*N&^8ejTbm8gH!1meE}M*~!CaGE|i4 z^#XvF*?~&HlYRlyaupGtDPtBD7i;Iem{$nO?HY?Dfq`fF*J#Znjd*;Hk(Fn(A##-T zXUAVF91WI#nusR*{?Y<1>ouj+brgwoC0Nb1YxZoh?dgL!lfu>8^YZ58fg4i>ugK70 zDaZLyk5uQLJz0Y4x{mmb^OsGKg}i@k7O%$vq9h9H#$4#d3qa+Kfv5-075E^)dpnAB zaTb<@vP1t=X}dm6TXv6rO@i6Y{yAS{=HN6d&nb!Dv)2BvShwaYQXM|SM^I}}-{9y0 z=1k(i$<4DTATn=uw7l-*`_Iz;PkQ|Sxc3xHxGv6bwwdWHPxHPP%oqB;fkEdeF=z8m z&haZt&NSI_C@X}^MrH_js0S5#RQuk5r!gU4nvzzoLYFw99OkxveRRP30H<0U4l83V zoA!%M-{|R(H0{CmA0~)SR&%H?2_?t2l9_oFMTXu2I1)yeZY7W9v| zN1;iJl$~UEcv{gW$`|H@eCcUVm)eR})7^%QxVMGB9hm5ea8AP_(&b|Ki&&P_@WNb^Pt9_zl&gAzP)SBu!=YMj~NcYvJ!aCR+~4G z6$EsugAh9D2@f91gOHY^&GN}=eFci?rLd%OC@R6@4>s^~{3M#}Q3+6l2duPdR z<|vT=gAv3)&-|YNeD^)o^$9ZTFO*q@MZ=ail~=3?Ubd@05|PQoRxbmzW;+?Lk>*Q= z#ZUh2(;n48d@4RZzSpPW${|CtfFkyEB4Uq~`r;ZqUt40np|8C@hE`TGjZwr2eIhgX z^?>ONB0^72cW_RwXF> zU)IvP3!EavT#9+OtMXT765jUY$izPXhhL?N59foIY44Rjpp$k9>FyB$fevD3fmrI% z04A0t*zb6wd%W?8+W!o)`#%Oo*3f>PS^H2`UH!MezaTd^^_}cg&qxCZq*?_+IKk}y zL>ad*YwN3Xl=6a_xNN$O&~As0yj*WZ(B3p_GnG^J?_b>fYg**ZC%U5KPnItqlkqZb zPx8xfL}swj1>Q}r!PfNX;8tV^dbqGOlpTxVB4=Si3-K1Uht#(hS6(`TGHP)h@dO^u zT(~yAa+>Q8(8#RCRY5G@n+fG02vZ5c8dtQ_r2b*%M%Dc9pyS<+p4HrZ+HaWir!)B1 zdee8NP)ULR`j65NM;OTQAVV)kyt6bD3c)Uiw!9qauF`9Y#!90H7y?*44}=RLr-wg? znVSj09^223500kI0{#rb_dFM3m03w}2_Y@@wKt;u$sH5p&)RTBT?X zqkFJ8c)2++0;Yh`1V#(u3CJ&AV=A9z4sM_c)?HlW$Z3J7E2Imh7K?Cd=EWweL8!HR z?L9$fCC5sVx45j%SCA$PnwKM`VN)91YwPaXf`ZOOJaMZJdml-BXK3p#Qo5l{9@<$B zzW%_?X(f&3@x&OQIYNbyxFMdo_<4ewy=6dMo*h!Nt5hmky|@u>q1PbE&g!xka}1Ip z9TLpdUnv1m>w#Bk$I=3h0Xxxt|FrS?dU@(=4t0jMyAoyF3eWbRL?wT6spMPhqp~qS zU_WBk+2xgu7_An4#YsmoT#TY1TI2H4R6SQf?nychCczHg!nE3HK zwKpH>K=;_O7S^b#yIYDyR?@Z@8QticPjCsS<9Itat7)G+1)_+b2Z*v4(FsuyP-JRAQ^yj{%=!Af{{)uEY(9 zppkHY;dxJuiT0>Nvmw|H*w#Hd@G>;)+1?Rir~aA|SW8oDf9ou$(fR9szEu-^_pRuz z_V^EsD8i%GC$C$=pvF@~i$$D1oSJP3?1^F&=wGj}_wQJgIhO3n6_*6&25H}r^@6}? z78D4yN1}EM*mJONtG4hpBt%h4hR;CFoR-g)1Dd!6V?xO9 zudvR+f?$}--dWy%r?F=FRn=d0pCmEB>w!_P*bBCTfu{ec$>y@6KsVe#5*+{rM%uRq zXr5;@Xi@dwa$NMmkJ#tkL6?Wk%ePv{+);P{ZNy#>sk0tJ4k>*^>!S8Cnh6i*C zJN!YOh0l^2;d__U2-BF^iJ1f;UK1evN<)JIS?%@%51+DlKQv2}cT=e%NvfNc9Z!;3 zb7Gf3%BVt!&wjfN>Bqm+`RLah>j0AmZd7xzWHU=i%Js z`u3wutZlECz?{&2LH4l>eT^>60>Mr^BjA*SzU!yj=@*S#oy3c)ds|-MA$w?M658Kz z-cC2_HFtI+JDh#D-Yt*d7uzh%9zg5Qt&U;xZD$<()?f$28?HV~WUK%7JW;KrxPlG> z&TlQ})YsgT5E}yjY5!mx@=J+hi|cy)aRIAgH6$ijS`cR1i4Mw1TtBy zZe`%7=fMV3L+5&7sbOjg!`ed~prz@)|1jkVOU`#i|BpdLY+O zNZCiC=cwdESk#FTAIt0m_816HMag<$e5N6fR?{(+6NWeKa_hntU{u(h{q%=ekKO8A!WM>pR3&TV$ zgR2mR`PEGjzm&qh>RvYD%;lHchv32|HSq7wUk6>g_cpxU#%DGWha7NbeP;Reig{Ll zx)-6Fni40>wnLX%!__sFUh(G&*4sE=kaQPv!rsif34TgXOyggT5 zKei16@JVW?Er>#L6lT6KF-2to9|v>6gEU!`fXA^OiB&|v=+CA@qi)nhVY9g-_e}PD zpWq;nAL-r1MgH!HPG{hLl{Jcr7LewY=fIeO`irAb^;6?Tn7CyT?STreNc`>{mb0wE z&<*w&GYg7xBMRU^N)J!?I@Q|VRw0YbKO`(9TS4+OT0C5<4Nq&@t8T%!$d-h|dPcvf z3jv0vB9UFg4u3QkASR5uS@l0He8Un&+JhC*&egw8zT#^y2*_kto zs!HlO#t?Cl3vXaxz{AU%@U}WQ7+O`u63%tg^Z61P1fz;Vos!TY$Jptb`33h9YZa`OEwU_aUF)$s|ZZQsq zxO!~@h-cwiDFlZK=ir)RdMLf1F<>z7-g5A;1{Zx%s-Wg zp+91#f4?)8eD#lHyPu(vxy#6JGSKSYSJPDlv*vJT5R;vCt3f#e+tEsJBI?aKKiPf$ z^!Di6^Lr>On+t#j9{TpZ)6Q8}skKF#Y-_D+aUCnO$-0#bb!?G02`E@V0`Q~yKFz2%t zWTkzC^;DlMM4pXP+yUE6cIb6}d49YuZ0Fms&>nZ*ir*z5y&2T`W1`-Ex*zqZT6|8O zMiB;``Mzcx#&YpZY>Y!G1rAkxloC^DriWSg#p0F4s6+8$f`9kjF}FReWpok7Bq zF?(DC`Txl`EIOOb5KnwAqV2{{km2N8sZj7oTRlVL`Fdo#Y$uI*bi7gKSYhZX_Y?d5 z`XiW~&AzIdWr9dE5>Ac0{{tCT?nML~P1};N^Y}Lx$$=OW5cU6m;|3x#!jRx-VQqJM z+^$ghsbMG=P$@`Ki_v|MgODK+Ns!yDR>lAc8HE3XIhaw@@K(?z#a6DAkRsry+P-0B zeV6hA7Zd(bR@2mwz`;pX`6~sV$cz%CSMAwPj*w(2NChM?xpcN-7Sy0gDy zFnle}mgA6!V*7AT7eXJrcLFM=`CnAR_wTlfp2vwbnur%6i%Sa=MM|RDXQihn&l7 nv&(T}A1LrWbB-k7jTEQO^C%#+lO2+22qi5pFIFL<@ArQJwl;5k literal 0 HcmV?d00001 diff --git a/core/__pycache__/admin.cpython-311.pyc b/core/__pycache__/admin.cpython-311.pyc index 7edfd23509d2002b6c0226ff8c00b0c1ccc3f364..d8a12929277d92f1f6711ed718d31a3a570a9ea0 100644 GIT binary patch delta 4564 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 CoMDmx delta 3871 zcmZ`+3viRi5!Okvo|a^c{E}b72HP?wUTPa4?@t=R&AASvi+j5 z$7nPt7TNI~W-wgApZ<}Z6WktCw@o(fGz8M&PZlY4(Avt_QTT~%9k}fq(yitNmXXc$ z<#q4{dl7pRhU^E9DUPsnQk8qu(8FZ=343?C7&%VZx?QsKgrVClrz3jM0GsTZX@KGh z+b1zoMln{Zcfh*?N^^ zm?vUz)zM%x^Jdh;Tj0Nr3RvwtZmFkf6Wnwbvc>QRXR*Bw37UBa$}e%PDQ&}9z{rCn zwS=G@K{X=y{amcw2uEENxfMiqA&eMqdooWSx#cN)%T|Uyx#_y(6H3gQITlruTADgI zpm4qcWi>Cn?e=B{%sfOhD_0&JRMaHj3eUN7b<1|aEA9YW27h(eTgb8qgGVd9Q1AJW zb;62_#wxMWJji3J=8On$glWQeqp)g5@caEEx}|&YlzC~yT?scb6jqm7wBWZU7KAbH zXL;*Tlot>zM9{2#k}4&WoCm>??dy_>W5vmOIM^wUpSJ8 zCzYWj_aZ4^6X)VxVhP119F;XQ4Y-0d-VaBzi}iDc;Zk-vt4aMb`#NKFa5VSl7V`OU z2`p>Q2RUzD?Z<3cz{;bvPDG=OM%e_yVB^36F3vC~K&_~{G%Xg5AJ}!yrz{fjwRQDL zNwslcfQ#5<@>QhhL4wtA(zk4V6Aek9wm|Jm@MKt4)Ci9bB%_Hq-$-=pzCMOpA%n&a{3|RPa{KHQWe3@X<0xdJyCmoXF(Xa~d6qm8D zz^BD!?k7=3vm8>Qy?sf35?1&NEu*yT3E1gxU>8#7{hN)>lY&Ap3V$!z+SEylJdr*r z-mB2{2p^0phx904A(jnq1V5}QNzE?x_Hw0HN-CUuh`B(i&%5AoX=RRZw-x7@?f4l_ z_-pWTsh=H(-MNsK&6XCb|^h`j(yD=W~_ zj>>9geI5B7{1j~F71mc;Q{GzzY?Kxw~aLNf05d>o+!uKkwt_<1a!4T z2m)!-lJ`eM6%VM`CJm>Qx05&K%-R6c;N`WuF%K86Yh$b%_SO_<31xd|Z6*P|_G!dWsA3JLk%}Lc z)1%Tz;!M$PpNPr$-Te>ph8GLd;cII%Aiv3D{M3-DYI??4`VsO1rl~SGPYHy-H8-;? zsA>siQtD{d#t0QLwc~q?GdSIHC1}Drg-R&Inv0sHo~RO&@y%6*x*6$1j~y46d%pCs zz~imutQ4Ma?Kno8>5oaq^y*5~b(2c&(nvfLBDW|?oX*P`+N8f4M{%loxFX4kcHN7sG$BGR1!l0=WOSRH}?n~@?8YY zmf*6&qw!wuAeRW&K1N(8O=q?O+)gxtD*UOvC^oGTSO^!k?9u&VhflWjuAJFg=#M?^ zIa_NMX(gzI^X-dt4OwubeMeO`60xntJ}Iok_0C&VQ{%L;nUfUHftpZJs2SCVu(Z#& z_0*YNq6%SGlcdLXwmCjhNAM7QJG9g)^3ca1RFDh*4!!ESfLma;FCwW6aAWKD*|Tt9 z+mjXloH!YVZL+A&==3RBhpXV`_9Cd=?#`4@!+ol>)be{r2eH}j-oAM8lpfQR9=%DJ zEctMGdr*?ef=Ys^tKyjV?Ao}YDdD2%g@?B4o*Dx2(wA}KR-y_D@6xZ9pSm3TuYs2aUV|jNC^W!tC XZ{;t&CzxZ?MfRmW@A?@tlb` diff --git a/core/__pycache__/api_views.cpython-311.pyc b/core/__pycache__/api_views.cpython-311.pyc index 1311734e2e50f7adf3f7029740fa5fadbc6648a7..9181153dcf08d34ef4260003c5bd439f841f27d9 100644 GIT binary patch delta 1153 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 delta 2073 zcmah}YfzL`82-+;dzNK^WkEr?C?t771O-vTz`QVtnxdgekeafftO|N|y|QQ~<*1XX z@93Cv5y=aJIdmu$NR*i-%rqcT!|;;Xm^vdAX3(U)?=s-zpS~Z@_nhawo$GtHMzgtE zV?5&KW>D~Zl$w)qt)$$T7NsuMK>3hVI6lrYP_a0Zkv=nDqS9Y<*u3c9_1P7R3#?e< z2ewmQaKgi=6ZLk@0XJw^<_-CJ)94&6dT4sQweyYL+!oNy6veK!n7T*EJ)q6s+nB@6 zdOKgmM5LXYox$U@kGsLA+Y3YH_kstfeEfQMOX%hLAG;SgFCU@WLcy=xAHvSLs+K;` zQrHKkIJ;}HN?*7*rXL*G?F#l_cU_{AX|#EPN0F~;i+~y9yqGVr^+6MKcAapt>nwiV zWipvr$#JqpcaL%QirHw_*qzModFo+YYiZAV6O~}obh!O$IOJD4gLh0h>jwoB!yvZG z2WG@h=tFZCX9+G5Xc2<-VkVTt20?9=Kl~EwX=p?-fGLXg5G2J7l_$oAGIm$CytYEi zub?SjCdRGNuqOC!QUt$_Lb}w%=W`T_re*Q_D6EuT)9+|>_mGMvcsjGg)J19hHo;wR zN*rKlAxf}aj!dj(h8r{{_!K&3o#buEO5_)_Gnv}1z}DntQ`KBvy!z#Mv}k! zOo7cwL0pG(Et4mb>X_$aO7SPb6NF$U^sps)-rx>W{w75u{=r`}OBK)XZ>4<;417<# ziGQJhF(rtdhKQ6H#vm(Yl#d=W3k^cEE;YlJk!BT~6s-GIN&t67ULkL%7@3<9X*HRC z$3##++Ydf74TbS@Cvp?2HFC>brh0Z#5kZiRfK%y&y!n3_JSmQ#Ru;S)t}-vEUl_pq zqR=GU7uNBBe&o=fz!AKiGSK;mc4B(CzPO3`LwUv~#$l9Y9uGm=ZMoO-kyG?Qq_2y7 z@+%~GnZo`jAGrj5ZREuSIsozLb;0C%Xo@#*?hIrLD1v7`U)2fG48RARq0j)%T+i5sJRe zhSg~ctZSExj7(dzHh$K$H^fc2wBHY}@csQE%naUn5iA}i=Z)kaVoaypnCGiw3nA}d ze_t~tsi1<6s%bP_M6ehx9}IM{5M6>0><72@^@d)>VH;MHwuWFWftA2Uu#R9ALC@4g zHVy3rH>pStu>r*1LI^f=Reipl&!_V~d2S-eCHR1VcEbv1iwE&7$cD)W#g!`GhBQGQ zJ6xw>angFM7h|2UxipgPfa=l+(@u(WtWQ!^4o^!%_&yYqWLVkPI^3f6&nK`rh?0ry zGHjFKE|V!@3c*zPMy8H%tR(@*Jtspp$CUGkIj+I;3Nese5zY(HvPtf!XyNQ3WL8FF zFFaZ)b>Gt*>R~}uEEX=T>dzYBOjRf^LhmnSYt=&)y<5)gMdPZPfxH;ytMWk2RF(Y- z56^wHi8EgSBEEh0rq< zc7hy&Xc&GzokbPzInP`ii%cdp0gAqz#A0xtyj{dm%1_WL4Hus1Ftge?osEN;jfLzO zv^7pQN%9~Fz}{=^U|_niQ{MU^UDY@1mSvgKmRjZ1D@}||hL^7S_IBKcrRd$PW@L#d zs%M3SYoj(a5~Xe|r~?b?x{g-r=%0dGr=Yeds7DFvPJ$Ydqs<6vErObapcg9W847xF zf?k=R2P5d(3%WCcZi}Gv7j#5|c3u>-VTg{sbS&7hrgF0M>~yC-23NCkY1&v(FNgn_ cukjwloLUuxHjSd1a{ITcB+QUM|8ztB7i-`$oB#j- diff --git a/core/admin.py b/core/admin.py index aa3aeed..bb32de7 100644 --- a/core/admin.py +++ b/core/admin.py @@ -24,19 +24,26 @@ class ProfileInline(admin.StackedInline): verbose_name_plural = _('Profiles') fieldsets = ( (None, {'fields': ('role', 'is_approved', 'phone_number', 'profile_picture', 'address')}), + (_('Driver Assessment'), {'fields': ('driver_grade', 'is_recommended')}), (_('Driver Info'), {'fields': ('license_front_image', 'license_back_image', 'car_plate_number', 'bank_account_number'), 'classes': ('collapse',)}), (_('Location'), {'fields': ('country', 'governate', 'city'), 'classes': ('collapse',)}), ) class CustomUserAdmin(UserAdmin): inlines = (ProfileInline,) - list_display = ('username', 'email', 'get_role', 'get_approval_status', 'is_active', 'is_staff', 'send_whatsapp_link') - list_filter = ('is_active', 'is_staff', 'profile__role', 'profile__is_approved') + list_display = ('username', 'email', 'get_role', 'get_driver_grade', 'get_approval_status', 'is_active', 'is_staff', 'send_whatsapp_link') + list_filter = ('is_active', 'is_staff', 'profile__role', 'profile__is_approved', 'profile__driver_grade') def get_role(self, obj): return obj.profile.get_role_display() get_role.short_description = _('Role') + def get_driver_grade(self, obj): + if obj.profile.role == 'car_owner': + return obj.profile.get_driver_grade_display() + return "-" + get_driver_grade.short_description = _('Grade') + def get_approval_status(self, obj): return obj.profile.is_approved get_approval_status.short_description = _('Approved') @@ -192,6 +199,10 @@ class PlatformProfileAdmin(admin.ModelAdmin): (_('Financial Configuration'), { 'fields': ('platform_fee_percentage', 'enable_payment') }), + (_('Maintenance / Availability'), { + 'fields': ('accepting_shipments', 'maintenance_message_en', 'maintenance_message_ar'), + 'description': _('Toggle to allow or stop receiving new parcel shipments. If stopped, buttons will turn red and an alert will be shown.') + }), (_('Testing / Development'), { 'fields': ('auto_mark_paid',), 'description': _('Enable this to automatically mark NEW parcels as "Paid" (useful for testing so drivers can see them immediately).') @@ -356,4 +367,4 @@ class NotificationTemplateAdmin(admin.ModelAdmin): def has_delete_permission(self, request, obj=None): return False -admin.site.register(NotificationTemplate, NotificationTemplateAdmin) \ No newline at end of file +admin.site.register(NotificationTemplate, NotificationTemplateAdmin) diff --git a/core/api_views.py b/core/api_views.py index 267d59e..7f55810 100644 --- a/core/api_views.py +++ b/core/api_views.py @@ -47,6 +47,10 @@ class ParcelListCreateView(generics.ListCreateAPIView): return Parcel.objects.none() def perform_create(self, serializer): + from .models import PlatformProfile + platform_profile = PlatformProfile.objects.first() + if platform_profile and not platform_profile.accepting_shipments: + raise permissions.PermissionDenied(platform_profile.maintenance_message or "The platform is currently not accepting new shipments.") # Only shippers can create if self.request.user.profile.role != 'shipper': raise permissions.PermissionDenied("Only shippers can create parcels.") diff --git a/core/migrations/0027_profile_driver_grade_profile_is_recommended.py b/core/migrations/0027_profile_driver_grade_profile_is_recommended.py new file mode 100644 index 0000000..fc776c7 --- /dev/null +++ b/core/migrations/0027_profile_driver_grade_profile_is_recommended.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2.7 on 2026-02-01 12:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0026_profile_bank_account_number'), + ] + + operations = [ + migrations.AddField( + model_name='profile', + name='driver_grade', + field=models.CharField(choices=[('none', 'No Grade'), ('bronze_3', 'Bronze III'), ('bronze_2', 'Bronze II'), ('bronze_1', 'Bronze I'), ('silver', 'Silver'), ('gold', 'Gold')], default='none', max_length=20, verbose_name='Driver Grade'), + ), + migrations.AddField( + model_name='profile', + name='is_recommended', + field=models.BooleanField(default=False, verbose_name='Recommended by Shippers'), + ), + ] diff --git a/core/migrations/0028_platformprofile_accepting_shipments_and_more.py b/core/migrations/0028_platformprofile_accepting_shipments_and_more.py new file mode 100644 index 0000000..7d7ba3f --- /dev/null +++ b/core/migrations/0028_platformprofile_accepting_shipments_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 5.2.7 on 2026-02-01 13:07 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0027_profile_driver_grade_profile_is_recommended'), + ] + + operations = [ + migrations.AddField( + model_name='platformprofile', + name='accepting_shipments', + field=models.BooleanField(default=True, help_text='Toggle to allow or stop receiving new parcel shipments.', verbose_name='Accepting Shipments'), + ), + migrations.AddField( + model_name='platformprofile', + name='maintenance_message_ar', + field=models.TextField(blank=True, help_text='Message to show when shipments are stopped.', verbose_name='Maintenance Message (Arabic)'), + ), + migrations.AddField( + model_name='platformprofile', + name='maintenance_message_en', + field=models.TextField(blank=True, help_text='Message to show when shipments are stopped.', verbose_name='Maintenance Message (English)'), + ), + ] diff --git a/core/migrations/__pycache__/0027_profile_driver_grade_profile_is_recommended.cpython-311.pyc b/core/migrations/__pycache__/0027_profile_driver_grade_profile_is_recommended.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..19f9d8ee989662fbe4064cf0fa34516ef82b7ba8 GIT binary patch literal 1263 zcmZuv%}*0S6rcTIySo&Wis7KqN`TPBP{gPgq7fB>A_qx~sU(x_&d@IG?$p^uj7yqcq=7aY@luzwh)9A7rl51d%n+VaTUk4s7Sd;oj66B@ZdA$7_NrUoFyq@7Sp;t%d%6- zrVG2sSzM?1VcnfjQg(WJ8g{nqV|Ax(KVyDSw_9egT1gN>AYsj^RR$`tkO*@Mkat3v z`@I15^h=e{NpMr7{4xuCnurvk3tla(LL_s$ZfKN77X;28* zM8`rvAxw9WU`~A&MKmUqOxF9}oodvQl{e`Ab=wY7x?e(Wd)?Ukx54H-K&6&a>i(Xt}Bc!Ohpzgj|>VVv)_6~t`Y>ziv`IHZXs=-X&12hax h)1Z7Uw}XZ+{|&20vl{3!th>9{2M(m;=nAij`yX^BR%rkL literal 0 HcmV?d00001 diff --git a/core/migrations/__pycache__/0028_platformprofile_accepting_shipments_and_more.cpython-311.pyc b/core/migrations/__pycache__/0028_platformprofile_accepting_shipments_and_more.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8a93b44dfcc4e419784e7adcaab84ed24383aae7 GIT binary patch literal 1463 zcmb7@L2uMX6oALxU1x1JB~1_<8jytwid88aaiNt^q*S6v6+uWOIjmZZW<77c4z|aP zy;-`K=Fmfr-1rAAi2Rrwa){>22~Ha&Cr*7cStkuy31RO(zc=&V_ujmj`FD2KBls*n z{WD&z6Y^dg)zg?L#}80>O*r9JLQ<<^rFO@*h)o_5ZvRDi4Xo{274#2k@6N1Fjn|)% zpz%RZ2e$IkIFhW4MOG*$6&#WxtRnUI%EUPSh{|gMq+@Z?vAGplotjOczFifCskt6; zwr3_Wgx7h4J9{%1OW12(v@cOyLuvkx;_)kct&34#q|8pCeDftrRO`6>DmG|Nx$9MD zuub()NKh*)EBEfxT#8ZN74$HRlDOyxPXbRhsaXW2%A*t)HNd^0szvFG0Za74w8bIUJCcPl6jI*? z)m-EJ7rkJK*Nmvv&q5@?GBc#y4Q$z|>WLgCH{>ljMpyEQxBDW6_Mkh+%0U}mLO3Xe zY!8KeUgRu?qJFCxNnz;}Rq+=YL2CQyHO^;t0j=**kWK`_LNK z>}$^MnJ8$^@>TpcRBl|ZSKMTLx2tj#b{nZc*!R%WGvSlD!mmoLh=AGSN z^(${yJ$Mq-mCLtT7KvrvH9Khb?X*ja+RgahLhV!Y!Rawrl|Gsl{);UX - {% trans "Start Shipping" %} + {% if platform_profile.accepting_shipments %}{% trans "Start Shipping" %}{% else %}{% endif %} {% endif %} diff --git a/core/templates/core/index.html b/core/templates/core/index.html index f9a9518..4b7cb92 100644 --- a/core/templates/core/index.html +++ b/core/templates/core/index.html @@ -2,6 +2,14 @@ {% load static i18n %} {% block content %} + + +
@@ -9,8 +17,13 @@

{% trans "Small Shipments," %}
{% trans "Smart Delivery." %}

{% trans "masarX connects shippers with local car owners for fast, reliable, and trackable deliveries. Your cargo, our priority." %}

+ {% if not platform_profile.accepting_shipments and platform_profile.maintenance_message %} +
+ {{ platform_profile.maintenance_message }} +
+ {% endif %}
- {% trans "Start Shipping" %} + {% if platform_profile.accepting_shipments %}{% trans "Start Shipping" %}{% else %}{% endif %} {% trans "Learn More" %}
@@ -94,7 +107,21 @@
-
{{ driver.user.first_name }} {{ driver.user.last_name|first }}.
+
+ {{ driver.user.first_name }} {{ driver.user.last_name|first }}. + {% if driver.driver_grade != "none" %} + {% if "bronze" in driver.driver_grade %} + {{ driver.get_driver_grade_display }} + {% elif driver.driver_grade == "silver" %} + Silver + {% elif driver.driver_grade == "gold" %} + Gold + {% endif %} + {% endif %} + {% if driver.is_recommended %} + + {% endif %} +
{% trans "Driver" %}
diff --git a/core/templates/core/profile.html b/core/templates/core/profile.html index 5bcb89e..2ce2f21 100644 --- a/core/templates/core/profile.html +++ b/core/templates/core/profile.html @@ -4,6 +4,13 @@ {% block title %}{% trans "My Profile" %} | masarX{% endblock %} {% block content %} + + +
@@ -32,7 +39,21 @@ {{ profile.user.first_name|first|upper }}
{% endif %} -

{{ profile.user.get_full_name }}

+

+ {{ profile.user.get_full_name }} + {% if profile.driver_grade != "none" %} + {% if "bronze" in profile.driver_grade %} + {{ profile.get_driver_grade_display }} + {% elif profile.driver_grade == "silver" %} + Silver + {% elif profile.driver_grade == "gold" %} + Gold + {% endif %} + {% endif %} + {% if profile.is_recommended %} + + {% endif %} +

{{ profile.get_role_display }}

diff --git a/core/templates/core/shipper_dashboard.html b/core/templates/core/shipper_dashboard.html index ffc725c..b66f53b 100644 --- a/core/templates/core/shipper_dashboard.html +++ b/core/templates/core/shipper_dashboard.html @@ -2,10 +2,26 @@ {% load i18n core_tags %} {% block content %} + + +
+ {% if not platform_profile.accepting_shipments and platform_profile.maintenance_message %} +
+ +
+
{% trans "Service Notice" %}
+

{{ platform_profile.maintenance_message }}

+
+
+ {% endif %}

{% trans "My Shipments" %}

- {% trans "New Shipment" %} + {% if platform_profile.accepting_shipments %}{% trans "New Shipment" %}{% else %}{% endif %}
@@ -97,7 +113,24 @@

{% trans "Receiver" %}: {{ parcel.receiver_name }}

-

{% trans "Carrier" %}: {% if parcel.carrier %}{{ parcel.carrier.get_full_name|default:parcel.carrier.username }}{% else %}{% trans "Waiting for pickup" %}{% endif %}

+

{% trans "Carrier" %}: + {% if parcel.carrier %} + {{ parcel.carrier.get_full_name|default:parcel.carrier.username }} + {% if parcel.carrier.profile.driver_grade != "none" %} + {% if "bronze" in parcel.carrier.profile.driver_grade %} + + {% elif parcel.carrier.profile.driver_grade == "silver" %} + + {% elif parcel.carrier.profile.driver_grade == "gold" %} + + {% endif %} + {% endif %} + {% if parcel.carrier.profile.is_recommended %} + + {% endif %} + {% else %} + {% trans "Waiting for pickup" %} + {% endif %}

@@ -130,7 +163,23 @@ - {% if parcel.carrier %}{{ parcel.carrier.get_full_name|default:parcel.carrier.username }}{% else %}{% trans "Waiting" %}{% endif %} + {% if parcel.carrier %} + {{ parcel.carrier.get_full_name|default:parcel.carrier.username }} + {% if parcel.carrier.profile.driver_grade != "none" %} + {% if "bronze" in parcel.carrier.profile.driver_grade %} + + {% elif parcel.carrier.profile.driver_grade == "silver" %} + + {% elif parcel.carrier.profile.driver_grade == "gold" %} + + {% endif %} + {% endif %} + {% if parcel.carrier.profile.is_recommended %} + + {% endif %} + {% else %} + {% trans "Waiting" %} + {% endif %} @@ -223,7 +272,7 @@ {% else %}

{% trans "You have no active shipments." %}

- {% trans "Send your first shipment" %} + {% if platform_profile.accepting_shipments %}{% trans "Send your first shipment" %}{% else %}{% endif %}
{% endif %} diff --git a/core/views.py b/core/views.py index ce8936d..881c139 100644 --- a/core/views.py +++ b/core/views.py @@ -286,6 +286,11 @@ def dashboard(request): @login_required def shipment_request(request): + from .models import PlatformProfile + platform_profile = PlatformProfile.objects.first() + if platform_profile and not platform_profile.accepting_shipments: + messages.warning(request, platform_profile.maintenance_message or _("The platform is currently not accepting new shipments.")) + return redirect("dashboard") profile, created = Profile.objects.get_or_create(user=request.user) if profile.role != 'shipper': messages.error(request, _("Only shippers can request shipments.")) diff --git a/static/css/custom_v2.css b/static/css/custom_v2.css index 8587f17..ee1e4ac 100644 --- a/static/css/custom_v2.css +++ b/static/css/custom_v2.css @@ -238,4 +238,31 @@ h1, h2, h3, h4, h5, h6 { } [dir="rtl"] .text-left { text-align: right !important; -} \ No newline at end of file +} +/* Shipment Status Buttons */ +.btn-masarx-active { + background-color: #2fb344 !important; + color: white !important; + border: none !important; + padding: 12px 30px !important; + border-radius: 12px !important; + font-weight: 600 !important; +} +.btn-masarx-active:hover { + background-color: #248a35 !important; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(47, 179, 68, 0.2); +} +.btn-masarx-stopped { + background-color: #d63939 !important; + color: white !important; + border: none !important; + padding: 12px 30px !important; + border-radius: 12px !important; + font-weight: 600 !important; +} +.btn-masarx-stopped:hover { + background-color: #b02a2a !important; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(214, 57, 57, 0.2); +} diff --git a/staticfiles/css/custom_v2.css b/staticfiles/css/custom_v2.css index 440a5f1..ee1e4ac 100644 --- a/staticfiles/css/custom_v2.css +++ b/staticfiles/css/custom_v2.css @@ -26,11 +26,12 @@ h1, h2, h3, h4, h5, h6 { flex-direction: row !important; align-items: center !important; justify-content: space-between !important; - flex-wrap: nowrap !important; /* Ensure they stay on one line */ + flex-wrap: nowrap !important; gap: 2px !important; width: 100% !important; box-sizing: border-box !important; - /* overflow: hidden; Removed to allow dropdown list to show */ + position: relative !important; + z-index: 100 !important; } /* Hide any stray shortcuts that might have survived JS cleanup */ @@ -39,14 +40,21 @@ h1, h2, h3, h4, h5, h6 { } .masar-date-filter-row select { + appearance: auto !important; /* Force native dropdown appearance */ + -webkit-appearance: auto !important; + -moz-appearance: auto !important; + width: 32% !important; min-width: 0 !important; font-size: 11px !important; - padding: 0 2px !important; + padding: 2px !important; /* Relaxed padding */ height: 28px !important; - line-height: 1 !important; box-sizing: border-box !important; margin: 0 !important; + background-color: white !important; + border: 1px solid #ced4da !important; + border-radius: 4px !important; + color: #495057 !important; } .masar-date-filter-row input { @@ -57,22 +65,23 @@ h1, h2, h3, h4, h5, h6 { height: 28px !important; margin: 0 !important; box-sizing: border-box !important; + background-color: white !important; + border: 1px solid #ced4da !important; + border-radius: 4px !important; } /* Specific fix for date inputs to ensure they look clean */ .masar-date-filter-row input[type="date"] { - -webkit-appearance: none; /* Remove some browser defaults */ - appearance: none; line-height: 28px; } .masar-date-filter-row input[type="date"]::-webkit-inner-spin-button, .masar-date-filter-row input[type="date"]::-webkit-calendar-picker-indicator { - /* Make the calendar icon smaller and fit */ width: 12px; height: 12px; margin: 0; padding: 0; opacity: 0.6; + cursor: pointer; } @@ -229,4 +238,31 @@ h1, h2, h3, h4, h5, h6 { } [dir="rtl"] .text-left { text-align: right !important; -} \ No newline at end of file +} +/* Shipment Status Buttons */ +.btn-masarx-active { + background-color: #2fb344 !important; + color: white !important; + border: none !important; + padding: 12px 30px !important; + border-radius: 12px !important; + font-weight: 600 !important; +} +.btn-masarx-active:hover { + background-color: #248a35 !important; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(47, 179, 68, 0.2); +} +.btn-masarx-stopped { + background-color: #d63939 !important; + color: white !important; + border: none !important; + padding: 12px 30px !important; + border-radius: 12px !important; + font-weight: 600 !important; +} +.btn-masarx-stopped:hover { + background-color: #b02a2a !important; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(214, 57, 57, 0.2); +} diff --git a/staticfiles/js/admin_date_range_dropdown.js b/staticfiles/js/admin_date_range_dropdown.js index 210290d..320bcb3 100644 --- a/staticfiles/js/admin_date_range_dropdown.js +++ b/staticfiles/js/admin_date_range_dropdown.js @@ -1,7 +1,7 @@ (function($) { - // Masar Date Range Filter Layout Fix v4 + // Masar Date Range Filter Layout Fix v5 // Forces a horizontal layout for the Date Range Filter in Django Admin Sidebar - // v4: Switches to type="date", removes Django's calendar shortcuts to prevent layout breakage. + // v5: Removes Bootstrap classes from Select to ensure native popup works reliably. function initDateRangeDropdown() { @@ -30,7 +30,8 @@ var $wrapper = $('
'); // Create the Quick Select Dropdown - var $select = $('' + '' + '' + '' + @@ -39,7 +40,6 @@ ''); // CONVERT INPUTS TO HTML5 DATE - // This gives us a native picker and removes the need for Django's clunky JS shortcuts $gte.attr('type', 'date').removeClass('vDateField'); $lte.attr('type', 'date').removeClass('vDateField'); @@ -53,8 +53,6 @@ $wrapper.append($lte); // 3. AGGRESSIVE CLEANUP - // Remove text nodes, BRs, AND Django's calendar shortcuts (.datetimeshortcuts) - // We search the *original parent* for these leftovers. $parent.contents().filter(function() { return ( (this.nodeType === 3 && $.trim($(this).text()) !== '') || // Text @@ -63,9 +61,6 @@ ); }).remove(); - // Also hide any shortcuts that might be dynamically appended later (via CSS rule or observer) - // But removing the 'vDateField' class above usually prevents Django from initializing them. - // Logic for Dropdown Changes function formatDate(d) { var year = d.getFullYear(); @@ -87,7 +82,7 @@ var today = new Date(); if (val === 'custom') { - // Do nothing, let user edit + // Do nothing } else { if (val === 'any') { $gte.val(''); diff --git a/staticfiles/pasted-20260201-075032-c186b500.png b/staticfiles/pasted-20260201-075032-c186b500.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f9f686ee0d9c7429d0776c3c055a80596b665f GIT binary patch literal 14879 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 literal 0 HcmV?d00001 diff --git a/staticfiles/pasted-20260201-081838-f3ed2987.png b/staticfiles/pasted-20260201-081838-f3ed2987.png new file mode 100644 index 0000000000000000000000000000000000000000..46a64d7796d70007c8efa7a5c9a35db4764317a7 GIT binary patch literal 14516 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 literal 0 HcmV?d00001