From 59f1cf28c32abee60efb2d6b12eab00cfa5a9d79 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sun, 25 Jan 2026 10:56:32 +0000 Subject: [PATCH] adding profile --- core/__pycache__/admin.cpython-311.pyc | Bin 2453 -> 3283 bytes core/__pycache__/forms.cpython-311.pyc | Bin 12090 -> 13217 bytes core/__pycache__/models.cpython-311.pyc | Bin 12093 -> 13634 bytes core/admin.py | 14 ++- core/forms.py | 19 ++- core/migrations/0007_platformprofile.py | 30 +++++ .../0007_platformprofile.cpython-311.pyc | Bin 0 -> 1770 bytes core/models.py | 18 ++- core/templates/base.html | 21 ++-- core/templates/core/register.html | 4 +- core/templates/core/shipment_request.html | 119 ++++++++++++++++-- locale/ar/LC_MESSAGES/django.mo | Bin 7556 -> 8613 bytes locale/ar/LC_MESSAGES/django.po | 52 +++++++- requirements.txt | 1 + 14 files changed, 247 insertions(+), 31 deletions(-) create mode 100644 core/migrations/0007_platformprofile.py create mode 100644 core/migrations/__pycache__/0007_platformprofile.cpython-311.pyc diff --git a/core/__pycache__/admin.cpython-311.pyc b/core/__pycache__/admin.cpython-311.pyc index f8c2ac27378345aacc7c043921adf3d599bf111e..b2f91d2ed7ab8ddfe6594485c37b334295f88648 100644 GIT binary patch literal 3283 zcmbVO&2Q936rZuZ_HOnopAev=Ddj^3kw|F+ZPiw^sGzDOMWVg=s ze%8oRA`wQ{aw!qZJf?&^gyuE&IW-QqU$gmyWoRU%#&xvRksj909P3FWdI z)kXQbXGO~a_md@dH~G*=OK1BKbRH5$4C)X=a;PE0PjMu0K^BFC{0ns9i6pd&^^C}xW;|?)A=C5&r{*!!6a~|~RkOTgrr^0@WIAqG^{l!mh76ovHJ4rHIpGts zjh?+eKf4V`HBgf8<-^z+K^R3C0}%N*3Xr~taXya269}<;hp}}e1>EW3ae%#=J_JppQ;lzWgyEvM z6qdt6>DQE7NlQtW#Avr;nu%8aF8UcO<;SquBV!835HLc0GA^Ku`92wF|CTZeNriWm zs6wfQj0=Sauulrr)u6)6O3hz_pvNgf?}cK6bjajM=sU&hKiio4A;kp1Oyz{@>wJps#TrDgGF5%v}5=?XpB2Wl)+mk zsCf0{)ab1_9W4>CAVZAu-mSBY$@mVFvD8@DIP_KHTl{o(9xmFK5eWwH*+!P1dvbE0 zEK^6imo=38hxFLw^-_zeo9U-L4aVWe0RJ?|X1@I3lUDxti~Pyw`IF83=~n)9o6y{mjj_q~ z`IqJKUv59R{i3WtFYAAvX_n_&<+*3sxj5tcz|)zdE25bA30JFUnsBIJ#&=@$FLfOL z2$~!LizECD0Gvrbn`2)#uC)~<^Ff;&3_2x6ZWhI!g1Gv)NC61vIY8?KM zXQ0DX1WYW?BH%s2@gF{s?bH|KV`u@>6_;S=l8kSa_)JEh<4qDP=-EQAv!8Zu@6Y+y zV27H+e*xPvrF4T#KimJ^AdAob&v%oS8x!}Y*0m;`Y|+WKB++wi(huwNt+DsFaAF5x zOD58hu6>qB!!b*)NsqSZ(Y7QbOFyiC-4iiQOrS3pcNL*&mql&T!!3HaEh+R0h4LAQ>!(_yC${3rofwe} o!kI2Bq{_-oI^CkvZAqh0i~aE1eCyb`Eu7dvK$`dZ?c?hF53|7IS^xk5 delta 743 zcma))zi-n(6vuu3m0-tCp-?5IsT37UzEWW8(6mTMhzYWUwOCf~K(3smy4XVo)W0Em zVyeUl>Vl}4Sdh9gp-OD`51?*{kp=Eul1fw^u&l4%`}o~^ci;2(=9|UveGqttdj5PX zGwMvjhWV9D;`J&qOoNmC>f}X4uEDAqRlFJaI0ya|fJx@0HY3k3NH8Ps=42&gVb7rT za~w*EbW+yO2ImAb2NLrxytS6##Qf~~3JD($tjN7J4Uep+y8(uw5?R?BmV-i!DG^PC zH6`6+SJW|CK)H@`Ly7eBY*ZvKv%KI!EF!*%qWdmk)X)Nt?e*!f1{_&i@WBq;=|DKO zqi7Y2^cb;>;iVoeWG(QWS&tTU9M;o&!dhwm$u>8d_-Gqvk4vdwYz~|?!gx~CKP_Son4CHz7pw`2P`c(OVXlCD_8j=Zeua} zBI|;uY&gir$}OI=(d9$NSQ*1%LN?UXa2(&;8g@=l@VwH+0$^<*b@A~Ly!PeU9?eohFjxEN- zEhd`XB{SQy%^!3wBPL6;WZ8b)jOdKE&08Q%T>J|bT-<(Hvh1GsK)(1T{IHw!^Ugi@ z^xSjKz4vo|JaT=g_-nIy5n|)Rr>A21s_%;5)^n4(jG+o+Y^1?jN71PMCPwI6Oy93= zEIO|n){(`-I{K(;DK^oXnwUl}RnU`Fc4mFjY10ntM-B83Ll75Hp~#NMsMqBh`Th(# ztJ#mv;9(SB44c7-m#SZcNWbKsmJyn56EWW8*xu}?4$?h)HEy5Q#~srWS@)tv2`tW- z#LMXQsx~!1Lnq6pV{Qhz(M8WQuyK(h>aBxxzA}_+43aQASHq}DvE*5JiaeV*XP*H{=7tN0sAf@)OjO;&8CJ*E}rg0}Z~IQb1GUS>s;CZ~=x zfppbWhL_P>rVWky!B|3yl7en9M$%Hj5KG3SSU6G8M#56Kpot}=f@UZx5fl84TA`p#u_(w&Fz|taQ4|Lf;dELQ z(?&L5F*V*J^8(nN}2>hi-C1saK#x1VA#dT{iYjNc)t+J(c+|rh} zwB;-T*%G*uANfF{?TDOLDgT*d@-Sl=zA8yNNt?zPp7rjvG8i6X4wP45- zKl>E4>G0`jfoCNbPq4b4Ns$QY1EV5QxsD~93WA4V&ot!90Gs~p`4rQQLk>j zAG8Mm;J^z8^=}apVlzit&rmtEsUthg=I7|YT89n-*_7F5Gh_W!^vCSZk>|S=N_M0o z(L~45RBRx+B^FIY2vCs{B3TcT5)Rz9f;O2-M%Boay9EgoU=6YkU@rh{Trf{vr-5i9 zA&Ts_Ly&34V5nWaQMA}mjDO0MJNj{Dg)W9C(JQbWXFe+vbfv@KR-2ZhC(h}FCP8Q+ z!}Ry%WqQz)^O=8^4`W?|$!}$bD?Z>jy^*o!aZLZLawwe07}PMIL7ggtnjkf0uz9F@ z>C9YO0z5;1GuY{u)yovFvT@S#*-Bcz$WfzZWMG+gavG5fMkG~D&lN7U(0;CheqpF& zM6EcTA?g{Lv$r0qK@!}ysUg))O9%~ePIf;r+K-ako)bB+<{WprDJ}%ww>cw43kwYB zRV7v>x9QjnqdX8ROVPeKSvEg38gNzOxdk%AuJa0ni`7tc3k!wz)xNSu;QoKCkrJ&l zVxAY+#g`u*7csx4MrxL}2-<~Ss8e0NYsAt+8rWHqMgU-basogCXa*1fP67~s7JycO zH2|joPBU=Z6n0Uc8$9{>Z#4kA8UW~8WCOrPG{UeQM7Zi?5I}jqL69~9DD<}(q)rBI zqe?k%f?@|i4?r)#P5@{e1wHFFVoW8Vmv#+ibgpz~m<%|gi7hE|yh#+HnTaAi+O$o} z+R3Ng3+*GEv29}YTIeI$CG|4zmid;6HS5&5N9G%3eifZ?kF`HhJ4G5l_O;8tu5n*) z-q)MmcPQ)Y&G`{p#;3~Kv)LBAxqgh<#xKXK_Kz!{Dr?VPVWEWbAM!1XH~;_u delta 2132 zcma)+T})#|6o6-X+uK5aprt?CU2K6;=q*dPAU`g@+a)Oof{^`lW8Ax4?uBhFElw|G zCB$wtyNOS091~46MiYM{51PK1H9i>Jg(#A2!h>lvzM6f4WMj-e80Xwl{sOv_+%Gfd zoH=vOxijbE>AP1fpPS9)h>geVbMdb|-&n5knqRearS4%!(k`Mz8R%eS5qYBwDURX_ zxL5m;kw$`c`n%uD>6BwM;ty&UbxS%LX^LQ;S_6*U>prAZ?`~E+yYnecJt7=Nmr*J` zk8W_6(L83(D@zs$YiUMA#b27M0qodF`p+~7eZ{`wAjA7SRCSaT343WqPVYA<$#*Rh z4jS`ys|nac62CWLR*qZ$R}PKD(+R4vGVS}VnrSb>YDlma&`E5yjoEAUhCq#_gAXFi2nY0CUmWebQ6uusg$ieRAcn;QfY zW>V4ysxncWOvW-9QOp?Fx~4d8k^oqA(k*i%eu26z)AW1G+l{#F75r)A7xhcc-?|^v z4Q$j6Y$A}YYS+vgLoaO%$?BSBD}wnyDxBE=Lti8~AfRQzI?&54_h80*?UCSMEn2Cy z4t8)W?Rc;wf85%DaW9S7YK>7ib`&s1XKWX6TYlO0ng);3vkrd_av|*uf{DQ8DrhsY ztXwd$#Kc*a!+e@ZE&f%H6}m7$<7 zZj;CeTRAg4qgtTt`dnh`1^SQHse?ee^Dd_u^V`t}UG=%0(+ZWNX-Q5FTu;X*8 zUtAV^H~*XKD)zW^alDC+U~B$GcUV`I1+UtSBF`@9!l7`ug=Fc69v2UCGN1p>vxs$5 zY(A3jsd-bQIjhgF)XiXQqb)uMCG|dfC&2P&t;eoWocn}&5Yj*OG1jV7b6mlimkX<} zQ{CdG6UJ&94OGAjeyE2Q2JcvPqZ&IneyL1tZs4qBUU}g3^21IyszONze(AX2IW!2^ zS@Oz)D5p|+guTS0f>3?ZVPjhk`ifv0BTZ1HlYnMG0+0f{3`hb_0iFh=0kaH(O})y+ ze+&2P;Kk?ynGfIqz!f1^0qW)GMmaX^fpssS56}-d!yp)nw|Wo+Lx5)i!vJUj1)jAR z)>w)+=aBc$Y!<4~RdeenFr&Z|FGODhs0Hl4j2JAhG3B?$KV0 YsOBQZETF^rmg61oma2PngoPT-ziN59KmY&$ diff --git a/core/__pycache__/models.cpython-311.pyc b/core/__pycache__/models.cpython-311.pyc index 57e069a93b2ff45ea2ad6211a35b7a5f2108a54f..bc4e4a0a0fadb57c337aecaa68f74fee94652cc2 100644 GIT binary patch delta 2631 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 QVON=Z$q!y#a_ZTA3mlsDl>h($ literal 0 HcmV?d00001 diff --git a/core/models.py b/core/models.py index 7c76838..46898f0 100644 --- a/core/models.py +++ b/core/models.py @@ -144,4 +144,20 @@ class Parcel(models.Model): class Meta: verbose_name = _('Parcel') - verbose_name_plural = _('Parcels') \ No newline at end of file + verbose_name_plural = _('Parcels') + +class PlatformProfile(models.Model): + name = models.CharField(_('Platform Name'), max_length=100) + logo = models.ImageField(_('Logo'), upload_to='platform_logos/', blank=True, null=True) + slogan = models.CharField(_('Slogan'), max_length=255, blank=True) + address = models.TextField(_('Address'), blank=True) + phone_number = models.CharField(_('Phone Number'), max_length=50, blank=True) + registration_number = models.CharField(_('Registration Number'), max_length=100, blank=True) + vat_number = models.CharField(_('VAT Number'), max_length=100, blank=True) + + def __str__(self): + return self.name + + class Meta: + verbose_name = _('Platform Profile') + verbose_name_plural = _('Platform Profile') diff --git a/core/templates/base.html b/core/templates/base.html index cc5425d..0ed9cdf 100644 --- a/core/templates/base.html +++ b/core/templates/base.html @@ -19,7 +19,11 @@ {% endif %} - + {% if lang.direction == 'rtl' %} + + {% else %} + + {% endif %} @@ -28,20 +32,9 @@ {% if lang.direction == 'rtl' %} {% endif %} diff --git a/core/templates/core/register.html b/core/templates/core/register.html index 58735ff..6985e83 100644 --- a/core/templates/core/register.html +++ b/core/templates/core/register.html @@ -49,7 +49,7 @@ document.addEventListener('DOMContentLoaded', function() { citySelect.innerHTML = ''; if (countryId) { - fetch(`/ajax/get-governates/?country_id=${countryId}`) + fetch(`{% url 'get_governates' %}?country_id=${countryId}`) .then(response => response.json()) .then(data => { data.forEach(gov => { @@ -67,7 +67,7 @@ document.addEventListener('DOMContentLoaded', function() { citySelect.innerHTML = ''; if (governateId) { - fetch(`/ajax/get-cities/?governate_id=${governateId}`) + fetch(`{% url 'get_cities' %}?governate_id=${governateId}`) .then(response => response.json()) .then(data => { data.forEach(city => { diff --git a/core/templates/core/shipment_request.html b/core/templates/core/shipment_request.html index 5afb913..dafbb21 100644 --- a/core/templates/core/shipment_request.html +++ b/core/templates/core/shipment_request.html @@ -11,15 +11,114 @@
{% csrf_token %}
- {% for field in form %} -
- - {{ field }} - {% if field.errors %} -
{{ field.errors }}
+ +
+ + {{ form.description }} + {% if form.description.errors %} +
{{ form.description.errors }}
{% endif %}
- {% endfor %} +
+ + {{ form.weight }} + {% if form.weight.errors %} +
{{ form.weight.errors }}
+ {% endif %} +
+
+ + {{ form.price }} + {% if form.price.errors %} +
{{ form.price.errors }}
+ {% endif %} +
+ + +
+

