From 8054fdf3a0e3fd037dedb698ac34616defc33be4 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Fri, 23 Jan 2026 10:32:41 +0000 Subject: [PATCH] demo7 --- core/__pycache__/urls.cpython-311.pyc | Bin 1595 -> 1706 bytes core/__pycache__/views.cpython-311.pyc | Bin 11931 -> 12741 bytes core/templates/core/admin_dashboard.html | 42 +++ core/urls.py | 1 + core/views.py | 15 +- locale/ar/LC_MESSAGES/django.mo | Bin 9674 -> 14329 bytes locale/ar/LC_MESSAGES/django.po | 411 ++++++++++++++++------- 7 files changed, 340 insertions(+), 129 deletions(-) diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc index 6f3a076c104e2244586238f853250c61b6892f83..7e0c4eb508cbf19349e33e88ab2b88ef1f5435c1 100644 GIT binary patch delta 189 zcmdnZvx--JIWI340}#yiEzaa*VPJR+;=q6)l=0bXqq-u~#0RXJvZ>5j!Z7I+xixId zm>C#W12F`o^G1oJ$OkiMDohSyI<78TQdF9pt#6Z=S7HTb#%HG3=@*w47o_H;=-=Xn zvL*{LA7T`pe3iMMsYqmUB1-_5JkU5sATFM;csC2<;=q6al<`?@qq-s!S2|CWaEfd&gQnc%GN$8` vvzd1@icD5#>7Trt#g|JCsFo3kiz^lju`*89Vk_jAS531YVgA$p3!m%zzDSqMEC1wFJLdg-ZiZXtExe$MZF&-eU(_x#Rc|GT*D zxz%dY;jwUDN!;-~v6X}A^?DJwWJYpkbjx_>1=-fdWnL<~pySKcN1)vZp!%U`QV$9! zU}{Dwa~nEpYNDm0RXgf-)uE3j2SumL5oc*dpUrEATeRd@GN=od3IGh~r8Qifw~MJ1 z9G{e>fi#?mk1FW9b&Y{txD;Bm1;H0}-xdYFJ+^AezrzaKtgsQ>VudW*nPWS5*vK{; z+4N`G-W=OIZ%2aTT=8y|P_P;gn+iINdE-xqnsL0Mz-hI$0z6WgOL zIlAO=&ogn0Ys-2)(EI=_LK0dB)vaNdaSscO$K@?fs0yB)mS+&D` zoCd>as=6BtqPNw2<$*14kf#$$T7f0xOg{!Pduy>P;H}5(^)@i0SbU(~_u45eJgp00 zzOSq8I7k6U$kBgVK$bK?2S%O}$HpMJJWoRxQ4<7%i1#%xNgOV#mwey!Ktd<^u%8G# z&@6m0WQfzI*$G+*w0>*ZWwgro)Lh5n|GhPd@wl8y4-6$FIE8oDk+1P9XjJV@C%`H4 z!dkl_X&NN$f#iaaRMzY(I>?cjywk6u(2a3vVoYv_vv>*cr_`%+%^YyLfV-f>_(AFP Tj*O?ECqf9l@wcN-{@1?&2ejDS delta 545 zcmX|-PiPZC6vpRmvPn#uNrKIvE~X8br5SDNS`{^z92BHYD+nF}CB6(A=Floko355y>P+Ei5L~=boQEcUDT;}m*dWxt+Vy+B9M!==_)1Hzb=NwWwu?Gh zu_rZMyJTL}w|#ZjP6V{^wB%@hE)}hvGSZ_b_Yw9I>d3`J=mNR-B&_Q0#n>}r8qf`C~LXAyVphh#1GyzF} zmDH)E;*ydtm@JSU*Z3Pbae3X_ywtAAYx)R!`y=YXfdXVK$Pbyu?*KEB*T;tj8OQLG JQ$zdUv;T7zg|q+w diff --git a/core/templates/core/admin_dashboard.html b/core/templates/core/admin_dashboard.html index 0b50a02..a354ae6 100644 --- a/core/templates/core/admin_dashboard.html +++ b/core/templates/core/admin_dashboard.html @@ -104,6 +104,48 @@ + +
+
+
{% trans "Manage Approved Trucks" %}
+
+
+
+ + + + + + + + + + + {% for truck in approved_trucks %} + + + + + + + {% empty %} + + + + {% endfor %} + +
{% trans "Owner" %}{% trans "Truck Details" %}{% trans "Plate No" %}{% trans "Actions" %}
{{ truck.owner.username }} + {{ truck.truck_type }}
+ {{ truck.model }} ({{ truck.year }}) +
{{ truck.plate_no }} + + {% trans "Suspend" %} + +
{% trans "No approved trucks yet." %}
+
+
+
+

