From cdfcd5f4e86364cc7a1df054819be42ffbac1d63 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Fri, 23 Jan 2026 12:14:40 +0000 Subject: [PATCH] demo13 --- core/__pycache__/admin.cpython-311.pyc | Bin 3223 -> 3237 bytes core/__pycache__/forms.cpython-311.pyc | Bin 7734 -> 7951 bytes core/__pycache__/models.cpython-311.pyc | Bin 11494 -> 14298 bytes core/__pycache__/views.cpython-311.pyc | Bin 15053 -> 15179 bytes core/admin.py | 2 +- core/forms.py | 1 + core/migrations/0007_profile_country_code.py | 18 ++++++ .../0007_profile_country_code.cpython-311.pyc | Bin 0 -> 840 bytes core/models.py | 55 ++++++++++++++++++ core/templates/registration/register.html | 48 ++++++++++----- core/views.py | 7 ++- 11 files changed, 114 insertions(+), 17 deletions(-) create mode 100644 core/migrations/0007_profile_country_code.py create mode 100644 core/migrations/__pycache__/0007_profile_country_code.cpython-311.pyc diff --git a/core/__pycache__/admin.cpython-311.pyc b/core/__pycache__/admin.cpython-311.pyc index ab1cbbb5f162260a3e0bad33a0217d8c1e2cbc94..63ef2924fa3c29a29b6c965ee54e5524e8c17bbb 100644 GIT binary patch delta 525 zcmbO(xm1#OIWI340}uqJ7H9t3$a|hiiscqdX>n@NEtaDEoYY%9$@!&uB}J9-$@wXh zUodGh3QQJaUMcL{;B!Mry21N~h*^U#2o_0AKF3@apa3-L7Jq(uUTRT%Jjj^5#N5;( zIiRTDO4cG_AYCK^B1A!i7>JMn5t1N63PebQ2w51xH93%7Wby_UUN*3#?Bt!SR+Im- zc(`bRRA>VUP39tX5L*LC+!8F#$Sf#8w%V^q2qcSUz8XkOZE`287Q|dNpt-3WATu=? zi?k-IvAIiO)20W~rZ>5r4XRCV@^&^iM*YeE*i5BVuvlXT5;L3Z%dQHs#%yy1yD%f8 z{Nx^v5H_$!ohLuz$ddv2O_L34=r~U<;1m^e11czH1QHIA@Ua0IY%_T_rx(Ovo5`;^ oV~xR~2KE}*p2KczG$)vm~Ab2XO)6AQ?G0Jp|(jsO4v delta 523 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 delta 2668 zcmaKuYfKzf6vua#eF3}6@>r4@tf&4jUS9P6XPdSzi0v}X-q$;=ghD?Hyv{S+gtJwXEX4+84qY&AZtz-p zURD^-Pv)FpiNR=0s$DVU!IC9tdrU9r#W72*FSVD@c$w`(0_%)QF_CSjwmmtNh)aBY zY-B)U%#Ws923C&$n2&@OqlpbG@|Wl&k?c|;fSmmYMnArv>-gh^%T$vP4p1$^;{FOq<;?svRe(Az90(T56IMVv(O17yd4k zjg(Dq6i@rKFmgt)tUlJ2+T-elGEcy07d@C*#iADzq6EZ}QLYYtDXFwHU>Iuz-UE@4xhec{&d z$v(dQ=<%-hjy?@JJ3%Artl_WH;1p3-E#vqVh7=YjXM!Y5W(Ot<(qt37C@2z3l7p76 z+WI=eeDBHbZq+HsGJZfw)YFfhp_o@mXx5v_3S=Yc#v;GV84L?o%Ay>xE%k5LcdDT6 z)N33aNDFuUM>)G#fH2)+A;NTnH_(YNg+RAUgO^Jq=8^21H{sR__SbL2mTHq%aBWC& zilcc=X17Jf6v$C{5DazbAdAw0WTVuN5>}_Dt%5R@T_n+9&QPrunkxOBGFDYvBr!r? zOV-m^L-%YplQaU!02Vp0aJ|x|f%&n@4Zl}ev$Vt`f8@j5Lhe2!YfA7Sn{O5^NXIE! zk&aEZ_DHfUoRx5=>lK;RVHedQ<6QWZEu4b27rw17YSw^dDp7PR!bmbbv7D8WQ`9EG zwsXgnPAz9MwP&*eoDtI~StE(Kf-}?8<`UWI^K4F=IkJ%`SmbGxxAi~xW+xw9G;!uO zZqbll^?f}@NyYt)(0;Is*$6CKv?DMF@Vf$**J=1hnAuh4*3W8ePiA(>zSamGCTuT! zx9dGufTAi$wDYSH`fIDa8&3|^)FUYZ`vil|!^gGz^@P5PTiXL-UE9Gc=m;6r47?5X zgDve&clQqoirkt^wkP6)(X%Pw7vPV&@)h9rw7^#nOf^$TMtLPMEXCCCNdcd${|F8@6g#wRq=*p50HlUdt^^)7lyU%1 z8g_6#C~NeXzd-jzIMCRFcg1AmgV(N6xJ9)N39_Idf;-s8-wFaE&cZ6YPI7~SGMJVl zH_31dMW%%E`SiO|&805En6H_?7&YYWlb4l|}Ew2x$adBPPDZS2A&ekkxzUB216;_V+ qN_y3oLB8en5qVi$-J*dcpy{f7@ZzOcmZ-J7YFaFY@jbkW(&K-$%4{V7 diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc index f76538a3cbdc482f288d750ba35cf90f1eefa96f..ea8c7f4359ffcb9853e6679c6b5fea71540b3520 100644 GIT binary patch delta 2018 zcmb7FZA@EL7`~^yx9wOwVUzRRbKduy z_xpXjk$!x|x|W@t#nE50D8=-ZpIGBOx=j}OLjEqo1>|jhK-gG9t30vm%ZNp|qers_ z;!KGbpCM>_J8qZSD(B~Iid6Zu6sK~65*zQu8~Ib(Z- ziLZeYj?yI^MI3jXdt$V{cI}<#elR*SM(5AA^3|RXdNVffmd*PH|HN#2v*l*Xjkeou zPdPJbFa?x|sYyWf{a_0K^J%{m_&hLnT{z5o=DU{+ z6c!mkBtA}(h0hBY>Gp!MQus($(E(J5<~qXT^fRK`r_%9wC^eHzh@nJ!Zc@bLe97$c zfuQ!mJ0^YCMrHs+Q#DSDa#)rz3#)2M#ltccmc#|{YJY&;f)>_Sfdw|I=Hz@r#F_=F zeomT}s0z|nTAVdS*$KL&uSv8tV&1In_^K=82y8h5N~ZJyGVeHpC&;3+tndHW%*;}a z^I@EbC8k;Kw==GpM*eWRgc#L+U9q`7*4dlrmPL+L6r}b0vgkM~LEC?qpdDU8P3%eB zDLC$r${}S(?vz&xaeDQZ@2kYP6)-^J}RI@Y_OU;Q1ITVX(4_V*oCu31H8+fVhy2B!w@VK%TsmL|D zq%YsU=|Psw)}hVdXr^Rrt7J^M_u`N)e}XdII!zWcM=L?{ckQudX4x6IVA~T1mTVRb zD`oA;f(%CwKn1{VgMkQDACAYh9PwI?7U0s33JKy#C(*M}WTVcIck8l+Yn1$*@~AGX z_fEhA=ycU|rnA#OIO6Y8O~d}P{!Y5XNnn@*{h`6(fu3Q1Fi2C{ezFNkWd5Xo8N|2| z2A%GF%^7Ar)4%HxOKOT<(q<|%+$b(Y;_0ZU8q%pK9RpgATf>qRn@)()5F4ag0$BiA z1kxbm3ILlJCk`|R460{yLp9LkK{~I(?I?gqVvWwM*XeePE~%ZYG=6H{Z0P=$&p7(F z9DT}QQyQT<^3AEie)!|kns^L$7Xe_(U}$t42Y@!fPzV^JfI;p$hmXM?#{OTXW;(Ic aaj_NOQ=+FUki(7w=qa}cE0z1c2J|lycCAzZ delta 1878 zcmb7FUrbw77{90OZA*ccR-oliX(^>pia;m-95_a35s*!68PjE^cJu;e(6Vzcn`kq9 zP#=~V6TcUqWKUDFgpJ%i5Y3W3ElcK~F?rDPrisxvAB;v#jOROd1tc@Zo19<2bIy0Z z|KHaK7r$7xeq35=5!mONmeV&HH?0c>G7fJVstojZMGs#!Rl+SpkGPQ|*9>6S`@kx` z2j7a#FzzdE%LzH%b)6vGU`zXmpg0S(Ak3E(=$xR`z-CD`torQ44QrliL!7a~=2K2m z1D`uv;GWTAuP?9*LQY7TQf8=cs31j9Vyb~IlT7TeZW@K(Ol>7ij5BXomL*C<5H{CV zA7KaOY{`EzcuV-kWPSVchn0^^o`*1Nt|JzB*F38JXm*Pv3`Xk%(hrZU$H)NKZ83I| zvYjF!_|#To9A?ky0PNcQmH?6n0kx>?h{5oTH(`^KDg z8Y2O)S4Czf+2thT=iw-lQfVczm`zD^3dNLB5yfB*G)wIXlGiKFG6PoCE8d$rdl#CK<)7PIX5BXuKi!eCDzht>{^ znxsdeBory>WHfUh?;7E3=rqZ~?a=TlMuMgp1l?Lea&?DN!V7~}>Yg2Wqx5=OR%9(A zGbn}k39n)YZV!d;xq>448d4a|yfF(atzILqrw&+ab$ieftzY!#(y4r@JeOWtl4xRS zE}N0)H0-u|i&q%Wb++U?1j6A;sD1h;%U0%oYP&YRQyW+9Z7=DZ7=xgWJ4U%?t>|E- zqkfg^IF1aq11|IQa=)$Y>OjCLZuiH?ey5;_ygs?Gprym0rQ;&9@2QY6bYAvR4|3a> zKTs7e6?1HNUk!zm`Y=xyR%qTlI5ZTUn2bj9=2&zrI>ac7y_7E=J(-w@z4&}A8jrK= z-RbNm7vPu9Xb*}B5{f#5PR$u^J=eeQ5zk+SF=<2YI4pHlB&SfaH7U#K*^HD*D0F%H zyp|gtFz&I8ZxjRn hKg|7Xv@S15$LI&@cfEe%C?lifXW;<)RoBsH$lnR;dm;b; diff --git a/core/admin.py b/core/admin.py index ee7d00e..eeb9c21 100644 --- a/core/admin.py +++ b/core/admin.py @@ -3,7 +3,7 @@ from .models import Profile, Truck, Shipment, Bid, Message, WhatsAppConfig @admin.register(Profile) class ProfileAdmin(admin.ModelAdmin): - list_display = ('user', 'role', 'phone_number') + list_display = ('user', 'role', 'country_code', 'phone_number') list_filter = ('role',) search_fields = ('user__username', 'phone_number') diff --git a/core/forms.py b/core/forms.py index f3bf8df..cd392a4 100644 --- a/core/forms.py +++ b/core/forms.py @@ -8,6 +8,7 @@ class UserRegistrationForm(UserCreationForm): email = forms.EmailField(required=True, widget=forms.EmailInput(attrs={'class': 'form-control'})) confirm_email = forms.EmailField(required=True, widget=forms.EmailInput(attrs={'class': 'form-control'}), label=_("Confirm Email")) role = forms.ChoiceField(choices=Profile.ROLE_CHOICES, widget=forms.Select(attrs={'class': 'form-select'})) + country_code = forms.CharField(max_length=5, required=True, initial='966', widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': '966'})) phone_number = forms.CharField(max_length=20, required=False, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+1234567890'})) class Meta(UserCreationForm.Meta): diff --git a/core/migrations/0007_profile_country_code.py b/core/migrations/0007_profile_country_code.py new file mode 100644 index 0000000..24039a9 --- /dev/null +++ b/core/migrations/0007_profile_country_code.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.7 on 2026-01-23 12:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0006_whatsappconfig'), + ] + + operations = [ + migrations.AddField( + model_name='profile', + name='country_code', + field=models.CharField(blank=True, default='966', max_length=5), + ), + ] diff --git a/core/migrations/__pycache__/0007_profile_country_code.cpython-311.pyc b/core/migrations/__pycache__/0007_profile_country_code.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a8947f54b331f7aa3c34dd562c56e4227d7896fc GIT binary patch literal 840 zcmZuv&ui2`6rM@4*(7Yi#)4prN)hQ^nmw%uMG!&3t-UA;IXGl9v%A^mmy?9Hw>^09 z*jvFrz#rIye}=~jdnj}D)LY8-)RS-0O-rdW;mh~Udo%OBmwa1Tun>$6%YrW$p}$hp zqcJD54Il@IB8o#4VHZb=t6-#{mxwB#5LFo-tM#U@zJxVAGGr!&`-{xG*J^(pD47r#hSD|=_T~$F$8`q}bYARRsadW;0QH?gJe%QQj z;n29Q;Ut5aV9FBa>)H)i)BJ=pal6y$bji-h%QG)c{Uja)L(xomG6+H@T7FW*Io~5b zSbr?C|UOFf@CvUum}<2cZU$7EhMRC`tRdb-DTII;ps zviAU!%USBkTq{*&NuO+%7BW{pTT^5C_|Ajl#rwzh>i(mtz50FWSMhuC$nO2IdsDkt zHZ{{aMF3|KN>#V@$tyYea(&ZQTN5T7d+{(?r~Rq}Roxd}?#i?(cLmtFv2oGHr~DpB p_^na)4xm&q#^4XPkI>r9r_@_mFVRidx2Crqp31=4f1=gB{{R9f+3x@V literal 0 HcmV?d00001 diff --git a/core/models.py b/core/models.py index 209eb65..3eb0964 100644 --- a/core/models.py +++ b/core/models.py @@ -13,8 +13,18 @@ class Profile(models.Model): ) user = models.OneToOneField(User, on_delete=models.CASCADE) role = models.CharField(max_length=20, choices=ROLE_CHOICES, default='SHIPPER') + country_code = models.CharField(max_length=5, blank=True, default="966") phone_number = models.CharField(max_length=20, blank=True) + @property + def full_phone_number(self): + if not self.phone_number: + return "" + # Remove any existing leading + from country code and phone number + cc = str(self.country_code).replace("+", "").strip() + pn = str(self.phone_number).replace("+", "").strip() + return f"{cc}{pn}" + def __str__(self): return f"{self.user.username} - {self.role}" @@ -46,6 +56,15 @@ class Truck(models.Model): is_approved = models.BooleanField(_('Is Approved'), default=False) created_at = models.DateTimeField(auto_now_add=True) + @property + def full_phone_number(self): + if not self.phone_number: + return "" + # Remove any existing leading + from country code and phone number + cc = str(self.country_code).replace("+", "").strip() + pn = str(self.phone_number).replace("+", "").strip() + return f"{cc}{pn}" + def __str__(self): return f"{self.display_truck_type} - {self.plate_no}" @@ -92,6 +111,15 @@ class Shipment(models.Model): created_at = models.DateTimeField(auto_now_add=True) + @property + def full_phone_number(self): + if not self.phone_number: + return "" + # Remove any existing leading + from country code and phone number + cc = str(self.country_code).replace("+", "").strip() + pn = str(self.phone_number).replace("+", "").strip() + return f"{cc}{pn}" + def __str__(self): return f"{self.origin} to {self.destination} - {self.status}" @@ -110,6 +138,15 @@ class Bid(models.Model): created_at = models.DateTimeField(auto_now_add=True) + @property + def full_phone_number(self): + if not self.phone_number: + return "" + # Remove any existing leading + from country code and phone number + cc = str(self.country_code).replace("+", "").strip() + pn = str(self.phone_number).replace("+", "").strip() + return f"{cc}{pn}" + def __str__(self): return f"Bid by {self.truck_owner.username} for {self.shipment}" @@ -119,6 +156,15 @@ class Message(models.Model): content = models.TextField() timestamp = models.DateTimeField(auto_now_add=True) + @property + def full_phone_number(self): + if not self.phone_number: + return "" + # Remove any existing leading + from country code and phone number + cc = str(self.country_code).replace("+", "").strip() + pn = str(self.phone_number).replace("+", "").strip() + return f"{cc}{pn}" + def __str__(self): return f"From {self.sender.username} at {self.timestamp}" @@ -131,6 +177,15 @@ class WhatsAppConfig(models.Model): verbose_name = _('WhatsApp Configuration') verbose_name_plural = _('WhatsApp Configuration') + @property + def full_phone_number(self): + if not self.phone_number: + return "" + # Remove any existing leading + from country code and phone number + cc = str(self.country_code).replace("+", "").strip() + pn = str(self.phone_number).replace("+", "").strip() + return f"{cc}{pn}" + def __str__(self): return str(_("WhatsApp Configuration")) diff --git a/core/templates/registration/register.html b/core/templates/registration/register.html index 6e0ea86..099c746 100644 --- a/core/templates/registration/register.html +++ b/core/templates/registration/register.html @@ -22,18 +22,40 @@ {% endif %} {% for field in form %} -
- - {{ field }} - {% if field.help_text %} -
{{ field.help_text|safe }}
- {% endif %} - {% if field.errors %} - {% for error in field.errors %} -
{{ error }}
- {% endfor %} - {% endif %} -
+ {% if field.name == 'country_code' %} +
+ +
+ + +
+ {{ form.country_code }} +
+ {{ form.phone_number }} +
+ {% if form.phone_number.errors or form.country_code.errors %} +
+ {% for error in form.country_code.errors %}{{ error }} {% endfor %} + {% for error in form.phone_number.errors %}{{ error }} {% endfor %} +
+ {% endif %} +
{% trans "Enter country code (e.g. 966) and phone number." %}
+
+ {% elif field.name == 'phone_number' %} + {# Handled above #} + {% else %} +
+ + {{ field }} + {% if field.help_text %} +
{{ field.help_text|safe }}
+ {% endif %} + {% if field.errors %} + {% for error in field.errors %} +
{{ error }}
+ {% endfor %} + {% endif %} +
+ {% endif %} {% endfor %} @@ -47,4 +69,4 @@ -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/core/views.py b/core/views.py index e86b592..55b07ac 100644 --- a/core/views.py +++ b/core/views.py @@ -25,6 +25,7 @@ def register(request): profile = user.profile profile.role = form.cleaned_data.get('role') profile.phone_number = form.cleaned_data.get('phone_number') + profile.country_code = form.cleaned_data.get('country_code') profile.save() login(request, user) messages.success(request, _("Registration successful. Welcome!")) @@ -116,7 +117,7 @@ def approve_truck(request, truck_id): truck.save() # Notify Truck Owner via WhatsApp - owner_phone = getattr(truck.owner.profile, 'phone_number', None) + owner_phone = getattr(truck.owner.profile, 'full_phone_number', None) if owner_phone: msg = f"Your truck ({truck.plate_no}) has been approved! You can now place bids on shipments." send_whatsapp_message(owner_phone, msg) @@ -183,7 +184,7 @@ def place_bid(request, shipment_id): bid.save() # Notify Shipper via WhatsApp - shipper_phone = getattr(shipment.shipper.profile, 'phone_number', None) + shipper_phone = getattr(shipment.shipper.profile, 'full_phone_number', None) if shipper_phone: msg = f"New bid placed on your shipment from {shipment.origin} to {shipment.destination}! Amount: {bid.amount}" send_whatsapp_message(shipper_phone, msg) @@ -227,7 +228,7 @@ def accept_bid(request, bid_id): bid.shipment.save() # Notify Truck Owner via WhatsApp - owner_phone = getattr(bid.truck_owner.profile, 'phone_number', None) + owner_phone = getattr(bid.truck_owner.profile, 'full_phone_number', None) if owner_phone: msg = f"Congratulations! Your bid for the shipment from {bid.shipment.origin} to {bid.shipment.destination} has been accepted." send_whatsapp_message(owner_phone, msg)