{% trans "Pickup Details" %}

+
+
+ + {{ form.pickup_country }} + {% if form.pickup_country.errors %} +
{{ form.pickup_country.errors }}
+ {% endif %} +
+
+ + {{ form.pickup_governate }} + {% if form.pickup_governate.errors %} +
{{ form.pickup_governate.errors }}
+ {% endif %} +
+
+ + {{ form.pickup_city }} + {% if form.pickup_city.errors %} +
{{ form.pickup_city.errors }}
+ {% endif %} +
+
+ + {{ form.pickup_address }} + {% if form.pickup_address.errors %} +
{{ form.pickup_address.errors }}
+ {% endif %} +
+ + +
+

{% trans "Delivery Details" %}

+
+
+ + {{ form.delivery_country }} + {% if form.delivery_country.errors %} +
{{ form.delivery_country.errors }}
+ {% endif %} +
+
+ + {{ form.delivery_governate }} + {% if form.delivery_governate.errors %} +
{{ form.delivery_governate.errors }}
+ {% endif %} +
+
+ + {{ form.delivery_city }} + {% if form.delivery_city.errors %} +
{{ form.delivery_city.errors }}
+ {% endif %} +
+
+ + {{ form.delivery_address }} + {% if form.delivery_address.errors %} +
{{ form.delivery_address.errors }}
+ {% endif %} +
+ + +
+

