From e6e1b4b0ecd898dfed5d239694685c92960640fe Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Fri, 23 Jan 2026 10:53:11 +0000 Subject: [PATCH] dem9 --- core/__pycache__/forms.cpython-311.pyc | Bin 7290 -> 7628 bytes core/__pycache__/models.cpython-311.pyc | Bin 8407 -> 10129 bytes core/forms.py | 12 +- ...oad_capacity_ar_truck_model_ar_and_more.py | 53 ++ ...ar_truck_model_ar_and_more.cpython-311.pyc | Bin 0 -> 1970 bytes core/models.py | 46 +- core/templates/core/admin_dashboard.html | 24 +- core/templates/core/shipment_detail.html | 6 +- .../templates/core/truck_owner_dashboard.html | 10 +- core/templates/core/truck_register.html | 77 ++- locale/ar/LC_MESSAGES/django.mo | Bin 14789 -> 14564 bytes locale/ar/LC_MESSAGES/django.po | 479 ++++++++++++------ 12 files changed, 509 insertions(+), 198 deletions(-) create mode 100644 core/migrations/0004_truck_color_ar_truck_load_capacity_ar_truck_model_ar_and_more.py create mode 100644 core/migrations/__pycache__/0004_truck_color_ar_truck_load_capacity_ar_truck_model_ar_and_more.cpython-311.pyc diff --git a/core/__pycache__/forms.cpython-311.pyc b/core/__pycache__/forms.cpython-311.pyc index d73f1af6833105ddc3b9e29b4616d285af0cbc4d..3413c54b969e0e1f1f2cbeb637cb13516676fce6 100644 GIT binary patch delta 690 zcmexmamJc&IWI340}xaP7H9SdZsaTB;T8n(f#9n!c z3-T(1Nl9)_h%yF-6oe>54xL;G)`Lk3@``w*FwWtN;!fcRX3*sP#TQaknw;&HUzDro zn_7~n$#;vZ1SAq)Qdy9CixCr&Qq^VQ`^)l1h?aLY+7NlHyAk^mZ0Bmg8zK_0)^dSms? zmK)0zZfw4>{l?lGD zS0p?p@8WkCQ_x?)x`cm2`2oHQX8sox0xl{9Tu}%BYMOkRUvIL$fGfK!zcAMa2L8#_ z0^xdMtUx9v@ew5U1w&$!pePe##N>qn!dyxq&&C1?>&eE#I~gOvg3%yB5Mec$OT>#Y zdUL2qEF)VoNHk^g4pDvXFc32XL?D@x3*@_R<`QUqE)nU`OIl{Gm(Cx5aZzpsL5s$RODf?G~vNm6QxjzUOLVrEWiQIP~tWsv|# z`3e3KM$O5#0%l@G7bA6B#C;=g<(u-21SENcOZxE1}d|$wA@Li89HBfUH*m5vm|U4MZq`h)5t|KDkw7 zr(7tAi>4$TBnBePCJP9OOfC>LV+@}hEhM@5fT#;2TRccMVKSGvzD5v;nF1nk+LQ^D zb>5sPF2}@}HMv1@3S<6cQ7Jt}pUEy#pSjXOT0w- diff --git a/core/__pycache__/models.cpython-311.pyc b/core/__pycache__/models.cpython-311.pyc index cab1269d3e44c64c28c4d771fa75aa351b11c8a2..bd7f79b10aae662981b74cb8943d0fef6f116480 100644 GIT binary patch delta 3935 zcmcInTWlN072PGNi77JKdph14prYI07NYRg`Kzr{l zDUlSNpCU``*_m_a-kCFdXJ++iaP9fVx9xTd16OJ)JAc=^*4WGnYdwR0ff2Z*DP^6p zvW$)yWd!3YBbY>X!A2WdA8%JVGjNt2u2JQzz}d>&+J8B-9f-yf;kQ8~9tcOdh1IEJ zM5EXs>hC$}1vdQDZgoS)Fn8hBF2TLZY(VjDnP6tzg6Av~_0m=LSx1yrY_no6mW(gX zF2!fX%|EcWSi>D1annoscUc$RZ+LB>6?_%*&|I91%!^5Zv}4_tnM*HH{ z&bfZUMPD_x(Kk4rb)zTiqyb~d=uvH6`a5HL!7W(9+p}SSvB9lfGfi5Havf@B!CTX7 zQ(aGA9Z%omJqs0`HrH`&e!OdiXN&6TuNrPkji>)!Yjw8Gw1QVbztC28gL!DHcA9Ay z+E`Bcauz@{n2-x5rHVkZN54%qY7a+U$DGk$PDRD*Na`?zXMmu0kij9cL zcuo{zi}940=hZgB>E(c`1{GLB(=u;)7lk!{SmhnRlHLXX!!nDb`D`na>njz!KFdE@3{KNye9B zs(UO415`{v-*pt`iq7vT^f47Bu zDXk=#`qjms*jbCvSXTgm#mang8sJSPS7EH)lLYpPx?_>XYs|twWFoG2Eo7OtpT_b5CD4*BM3%#7Z>Q*#Kc*(U&2m=CPJZx7rU zxHbJ}Ye=$&)&;ry2t2pkKH1$R*}ArP_l<&N>Zqd~{Pn2+bJ0!)AaYr`DTRrOq8rrG zuH1t5MiqNmq-xK*tCg$dQ5;HeL*I;5vAL!n9>wr|D`GLmZzYqUB0z?Dyodf!8^Mjpw5)Y-N(v#5Rq&Vm=u{0Nv2Ts ztf=}iWk0t?P&F&21nx*`BB&)&s9D;(iJ;nR6G0`1VYp-j0nhBoXeZf+l}>~%1k|Ef zM$$x_pIsaimx%${D6$Rd7Z>4U0M`!b28fVBEIxn{ieJjH-2ya(Kj3dRa zqjJ~L2MKBFE0X72(Q{7roP#iY;QCdW53IBBJMatsE&l${gPg>V7x{6SA744SiJr+htQ2P2mbtc*j)7 z3&Vhexxuf!z~0Sc_TTE*C+WZVZVt~-a)^c<&u~sGx@gSN>cCT*JcEFz963n8vhcLD|=(@>rYIa`SeB?IkI6OKDPygy2wW__4Pl?%FJe8?0jGqv*S@@5mEN+>;?2i;QaeS?~&z7`?15(8p6Y0eq&ZVm0d&t*& zU*AOoLKg2;fEDdW!>zB_)whS%C`;DpFI&G6#4jH>Z7uLnjOoh@Vj`DSxC9a53o2@W zMgwh;KoG5Njf^d2MG}K;?CbMMk^BTK*XV0)eQcQizU`e$KY)6aQ;c)*Y&@4E#w1JM3pCM>0v{M~(EkH%SAahN delta 2226 zcmaJ?ZEO=|9KY+!wOz06uI<`xE91I#FGrS5OrT4cz_u`mY!#FQtS?>HJ87|RK6hnd z5mwB=DG)awLooUQ6EZ`9#AJyve!-wI#zeB28kZv)_@W{4119)IKj`y+ZWS4oyFS1E zU!Ujs-T!~jEj;t%ko#kotAQcc zJ25$GCKoj|5R-Gwv~Zns@I-eR`UZ!aD4sQEtkJ|MHpQx#uQo2480HEY#w820%pwu5 z)C^2Qco2&R*>+C$J;z9XJkRc2y3Jl-Es_a&@$2SqSpo01oZ8+@GIhsDCWS_`N=`Bw;&g9;8lh@Dm*U9w#Z|2N@_tivG1GRk;%^~~Or8Zp+JY2>^ zkYfG2J>+ z%oWkJ%b00jHm#MBGHs*Fs{IEfv+gLD966Gc)QYGHf7ft`_2Vw*vok?5n`F`(XlPO+ zd(iDASSnd4qA+o)P+`$%DCn@YMf#FSRYS>S7lgDBs4%PEzc4|t*g+o&}U&j1G-+nZc;`{{ovr-3pa zXnZRQ+d`WFL;%|Ry&wVj$xv^y*erDKSQR4kfvOO>2=~}W{g?VbOD_wS*O_H_nUAgTu__;{?7~OAKZUp6V_55YFm~U&bj$a-iS5JZ16|w` zz+yAL5r}b(APV^JKx-rP5Q+gb0rcZd!3j2m&jdS!M=FM|2br@q zAT8Yq&9lbo13H{OOY<%FSgsF3-1u~Ox04cCqqrI_Z-$Q2?P?}l$}0t}ej_@EvvREs z)uB6l- zPdWoL0PI+bxAn4|NOfG<_$w)BMm)Zi@^Wa|yrOEUe5pP$&$yzhsl!T*+(FzL>6wAK z;*w`QxyMsF2^*Lopxe^Lf(Fl$GI#^*^~!b}902>tP-h8Lj2qvGoN$Rmr(TIgC-Hdu zYa)D?Bs2Zg=(ghI5hbmuI+sQYIYJ~03HrIcXCu6ky3a5s%c_EsB~*MRn^Vvk;z{7n zjzLz$lO11AoPy~%-IhtIDNRG@9AsM5)KSIwnw=&(dJ}@oh;o|)!`lQ@co3p!oK(61 zDGx6-Py9(d7d>bbi4>Q7_?PJEeNiGKI8u%I>9Ik3gO-v$4cH@s>~&|%pY}m=I+b(E tc66S2;ha>L@RyyFIM&tI>to6L{V2?ho*nxg?DroyH{o}?{<4T9{~u>!0o4Ei diff --git a/core/forms.py b/core/forms.py index f03e4b7..cf0410e 100644 --- a/core/forms.py +++ b/core/forms.py @@ -34,17 +34,21 @@ class TruckForm(forms.ModelForm): class Meta: model = Truck fields = [ - 'truck_type', 'model', 'year', 'plate_no', - 'load_capacity', 'color', 'truck_picture', + 'truck_type', 'truck_type_ar', 'model', 'model_ar', 'year', 'plate_no', + 'load_capacity', 'load_capacity_ar', 'color', 'color_ar', 'truck_picture', 'registration_front', 'registration_back', 'driver_license' ] widgets = { - 'truck_type': forms.TextInput(attrs={'class': 'form-control', 'placeholder': _('e.g. Flatbed, Trailer')}), + 'truck_type': forms.TextInput(attrs={'class': 'form-control', 'placeholder': _('e.g. Flatbed')}), + 'truck_type_ar': forms.TextInput(attrs={'class': 'form-control', 'placeholder': _('مثلا سطحة')}), 'model': forms.TextInput(attrs={'class': 'form-control'}), + 'model_ar': forms.TextInput(attrs={'class': 'form-control'}), 'year': forms.NumberInput(attrs={'class': 'form-control'}), 'plate_no': forms.TextInput(attrs={'class': 'form-control'}), 'load_capacity': forms.TextInput(attrs={'class': 'form-control'}), + 'load_capacity_ar': forms.TextInput(attrs={'class': 'form-control'}), 'color': forms.TextInput(attrs={'class': 'form-control'}), + 'color_ar': forms.TextInput(attrs={'class': 'form-control'}), 'truck_picture': forms.FileInput(attrs={'class': 'form-control'}), 'registration_front': forms.FileInput(attrs={'class': 'form-control'}), 'registration_back': forms.FileInput(attrs={'class': 'form-control'}), @@ -80,4 +84,4 @@ class BidForm(forms.ModelForm): # Only allow bidding with approved trucks self.fields['truck'].queryset = Truck.objects.filter(owner=user, is_approved=True) if not self.fields['truck'].queryset.exists(): - self.fields['truck'].help_text = _("You must have an approved truck to place a bid.") + self.fields['truck'].help_text = _("You must have an approved truck to place a bid.") \ No newline at end of file diff --git a/core/migrations/0004_truck_color_ar_truck_load_capacity_ar_truck_model_ar_and_more.py b/core/migrations/0004_truck_color_ar_truck_load_capacity_ar_truck_model_ar_and_more.py new file mode 100644 index 0000000..a3a6343 --- /dev/null +++ b/core/migrations/0004_truck_color_ar_truck_load_capacity_ar_truck_model_ar_and_more.py @@ -0,0 +1,53 @@ +# Generated by Django 5.2.7 on 2026-01-23 10:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0003_truck_is_approved'), + ] + + operations = [ + migrations.AddField( + model_name='truck', + name='color_ar', + field=models.CharField(blank=True, max_length=50, verbose_name='Color (AR)'), + ), + migrations.AddField( + model_name='truck', + name='load_capacity_ar', + field=models.CharField(blank=True, max_length=100, verbose_name='Load Capacity (AR)'), + ), + migrations.AddField( + model_name='truck', + name='model_ar', + field=models.CharField(blank=True, max_length=100, verbose_name='Model (AR)'), + ), + migrations.AddField( + model_name='truck', + name='truck_type_ar', + field=models.CharField(blank=True, max_length=100, verbose_name='Truck Type (AR)'), + ), + migrations.AlterField( + model_name='truck', + name='color', + field=models.CharField(max_length=50, verbose_name='Color (EN)'), + ), + migrations.AlterField( + model_name='truck', + name='load_capacity', + field=models.CharField(max_length=100, verbose_name='Load Capacity (EN)'), + ), + migrations.AlterField( + model_name='truck', + name='model', + field=models.CharField(max_length=100, verbose_name='Model (EN)'), + ), + migrations.AlterField( + model_name='truck', + name='truck_type', + field=models.CharField(max_length=100, verbose_name='Truck Type (EN)'), + ), + ] diff --git a/core/migrations/__pycache__/0004_truck_color_ar_truck_load_capacity_ar_truck_model_ar_and_more.cpython-311.pyc b/core/migrations/__pycache__/0004_truck_color_ar_truck_load_capacity_ar_truck_model_ar_and_more.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..da4c22de08708e5aa31b72b1427282e45d8f9c6b GIT binary patch literal 1970 zcmb7E&u`O66dpUV>zIa?q5NJ@)gpw2L@MA|A*u?{qNEbtcGX7Onu%vf(>it-CqOF> zJ#g3~xBU-bSM(3yxJOPaNAjVXE2rLq%8ApyapJUTqCo9r^4^>IzHi=}m-&#*nh2g3 zPlL)A9icDMNgl0Z9L$387ovzNE~+X;rK%QH1*zyUqUu{jQ%u=NC7}0Uee8P06ixqz zENx#-TdFXtl`<#withzNulkg^fs-KR?^wq5?K+{yC`tC^Y7IuwZzmFx;$70e`CuSKPz>+;N%jp3uV?V`WbgQ7!@nb9+J+q77 zLq$KrxBU#P%2AH9$2d$nabk{heH`ac%yFTQc$LCC( zpP8AtYu9mnzhqQsaYz`B@A}*(d};p zytZBDmFw$b^d;jZKVY^;stlHxaa+fpNXwYeo>!Pl#klJeYCEJxoJxHQ6!xhUzdv+YgSw`vT~+ha>Ihsh;y+w)qy_3n-zE?Abzv!KCG!yvLf z`hB{vTxhXwS5$_~L(yJEm|U<-Vc2o1wk=HC26)3|V2|4Niw1FJ`qHDU#yrYAr@{g* zF9%`FQTj-hg{P&PnO`S7_Juj;)>&fvHP*Q<{y_(@5Pfgt*8M8WHA)Sy-pH}n%xTnp zo_po<%>XLPa`KRKhu2IFj{9EcxRaypxIOiNigvJBZ>!U1pg@r z?R4Lkjxx7eDRn~M$+t|D`Q=YDGOp}hxVCrZ${wD2cO$}6e@}dx`aB!rl_p+^@JeeW zoiV>67{1Bj7;5?mYC6n63o&V85@9kNc2sQob3VkYO}rZ6)#0egUa>zyyw=2P5ndYr zyCyTc8fSK~3oCtk6XJXm=OdgSjyaTa!UszsUT)&$2rmx@9SS-Bj)u6<#DxeKhGVXF zHwQvbL%i6;ixFNt4*FHGu)gy|zI-}4-~}r!GIWD@W&buU#oZeBXuAcb {{ truck.owner.username }}
{{ truck.owner.email }} - {{ truck.truck_type }}
- {{ truck.model }} ({{ truck.year }}) - {{ truck.color }} + {{ truck.display_truck_type }}
+ {{ truck.display_model }} ({{ truck.year }}) - {{ truck.display_color }} {{ truck.plate_no }}