{% trans "Quick Actions" %}

diff --git a/core/urls.py b/core/urls.py index 6d4fb4d..f04db88 100644 --- a/core/urls.py +++ b/core/urls.py @@ -10,6 +10,7 @@ urlpatterns = [ path("dashboard/", views.dashboard, name="dashboard"), path("truck/register/", views.truck_register, name="truck_register"), path("truck//approve/", views.approve_truck, name="approve_truck"), + path("truck//suspend/", views.suspend_truck, name="suspend_truck"), path("shipment/post/", views.post_shipment, name="post_shipment"), path("marketplace/", views.marketplace, name="marketplace"), path("shipment//", views.shipment_detail, name="shipment_detail"), diff --git a/core/views.py b/core/views.py index b069d85..f30c2dc 100644 --- a/core/views.py +++ b/core/views.py @@ -51,12 +51,14 @@ def dashboard(request): }) elif profile.role == 'ADMIN' or request.user.is_superuser: pending_trucks = Truck.objects.filter(is_approved=False).order_by('-created_at') + approved_trucks = Truck.objects.filter(is_approved=True).order_by('-created_at') context = { 'total_users': User.objects.count(), 'total_trucks': Truck.objects.count(), 'total_shipments': Shipment.objects.count(), 'total_bids': Bid.objects.count(), 'pending_trucks': pending_trucks, + 'approved_trucks': approved_trucks, } return render(request, 'core/admin_dashboard.html', context) else: @@ -95,6 +97,17 @@ def approve_truck(request, truck_id): messages.success(request, _("Truck approved successfully!")) return redirect('dashboard') +@login_required +def suspend_truck(request, truck_id): + if not (request.user.profile.role == 'ADMIN' or request.user.is_superuser): + return redirect('dashboard') + + truck = get_object_or_404(Truck, id=truck_id) + truck.is_approved = False + truck.save() + messages.warning(request, _("Truck has been suspended.")) + return redirect('dashboard') + @login_required def post_shipment(request): if request.user.profile.role != 'SHIPPER': @@ -180,4 +193,4 @@ def accept_bid(request, bid_id): bid.shipment.save() messages.success(request, _("Bid accepted! Shipment is now in progress.")) - return redirect('shipment_detail', shipment_id=bid.shipment.id) + return redirect('shipment_detail', shipment_id=bid.shipment.id) \ No newline at end of file diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo index 993798e6c2aa0c6276c2d1d2d8285173fe8bd72f..d1f9cdce77606a8e2c2c857c3b318bc5c59d9f52 100644 GIT binary patch literal 14329 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 Ip=dV$3loAIx&QzG delta 3584 zcmX}udvKIj9mesKa%&)#B;1me%bO5F$c;cqC@HrsNq}|}E=fRcEt_OXR+3%1y9o(0 zT}lbifR5$Z%ZyqSrp6#`q^SsHbgKQM!Z=FXQFq6dvD!Lz9E(;vqqSbX&+dz7_`RR^ zJ@0wX{cQMW=*B~_TiN5EHl)MEY~r(V#th>-lem!jCmS;n2k>q@f;sr4n|}^J$McAr z{{uJwrt7b zPNo)a&2*fBg}4A~-RHfi@_ncdJb`NHDb!LvhZ@kgP~}E4S$`F{Ookf#pd5A#t4E8P6$sE&DY4z{6Y<_KyN4!Q4NKn>^`YJfLT^}UJe*ezr%=HnPQVQ$8e zs}A(xTs({#(brIGI^yQPg6h!Qs0!afHSi&-{9mvf|AQJx85bQl4=%L zlAGt!*d(Zm7qHdUUoXNBib9H#!!>IEthAV|;|es}bchTvfOnKaU$x`R9iZ+8j(y3^KaVPR4YfIcff~rWZvO3g%zq&n2HKs5tT(xnPI*3OIos{J||4Ls>UQ?G^&^cAo zvDrZ^Ar=!s;(lTqv6@iYlEOrA8F7%%--j|X;M0)bhn9Z*GUsaQP--B!2d$CFvjb9r}N$aS! zy_2fB(QdCGT8ScJfKd7Z;Z5Fgu91`Z|1^oaHH42~nCa3J@ApR!bo<)E6@IUR*7AZGnkwF*lcxcadw1y z!>LB?oLtX@hHxktwa@0x&kglP{ifO9-W&Eib)oiN_0Sg$gn~9J@3?(A&ugph9UQMd z+1A-b_Nm#q_PyCTJ4|cD9}fC@{AOFgf6%G(M}2|rh}rHBbaq8u7HE# z>K_R8Iz6F2y1&LL_E&UPIMtPvPFtwoA8|taoPD8C$0FN5r_fHEyUOmE+t{(A-m|s5 zaZ`Dn$Jwx{wsB+W&P`4AlfAx3w7ezk3r4!NWVKF1tJmu^c^d1TmGzCDjo!7My1K3P z&CRPR8tm-#b^6O&{Jx%A$LncY-|AUUIj?tZcc3B^?p!_g;oSSuY{<#6qfSLe;#mA@ z{8IcoiJ|z2ZOT7kKgh4n8H|r6h7!l)Bk|Kte3&AmiIZGM?DT>I_EN!D?U~9P+dcnB zc2(ik^K}c-Y*)8ri0NKW#_s1tuxpT)ne8C_&ws426@mT&nV1td|# diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index 38e53f8..bf707df 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -3,15 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-01-23 09:04+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"POT-Creation-Date: 2026-01-23 10:30+0000\n" +"PO-Revision-Date: 2026-01-23 10:35+0000\n" +"Last-Translator: Gemini\n" +"Language-Team: Arabic\n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,19 +18,35 @@ msgstr "" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: config/settings.py:188 +#: config/settings.py:192 msgid "English" msgstr "الإنجليزية" -#: config/settings.py:189 +#: config/settings.py:193 msgid "Arabic" msgstr "العربية" -#: core/models.py:9 core/templates/registration/register.html:19 +#: core/forms.py:9 +msgid "Confirm Email" +msgstr "تأكيد البريد الإلكتروني" + +#: core/forms.py:29 +msgid "The two email fields didn't match." +msgstr "حقلا البريد الإلكتروني غير متطابقين." + +#: core/forms.py:42 +msgid "e.g. Flatbed, Trailer" +msgstr "مثال: مسطحة، مقطورة" + +#: core/forms.py:83 +msgid "You must have an approved truck to place a bid." +msgstr "يجب أن يكون لديك شاحنة معتمدة لتقديم عرض." + +#: core/models.py:9 msgid "Shipper (Need Goods Moved)" msgstr "شاحن (بحاجة لنقل بضائع)" -#: core/models.py:10 core/templates/registration/register.html:20 +#: core/models.py:10 msgid "Truck Owner (Service Provider)" msgstr "صاحب شاحنة (مزود خدمة)" @@ -39,19 +54,21 @@ msgstr "صاحب شاحنة (مزود خدمة)" msgid "Administrator" msgstr "مدير النظام" -#: core/models.py:22 core/templates/core/truck_register.html:15 +#: core/models.py:22 core/templates/core/truck_register.html:23 msgid "Truck Type" msgstr "نوع الشاحنة" -#: core/models.py:23 core/templates/core/truck_register.html:19 +#: core/models.py:23 core/templates/core/truck_register.html:28 msgid "Model" msgstr "الموديل" -#: core/models.py:24 core/templates/core/truck_register.html:25 +#: core/models.py:24 core/templates/core/truck_register.html:35 msgid "Year" msgstr "السنة" -#: core/models.py:25 core/templates/core/truck_register.html:29 +#: core/models.py:25 core/templates/core/admin_dashboard.html:63 +#: core/templates/core/admin_dashboard.html:119 +#: core/templates/core/truck_register.html:40 msgid "Plate No" msgstr "رقم اللوحة" @@ -59,11 +76,11 @@ msgstr "رقم اللوحة" msgid "Load Capacity" msgstr "حمولة الشاحنة" -#: core/models.py:27 core/templates/core/truck_register.html:33 +#: core/models.py:27 core/templates/core/truck_register.html:45 msgid "Color" msgstr "اللون" -#: core/models.py:30 core/templates/core/truck_register.html:47 +#: core/models.py:30 core/templates/core/truck_register.html:61 msgid "Truck Picture" msgstr "صورة الشاحنة" @@ -72,68 +89,70 @@ msgid "Registration Front" msgstr "التسجيل (الوجه الأمامي)" #: core/models.py:32 -#, fuzzy -#| msgid "Register Your Truck" msgid "Registration Back" -msgstr "سجل شاحنتك" +msgstr "التسجيل (الوجه الخلفي)" -#: core/models.py:33 core/templates/core/truck_register.html:51 +#: core/models.py:33 core/templates/core/truck_register.html:66 msgid "Driver License" msgstr "رخصة القيادة" -#: core/models.py:42 core/templates/core/marketplace.html:13 +#: core/models.py:35 +msgid "Is Approved" +msgstr "معتمد" + +#: core/models.py:43 core/templates/core/marketplace.html:13 msgid "Open for Bids" msgstr "مفتوح للعروض" -#: core/models.py:43 +#: core/models.py:44 msgid "In Progress" msgstr "قيد التنفيذ" -#: core/models.py:44 +#: core/models.py:45 msgid "Completed" msgstr "مكتمل" -#: core/models.py:45 +#: core/models.py:46 msgid "Cancelled" msgstr "ملغي" -#: core/models.py:48 core/templates/core/post_shipment.html:14 +#: core/models.py:49 core/templates/core/post_shipment.html:22 msgid "Goods Description" msgstr "وصف البضائع" -#: core/models.py:49 core/templates/core/post_shipment.html:18 +#: core/models.py:50 core/templates/core/post_shipment.html:27 msgid "Weight/Volume" msgstr "الوزن/الحجم" -#: core/models.py:50 core/templates/core/post_shipment.html:23 +#: core/models.py:51 core/templates/core/post_shipment.html:33 msgid "Origin" msgstr "المصدر" -#: core/models.py:51 core/templates/core/post_shipment.html:27 +#: core/models.py:52 core/templates/core/post_shipment.html:38 msgid "Destination" msgstr "الوجهة" -#: core/models.py:52 core/templates/core/post_shipment.html:32 +#: core/models.py:53 core/templates/core/post_shipment.html:44 msgid "Requested Delivery Date" msgstr "تاريخ التسليم المطلوب" -#: core/models.py:64 +#: core/models.py:65 msgid "Pending" msgstr "قيد الانتظار" -#: core/models.py:65 +#: core/models.py:66 msgid "Accepted" msgstr "مقبول" -#: core/models.py:66 +#: core/models.py:67 msgid "Rejected" msgstr "مرفوض" -#: core/models.py:71 +#: core/models.py:72 msgid "Offer Amount" msgstr "قيمة العرض" -#: core/models.py:72 +#: core/models.py:73 msgid "Comments" msgstr "تعليقات" @@ -151,7 +170,7 @@ msgstr "تسجيل الخروج" #: core/templates/base.html:98 core/templates/registration/login.html:11 #: core/templates/registration/login.html:22 -#: core/templates/registration/register.html:32 +#: core/templates/registration/register.html:42 msgid "Login" msgstr "تسجيل الدخول" @@ -183,6 +202,122 @@ msgstr "اتصل بنا" msgid "Contact" msgstr "اتصال" +#: core/templates/core/admin_dashboard.html:4 +msgid "Admin Dashboard" +msgstr "لوحة تحكم المسؤول" + +#: core/templates/core/admin_dashboard.html:10 +msgid "Administrator Dashboard" +msgstr "لوحة تحكم مدير النظام" + +#: core/templates/core/admin_dashboard.html:11 +msgid "System overview and management" +msgstr "نظرة عامة على النظام وإدارته" + +#: core/templates/core/admin_dashboard.html:15 +msgid "Go to Django Admin" +msgstr "اذهب إلى إدارة دجانغو" + +#: core/templates/core/admin_dashboard.html:25 +msgid "Total Users" +msgstr "إجمالي المستخدمين" + +#: core/templates/core/admin_dashboard.html:32 +msgid "Registered Trucks" +msgstr "الشاحنات المسجلة" + +#: core/templates/core/admin_dashboard.html:39 +msgid "Total Shipments" +msgstr "إجمالي الشحنات" + +#: core/templates/core/admin_dashboard.html:46 +msgid "Active Bids" +msgstr "العروض النشطة" + +#: core/templates/core/admin_dashboard.html:54 +msgid "Pending Truck Approvals" +msgstr "طلبات اعتماد الشاحنات المعلقة" + +#: core/templates/core/admin_dashboard.html:61 +#: core/templates/core/admin_dashboard.html:117 +msgid "Owner" +msgstr "المالك" + +#: core/templates/core/admin_dashboard.html:62 +#: core/templates/core/admin_dashboard.html:118 +msgid "Truck Details" +msgstr "تفاصيل الشاحنة" + +#: core/templates/core/admin_dashboard.html:64 +msgid "Documents" +msgstr "المستندات" + +#: core/templates/core/admin_dashboard.html:65 +#: core/templates/core/admin_dashboard.html:120 +msgid "Actions" +msgstr "الإجراءات" + +#: core/templates/core/admin_dashboard.html:80 +msgid "Photo" +msgstr "الصورة" + +#: core/templates/core/admin_dashboard.html:83 +msgid "Reg. Front" +msgstr "التسجيل (أمام)" + +#: core/templates/core/admin_dashboard.html:86 +msgid "Reg. Back" +msgstr "التسجيل (خلف)" + +#: core/templates/core/admin_dashboard.html:92 +msgid "Approve" +msgstr "اعتماد" + +#: core/templates/core/admin_dashboard.html:98 +msgid "No trucks awaiting approval." +msgstr "لا توجد شاحنات في انتظار الاعتماد." + +#: core/templates/core/admin_dashboard.html:110 +msgid "Manage Approved Trucks" +msgstr "إدارة الشاحنات المعتمدة" + +#: core/templates/core/admin_dashboard.html:134 +msgid "Suspend" +msgstr "تعليق" + +#: core/templates/core/admin_dashboard.html:140 +#: core/templates/core/truck_owner_dashboard.html:50 +msgid "No approved trucks yet." +msgstr "لا توجد شاحنات معتمدة بعد." + +#: core/templates/core/admin_dashboard.html:150 +msgid "Quick Actions" +msgstr "إجراءات سريعة" + +#: core/templates/core/admin_dashboard.html:159 +msgid "View Landing Page" +msgstr "عرض الصفحة الرئيسية" + +#: core/templates/core/admin_dashboard.html:160 +msgid "See how the site looks to visitors" +msgstr "شاهد كيف يبدو الموقع للزوار" + +#: core/templates/core/admin_dashboard.html:172 +msgid "Manage Shipments" +msgstr "إدارة الشحنات" + +#: core/templates/core/admin_dashboard.html:173 +msgid "Approve or moderate shipments" +msgstr "اعتماد أو مراقبة الشحنات" + +#: core/templates/core/admin_dashboard.html:185 +msgid "Manage Users" +msgstr "إدارة المستخدمين" + +#: core/templates/core/admin_dashboard.html:186 +msgid "Review registered profiles" +msgstr "مراجعة الملفات الشخصية المسجلة" + #: core/templates/core/index.html:11 msgid "Smart Cargo Solutions" msgstr "حلول شحن ذكية" @@ -347,52 +482,43 @@ msgstr "الشحنة:" msgid "Goods:" msgstr "البضائع:" -#: core/templates/core/place_bid.html:20 +#: core/templates/core/place_bid.html:18 +#: core/templates/core/post_shipment.html:14 +#: core/templates/core/truck_register.html:14 core/views.py:32 +msgid "Please correct the errors below." +msgstr "يرجى تصحيح الأخطاء أدناه." + +#: core/templates/core/place_bid.html:27 msgid "Select Truck" msgstr "اختر الشاحنة" -#: core/templates/core/place_bid.html:28 +#: core/templates/core/place_bid.html:32 msgid "Your Offer Amount" msgstr "مبلغ عرضك" -#: core/templates/core/place_bid.html:35 +#: core/templates/core/place_bid.html:40 msgid "Comments/Conditions" msgstr "التعليقات/الشروط" -#: core/templates/core/place_bid.html:38 +#: core/templates/core/place_bid.html:44 msgid "Submit Offer" msgstr "تقديم العرض" -#: core/templates/core/place_bid.html:42 +#: core/templates/core/place_bid.html:48 msgid "You must register a truck before placing a bid." msgstr "يجب عليك تسجيل شاحنة قبل تقديم عرض." -#: core/templates/core/place_bid.html:43 -#, fuzzy -#| msgid "Register Your Truck" +#: core/templates/core/place_bid.html:49 msgid "Register Truck Now" -msgstr "سجل شاحنتك" +msgstr "سجل الشاحنة الآن" #: core/templates/core/post_shipment.html:10 -#, fuzzy -#| msgid "Post shipments easily" msgid "Post a New Shipment" -msgstr "انشر الشحنات بسهولة" +msgstr "نشر شحنة جديدة" -#: core/templates/core/post_shipment.html:15 -msgid "What are you moving? (e.g. 500 boxes of food)" -msgstr "ماذا ستنقل؟ (مثال: 500 صندوق مواد غذائية)" - -#: core/templates/core/post_shipment.html:24 -#: core/templates/core/post_shipment.html:28 -msgid "City, Country" -msgstr "المدينة، الدولة" - -#: core/templates/core/post_shipment.html:35 -#, fuzzy -#| msgid "Post shipments easily" +#: core/templates/core/post_shipment.html:48 msgid "Post Shipment" -msgstr "انشر الشحنات بسهولة" +msgstr "نشر الشحنة" #: core/templates/core/shipment_detail.html:17 msgid "Details" @@ -403,17 +529,15 @@ msgid "Received Bids" msgstr "العروض المستلمة" #: core/templates/core/shipment_detail.html:42 -#, fuzzy -#| msgid "I am a Truck Owner" msgid "Truck Owner" -msgstr "أنا صاحب شاحنة" +msgstr "صاحب الشاحنة" #: core/templates/core/shipment_detail.html:43 msgid "Truck" msgstr "الشاحنة" #: core/templates/core/shipment_detail.html:44 -#: core/templates/core/truck_owner_dashboard.html:51 +#: core/templates/core/truck_owner_dashboard.html:88 msgid "Amount" msgstr "المبلغ" @@ -435,10 +559,8 @@ msgid "Shipment in progress!" msgstr "الشحنة قيد التنفيذ!" #: core/templates/core/shipment_detail.html:75 -#, fuzzy -#| msgid "Find a Truck" msgid "Assigned Truck:" -msgstr "ابحث عن شاحنة" +msgstr "الشاحنة المعينة:" #: core/templates/core/shipment_detail.html:80 msgid "Contact Driver on WhatsApp" @@ -449,26 +571,20 @@ msgid "Contact Information" msgstr "معلومات الاتصال" #: core/templates/core/shipment_detail.html:91 -#, fuzzy -#| msgid "I am a Shipper" msgid "Shipper:" -msgstr "أنا شاحن" +msgstr "الشاحن:" #: core/templates/core/shipment_detail.html:93 msgid "Phone:" msgstr "الهاتف:" #: core/templates/core/shipper_dashboard.html:7 -#, fuzzy -#| msgid "Dashboard" msgid "Shipper Dashboard" -msgstr "لوحة التحكم" +msgstr "لوحة تحكم الشاحن" #: core/templates/core/shipper_dashboard.html:9 -#, fuzzy -#| msgid "Post shipments easily" msgid "Post New Shipment" -msgstr "انشر الشحنات بسهولة" +msgstr "نشر شحنة جديدة" #: core/templates/core/shipper_dashboard.html:17 msgid "My Shipments" @@ -483,7 +599,7 @@ msgid "Route" msgstr "المسار" #: core/templates/core/shipper_dashboard.html:27 -#: core/templates/core/truck_owner_dashboard.html:52 +#: core/templates/core/truck_owner_dashboard.html:89 msgid "Status" msgstr "الحالة" @@ -496,70 +612,95 @@ msgid "View Details" msgstr "عرض التفاصيل" #: core/templates/core/shipper_dashboard.html:50 -#, fuzzy -#| msgid "Post shipments easily" msgid "No shipments posted yet." -msgstr "انشر الشحنات بسهولة" +msgstr "لا توجد شحنات منشورة بعد." -#: core/templates/core/truck_owner_dashboard.html:7 -#, fuzzy -#| msgid "Dashboard" +#: core/templates/core/truck_owner_dashboard.html:9 msgid "Truck Owner Dashboard" -msgstr "لوحة التحكم" +msgstr "لوحة تحكم صاحب الشاحنة" #: core/templates/core/truck_owner_dashboard.html:10 +msgid "Manage your fleet and active bids." +msgstr "إدارة أسطولك وعروضك النشطة." + +#: core/templates/core/truck_owner_dashboard.html:14 msgid "Find Shipments" msgstr "ابحث عن شحنات" -#: core/templates/core/truck_owner_dashboard.html:13 -#, fuzzy -#| msgid "Register Your Truck" +#: core/templates/core/truck_owner_dashboard.html:17 msgid "Register Truck" -msgstr "سجل شاحنتك" +msgstr "سجل شاحنة" -#: core/templates/core/truck_owner_dashboard.html:22 -msgid "My Trucks" -msgstr "شاحناتي" +#: core/templates/core/truck_owner_dashboard.html:23 +msgid "My Approved Trucks" +msgstr "شاحناتي المعتمدة" -#: core/templates/core/truck_owner_dashboard.html:35 -msgid "No trucks registered." -msgstr "لا توجد شاحنات مسجلة." +#: core/templates/core/truck_owner_dashboard.html:38 +#: core/templates/core/truck_owner_dashboard.html:64 +msgid "Plate No:" +msgstr "رقم اللوحة:" + +#: core/templates/core/truck_owner_dashboard.html:39 +msgid "Model:" +msgstr "الموديل:" + +#: core/templates/core/truck_owner_dashboard.html:40 +msgid "Capacity:" +msgstr "الحمولة:" #: core/templates/core/truck_owner_dashboard.html:43 +msgid "Approved" +msgstr "معتمد" + +#: core/templates/core/truck_owner_dashboard.html:57 +msgid "Pending Approval" +msgstr "قيد الاعتماد" + +#: core/templates/core/truck_owner_dashboard.html:65 +msgid "Submitted on:" +msgstr "تاريخ التقديم:" + +#: core/templates/core/truck_owner_dashboard.html:68 +msgid "Waiting for Admin Review" +msgstr "في انتظار مراجعة المسؤول" + +#: core/templates/core/truck_owner_dashboard.html:80 msgid "My Active Bids" msgstr "عروضي النشطة" -#: core/templates/core/truck_owner_dashboard.html:50 +#: core/templates/core/truck_owner_dashboard.html:87 msgid "Shipment" msgstr "الشحنة" -#: core/templates/core/truck_owner_dashboard.html:68 -msgid "No bids placed." -msgstr "لا توجد عروض مقدمة." +#: core/templates/core/truck_owner_dashboard.html:90 +msgid "Date" +msgstr "التاريخ" + +#: core/templates/core/truck_owner_dashboard.html:107 +msgid "No bids placed yet." +msgstr "لم يتم تقديم عروض بعد." #: core/templates/core/truck_register.html:10 -#, fuzzy -#| msgid "Register Your Truck" msgid "Register a Truck" -msgstr "سجل شاحنتك" +msgstr "تسجيل شاحنة" -#: core/templates/core/truck_register.html:38 +#: core/templates/core/truck_register.html:51 msgid "Load Capacity (e.g. 20 Tons)" msgstr "الحمولة (مثال: 20 طن)" -#: core/templates/core/truck_register.html:43 +#: core/templates/core/truck_register.html:57 msgid "Documents & Photos" msgstr "المستندات والصور" -#: core/templates/core/truck_register.html:57 +#: core/templates/core/truck_register.html:73 msgid "Registration (Front Face)" msgstr "التسجيل (الوجه الأمامي)" -#: core/templates/core/truck_register.html:61 +#: core/templates/core/truck_register.html:78 msgid "Registration (Back Face)" msgstr "التسجيل (الوجه الخلفي)" -#: core/templates/core/truck_register.html:66 +#: core/templates/core/truck_register.html:84 msgid "Submit Registration" msgstr "إرسال التسجيل" @@ -576,7 +717,7 @@ msgid "Don't have an account?" msgstr "ليس لديك حساب؟" #: core/templates/registration/login.html:25 -#: core/templates/registration/register.html:29 +#: core/templates/registration/register.html:39 msgid "Register" msgstr "تسجيل" @@ -584,36 +725,50 @@ msgstr "تسجيل" msgid "Create your account" msgstr "أنشئ حسابك" -#: core/templates/registration/register.html:17 -msgid "I am a:" -msgstr "أنا:" - -#: core/templates/registration/register.html:25 -msgid "Phone Number" -msgstr "رقم الهاتف" - -#: core/templates/registration/register.html:32 +#: core/templates/registration/register.html:42 msgid "Already have an account?" msgstr "لديك حساب بالفعل؟" -#: core/views.py:79 -msgid "Truck registered successfully!" -msgstr "تم تسجيل الشاحنة بنجاح!" +#: core/views.py:29 +msgid "Registration successful. Welcome!" +msgstr "تم التسجيل بنجاح. مرحباً بك!" -#: core/views.py:104 +#: core/views.py:80 +msgid "Truck registered successfully! It will be visible after admin approval." +msgstr "تم تسجيل الشاحنة بنجاح! ستكون مرئية بعد اعتماد المسؤول." + +#: core/views.py:83 +msgid "There was an error in your registration. Please check the form." +msgstr "حدث خطأ في التسجيل. يرجى التحقق من النموذج." + +#: core/views.py:97 +msgid "Truck approved successfully!" +msgstr "تم اعتماد الشاحنة بنجاح!" + +#: core/views.py:108 +msgid "Truck has been suspended." +msgstr "تم تعليق الشاحنة." + +#: core/views.py:122 msgid "Shipment posted successfully!" msgstr "تم نشر الشحنة بنجاح!" -#: core/views.py:137 +#: core/views.py:125 +msgid "Please correct the errors in the form." +msgstr "يرجى تصحيح الأخطاء في النموذج." + +#: core/views.py:147 +msgid "You must have at least one approved truck to place a bid." +msgstr "يجب أن يكون لديك شاحنة معتمدة واحدة على الأقل لتقديم عرض." + +#: core/views.py:157 msgid "Bid placed successfully!" msgstr "تم تقديم العرض بنجاح!" -#: core/views.py:171 +#: core/views.py:160 +msgid "Error placing bid. Please check the form." +msgstr "خطأ في تقديم العرض. يرجى التحقق من النموذج." + +#: core/views.py:195 msgid "Bid accepted! Shipment is now in progress." -msgstr "تم قبول العرض! الشحنة قيد التنفيذ الآن." - -#~ msgid "Features" -#~ msgstr "المميزات" - -#~ msgid "How it Works" -#~ msgstr "كيف يعمل" +msgstr "تم قبول العرض! الشحنة قيد التنفيذ الآن." \ No newline at end of file