From 3a9d3da10849b1d3479afeb3257ade3b5020485f Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Fri, 23 Jan 2026 12:32:34 +0000 Subject: [PATCH] dem14 --- core/__pycache__/admin.cpython-311.pyc | Bin 3621 -> 5846 bytes core/admin.py | 32 ++++++++++++++ core/templates/admin/core/whatsapp_test.html | 40 ++++++++++++++++++ .../core/whatsappconfig/change_form.html | 9 ++++ 4 files changed, 81 insertions(+) create mode 100644 core/templates/admin/core/whatsapp_test.html create mode 100644 core/templates/admin/core/whatsappconfig/change_form.html diff --git a/core/__pycache__/admin.cpython-311.pyc b/core/__pycache__/admin.cpython-311.pyc index 8577f3a580185981be7f0f840051f5265e3ac5ff..5fb3aff3a54a0d4db197e54e66096d730d25d2cd 100644 GIT binary patch literal 5846 zcmbVQ&u`n-9e*T6N!AZbwq(a~l3Hn;WNI5JNz-=iinfW-HpOB$wS#t3u@Q_&+jK}# zeSE58!`XZYHV??bhYrnQ2cNPQ&4wO#*kS*`Fv%cbfk1!&Ll3U0zW7(T-FW9OQPEj>0u*MinwhN_@kw$+YakPMywQvc0`Hl2_sob8pEYwBUMTn=~CJl zDUBGTrBNeO%D6m3de#^#jd6r0Dz`H3FG|ha;|Tc*e%{5CcZm|aO_Vrr9rAnc3BUtC z@45$%ulyHMn&?AJ4nRx*V)DRb$CGR4p^;j~c3F$xEsQ?ZlGGn0k{*y1c&jE&59!cn$#Uw?us=B=9 zB;7Yq5RX+m(F7x{{#bwh_i?!<@Q?01pRLeDH(&DN~Z&+2itQN~ARg13r3)MB6 zfjKV0^kYo`+3fs1%$(c2(#)RNoW(zS%x4{}k4YFFq>qxQgg_^vlW5z=(@Dq))hv}d zA!>rj5@pW@lB=Oab=j<_Ql(~GN0*?_0(72thH-)BpfjcG#ral2&oz zifS>fA~VgbI1vk?wF&}fVjmJ*?>;Nfqm|E~l`r*5jr{+o)KSPezNbfVjcz82dlvUh8rpW9 za`z!PX`fk=+Ikx6_Vj9OtOx69(*F!TL6PL(w@>;@DE%>%zSJu{@(-5&M}0iePPCr% z0(~7|z^ZP3cZQe-S(V8~6#_a^HY*GhblMy3mEs)C>bKzx_8~z7?{nIh(P>}o6#!WS z0zm!bUXRbi>%Ye+<7Uw11C(2aP{+pOX!;g8lBb;_oSBr+1D&OoC+-g}r8hut;aPZ+s`z z9qG0o_mJ?QQ!WLsWqE*9K99@<{97U1f#n3DZ0yPht znWgHBPK2tT)WDR^kR+9L*|I>1%f(fJ)=RL?(~cRbNdSN+~Sz%j}R!q!GehHUO%97veKCm)V{*s7lNhn z5_gN=;5WE+z{3h+Zas!EafX40i_WN9mteb7oIt|J0&hM{--m}2g^Eb3QQe|wekUel z;UQTXgL=bjf2yggkS(#mae>;!O+G|Fz!@Q&?8M78ibRXcz7_f=k={Ofm;LFtdsDCOPQCiKY5TRSjj0dpsSoPE z(CZ1KkudCp(GvJWv8{M3Owvd0UW2*y=yA`)y&=*uaTaa6-!Xd^_YH^>jT49DQ~=U+-F_>CYE zM=Hew;)p>Umhito$Vw-X+z$s`k|S)S%cn$w7?6T8-BAdJnE$rZBZ1#Xz&6480Xd_= zF+l6Aa3$$u+#d?A@0Q50SZiM!oD$m*gB%b@@i`}S_5Fowj_B5uPNePj>r>YtnsV*8 z9E1hSS+#N*&IpS&U0*xCe(@a{4iid_nK%m19{xgZW?3!Y$gP<*n!9-Qy- z)jy5k0t(B_(DNxLY^ZG6ROqijdPjiRqi8B8(U!-pksVH=Xk15pdw%}?d5Xc}gcPmJ z=tnNIDnm`|ZoxO1w-1PLhTlJ?2*r|>}98Sv(q~tHL_>y z?3t~%o8!km)AzTSQFG@^=q;&j*vmuf?xd8a%br;pVZIIH;M~(aiNjDW@oR}-TPsXgEfjZyIA{2n$`U|m~yXb31woB2#_a8wj$rfNP2vGsXq0_KO&9PWjl4b9=+@) zy?k_FVUIg3#gt4@=}xk}5tmh6mn7IA+ysuf?=8T0{M zjQu|Px_7>RgRTNI+Q<4Q><=x0iMt8eG=qvWWJvi#CXE)$G(1qJ0c&LyBt~ z>rU&S^=SP93ffOPTEBoYUg+uzSvwLAH@GRAn`-gLIgIAP^zKP}^0`Ou;1ic3SZ?4n HH`xCR;A2a| delta 1241 zcmZvb&r1|x7{}jtX5RU+>+ZUqkQg+m4l%k+h zbS--hb}8skp&dK>CkPeNVX1pvM5$97A0RU%}Ac*LVs5>S^?;z^!dl>*t71I1MW=CVL_)j)H#KzH@Pa1BZ% z;?qTu3A6deTS~}#{?&&>CW)s!CLZHa$@PzY<(3#AHvv=*Xbm701C%C!&HoH&3nPZ z5{$}I@KU}(Tj7uVD3Rj65JiDAh6Ni+NjWAHq|hT4ihDZV!;fv zJKJ$8kPe*X8)Co{Rx*SGZG6jN_|7J-_VYz8vwUyK59j9AB0pT35B#u?TPvIF*cO;f)%7tXn~6VxZs)50mgZm%oA+v3`Zb0gF=*y%b#$B^>SaZ+(=f zU#t2T!&%N^z0q}`Rso({o$$=+`mk;7&~c6OI*-eXzTNz(19bdCIgp8D@6zJFbR<;# F(qAi-+E4%h diff --git a/core/admin.py b/core/admin.py index 53798df..833de05 100644 --- a/core/admin.py +++ b/core/admin.py @@ -1,5 +1,11 @@ from django.contrib import admin +from django.urls import path +from django.shortcuts import render +from django.http import HttpResponseRedirect +from django.contrib import messages +from django.utils.translation import gettext_lazy as _ from .models import Profile, Truck, Shipment, Bid, Message, WhatsAppConfig, Country +from .whatsapp import send_whatsapp_message @admin.register(Country) class CountryAdmin(admin.ModelAdmin): @@ -43,3 +49,29 @@ class WhatsAppConfigAdmin(admin.ModelAdmin): if self.model.objects.exists(): return False return super().has_add_permission(request) + + def get_urls(self): + urls = super().get_urls() + custom_urls = [ + path('send-test/', self.admin_site.admin_view(self.send_test_message), name='send_test_whatsapp'), + ] + return custom_urls + urls + + def send_test_message(self, request): + if request.method == 'POST': + phone = request.POST.get('phone') + message = request.POST.get('message') + if phone and message: + success = send_whatsapp_message(phone, message) + if success: + self.message_user(request, _("Test message sent successfully!")) + else: + self.message_user(request, _("Failed to send test message. Check your API credentials and logs."), level=messages.ERROR) + return HttpResponseRedirect("../") + + context = dict( + self.admin_site.each_context(request), + title=_("Send Test WhatsApp Message"), + opts=self.model._meta, + ) + return render(request, "admin/core/whatsapp_test.html", context) \ No newline at end of file diff --git a/core/templates/admin/core/whatsapp_test.html b/core/templates/admin/core/whatsapp_test.html new file mode 100644 index 0000000..c7b4092 --- /dev/null +++ b/core/templates/admin/core/whatsapp_test.html @@ -0,0 +1,40 @@ +{% extends "admin/base_site.html" %} +{% load i18n admin_modify %} + +{% block breadcrumbs %} + +{% endblock %} + +{% block content %} +
+
+ {% csrf_token %} +
+
+
+
+ + +
{% trans 'Enter the phone number in international format without the + sign.' %}
+
+
+
+
+ + +
+
+
+ +
+
+
+{% endblock %} diff --git a/core/templates/admin/core/whatsappconfig/change_form.html b/core/templates/admin/core/whatsappconfig/change_form.html new file mode 100644 index 0000000..0dc7536 --- /dev/null +++ b/core/templates/admin/core/whatsappconfig/change_form.html @@ -0,0 +1,9 @@ +{% extends "admin/change_form.html" %} +{% load i18n admin_urls %} + +{% block object-tools-items %} +
  • + {% trans "Send Test Message" %} +
  • + {{ block.super }} +{% endblock %}