{% trans "Receiver Details" %}

+
+
+ + {{ form.receiver_name }} + {% if form.receiver_name.errors %} +
{{ form.receiver_name.errors }}
+ {% endif %} +
+
+ + {{ form.receiver_phone }} + {% if form.receiver_phone.errors %} +
{{ form.receiver_phone.errors }}
+ {% endif %} +
+
@@ -45,7 +144,7 @@ document.addEventListener('DOMContentLoaded', function() { citySelect.innerHTML = ''; if (val) { - fetch(`/ajax/get-governates/?country_id=${val}`) + fetch(`{% url 'get_governates' %}?country_id=${val}`) .then(response => response.json()) .then(data => { data.forEach(item => { @@ -63,7 +162,7 @@ document.addEventListener('DOMContentLoaded', function() { citySelect.innerHTML = ''; if (val) { - fetch(`/ajax/get-cities/?governate_id=${val}`) + fetch(`{% url 'get_cities' %}?governate_id=${val}`) .then(response => response.json()) .then(data => { data.forEach(item => { @@ -81,4 +180,4 @@ document.addEventListener('DOMContentLoaded', function() { setupDependentDropdowns('id_delivery_country', 'id_delivery_governate', 'id_delivery_city'); }); -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo index 874c96fdb7d3589cd83128521b1c6b7a79765d94..6c506629e18739e0d1391371c6dbdcac560223ce 100644 GIT binary patch delta 3268 zcmb7_3rv+|7{^}_0|^v8YDdUC<_!{+RM7H@m}1^h@{-r!h(|6WH`A#n6Up3c<;j-1 zv}_K=lngVeHkWhDW;W-XeW%TI>6&XQxz?5|SHJ(^ML<_u@4o-{d#}&?JkR@n=Twf^ zpW*+pQ^XEKsX&jTZ`&C29$Xj6i}GtbW8&Z)%kXGpCee1m4sapt3=5$fz6xD%w;ivA zT7ME^!koAK0kVbPT(=W$LM^-p+ry5J8bj51pceMGOodUj$3Pj*gipeGFcz+}{aY<} z!%p;n1bNI!UR~i?7{~tRCn{~}_zimCT{s2C#~3pl=0Q2~zU3hpLHjt=x-TG)`HGhu z`VMx7SKwpt9@P3Sc!z1@feI)YMzg<3qoRfBPzJL!0OvxbI0rrgOCgV0%L|)ki{%d3 zhxR_pGq5-9+fW&Gkxs4e2Rp)nP^UW<`jyH|DqY}A$Yb(&X@d$VPd7ms*amsb+q^vR zL#T*O+y3*GSD*sA4YkqVQ2Rs@O#+OAYA1If|C*Re2hN%akhx~Iosa{yL4h5A8R{&n zppIZCf=i%;VJqu7J!nTcI4;1r_;0 zsITK=JATfNUxwlI--J542B;MO4kyA$8nQPX%Fbe_qg@6Sz$!l#rJ@2VGPN~vJ5)qF zp^jod)De9G<>(pM58i;iU>u9}2@i#L_nP9`mQ|@5nc&jP`+YXedn8_dm^c zR6>0&d!R1Kamx!(DZ35h;a&Iy?9Akza0pC+*>E|mf(5VvYW@N)f*e^5mGW&+0c?l5 ze`YTgc~lE^S-yc<_y<%bTnuWw4=))SW0?&#o)6i}tcNTyJD@Jt5!?Sg0y=AjgiELIt>?JNehbH|dZg2Oy6*#p_vk6)NHc4qW5Cp^j)Y)Ve~L1UEx{J+)99 zpMpyDB`C+QL9LJBhRfl;P?;UsgZyiQ3_9e|6gVF)f-+PO7124U&(VQ0d>zVxJ5Z@_ z=V_dm47F|;)a9HEwP7JtV4I+Rsz0#&+E3*(I&Q%*I2%1!(&IQB#@KRDn6jUt~L`K}DvtFGQn}B2XzuiXsh-MP8(|s}vw*KqVXL z|3VRRS4|#LDMrec$|^JojZj11zy7J_ApKnGtQMh6G#;tEfR=}9jYm*QeJFa~_Dz8L z3Ut9#qR>l7zmB8OJf!bl$6A3@d`QQXs_$RtqLPIoQD2mg79-t>XV7G%qFb*r7Y#yV zP=BOb-WI8F*USp^lp2&Wq)VHEmLe7X^iD@B**|nM!(j$mfC`ZZEkPApD{0X&-dncRS5VqKW8z9I7cDLG*14m9 z4xjJK$uBSdk9}q|P6+MNRJVKBX44L~dEb8Eub8osb}%qFHb1_=n^Wcq8Jgt{)tjg8 zip_E@_Z1ftnrB9dFURXioIW)xDez0|-uA5{uY0Y1Y1_b6m)q}2bgF}u&M~LjIqK98 zQX{z8IS{N0zMf>L)dsf)tDJ+L(5#x^7UxqsDh>TxSoUy#O>iToLX#d`gSEq$+31{T zUKcpyimAKjx)u>Q?T-I{&Qv>fP7OX(2RA?9POFiJ9BMh*+NHogcjv%0cYaLEHG$FH z-c6}?jyN^W(NILqNijs)s{ej?fs5U8-E~gAT|#;f2dhZ+(Sc5VQXnnZ$Etl3}Pp?wJ0<~DR6ljsF1zTI?CSFUS)I^0C3?>*kVn|b? z59o=ZDUcAO1ho&^V^S4)sC^Zz5fdMjDkMrmlm}weMx+1#VVUf=zuh^zGqc~!?s;#` z;pK^ovohZflwKlEY@QOrYxqVsJIY5>Lny?LBfrEAoPUc2Se6^Y99)bgxEg2UW9aXD z(fbp~7LG&?Vh+{eT@Jip2)*$v&cJUl4}U_oa5eG|r0?(_df!wo%E!4_j5TQe3e3WG zti(;&hA-e!9K}5P50mKwE~b@Cekeq5EW&A6iZ-|a%diP=!EMN`VK1_U1MD1VUsQht zz3&*>-cVFOjArI6X48K-$H8>GfOdE(@*37~{!e5zKhER470uLh=qw$=nb?n{Gz_8{ zdIyW}Lo}nK$QH)gInW<5VFSN%;03><4g8BXkj1DN}A!hV94} zdf3gveP~Ae&?kN!T_eY^4nLVr{_XHG6$|hxnzA{xUV$~}jq8vtY+>hsccF{*nW(-W zW1JsFQ$2`g2(|ICV1%$iE|uQ{fX33Pz_ za6TsSHavs-aROh=2w^KvGne!8j7G2E0gTa!?Yx}ez#EfTi6dyk-=k0PS7aU&?f~QH z+}E&kKuuVQ>(Pw#B3n4jj%0=bw4+l|{TE0Q!Zz~G1?#a3 zpT;-wS)4?#@1=D+c$J-*96$$l0!c#n0PW~=tiucFeN%W>dB8*{=fDfA3`$gUd~ zg#GC2){icpljvIcEULeRu9-=+<9sgWSwaam;390rE^Ng2(aipg*}nhRIq~f1(2|;^|Cz3)*fwdfiUUqyO*{2R7V? z&eEk{ECCI{{i`R!rTA= diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index 5aea45a..df0393c 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -435,4 +435,54 @@ msgstr "لقد قبلت الشحنة!" #: core/views.py:91 msgid "Status updated successfully!" -msgstr "تم تحديث الحالة بنجاح!" \ No newline at end of file +msgstr "تم تحديث الحالة بنجاح!" + +#: core/templates/core/shipment_request.html:38 +msgid "Pickup Details" +msgstr "تفاصيل الاستلام" + +#: core/templates/core/shipment_request.html:64 +msgid "Delivery Details" +msgstr "تفاصيل التوصيل" + +#: core/templates/core/shipment_request.html:90 +msgid "Receiver Details" +msgstr "تفاصيل المستلم" + +#: core/templates/core/shipment_request.html:113 +msgid "Select Governate" +msgstr "اختر المحافظة" + +#: core/templates/core/shipment_request.html:114 +msgid "Select City" +msgstr "اختر المدينة" + +msgid "Shipping Price (OMR)" +msgstr "سعر الشحن (ر.ع)" + +msgid "Pickup Country" +msgstr "دولة الاستلام" + +msgid "Pickup Governate" +msgstr "محافظة الاستلام" + +msgid "Pickup City" +msgstr "مدينة الاستلام" + +msgid "Pickup Address (Street/Building)" +msgstr "عنوان الاستلام (الشارع/المبنى)" + +msgid "Delivery Country" +msgstr "دولة التوصيل" + +msgid "Delivery Governate" +msgstr "محافظة التوصيل" + +msgid "Delivery City" +msgstr "مدينة التوصيل" + +msgid "Delivery Address (Street/Building)" +msgstr "عنوان التوصيل (الشارع/المبنى)" + +msgid "Street/Building" +msgstr "الشارع/المبنى" \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index e22994c..65b2871 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ Django==5.2.7 mysqlclient==2.2.7 python-dotenv==1.1.1 +Pillow