add send message from admin panel
This commit is contained in:
parent
8e628f5334
commit
920999ccb0
Binary file not shown.
@ -12,7 +12,7 @@ from django.conf import settings
|
||||
from .mail import send_html_email
|
||||
import logging
|
||||
import csv
|
||||
from django.http import HttpResponse
|
||||
from django.http import HttpResponse, HttpResponseRedirect
|
||||
|
||||
class ProfileInline(admin.StackedInline):
|
||||
model = Profile
|
||||
@ -26,7 +26,7 @@ class ProfileInline(admin.StackedInline):
|
||||
|
||||
class CustomUserAdmin(UserAdmin):
|
||||
inlines = (ProfileInline,)
|
||||
list_display = ('username', 'email', 'get_role', 'get_approval_status', 'is_active', 'is_staff')
|
||||
list_display = ('username', 'email', 'get_role', 'get_approval_status', 'is_active', 'is_staff', 'send_whatsapp_link')
|
||||
list_filter = ('is_active', 'is_staff', 'profile__role', 'profile__is_approved')
|
||||
|
||||
def get_role(self, obj):
|
||||
@ -43,6 +43,53 @@ class CustomUserAdmin(UserAdmin):
|
||||
return list()
|
||||
return super(CustomUserAdmin, self).get_inline_instances(request, obj)
|
||||
|
||||
def get_urls(self):
|
||||
urls = super().get_urls()
|
||||
custom_urls = [
|
||||
path('<int:user_id>/send-whatsapp/', self.admin_site.admin_view(self.send_whatsapp_view), name='user-send-whatsapp'),
|
||||
]
|
||||
return custom_urls + urls
|
||||
|
||||
def send_whatsapp_view(self, request, user_id):
|
||||
user = self.get_object(request, user_id)
|
||||
if not user:
|
||||
messages.error(request, _("User not found."))
|
||||
return HttpResponseRedirect(reverse('admin:auth_user_changelist'))
|
||||
|
||||
if not hasattr(user, 'profile') or not user.profile.phone_number:
|
||||
messages.warning(request, _("This user does not have a phone number in their profile."))
|
||||
return HttpResponseRedirect(reverse('admin:auth_user_changelist'))
|
||||
|
||||
if request.method == 'POST':
|
||||
message = request.POST.get('message')
|
||||
if message:
|
||||
success, msg = send_whatsapp_message_detailed(user.profile.phone_number, message)
|
||||
if success:
|
||||
messages.success(request, _("WhatsApp message sent successfully."))
|
||||
return HttpResponseRedirect(reverse('admin:auth_user_changelist'))
|
||||
else:
|
||||
messages.error(request, _(f"Failed to send message: {msg}"))
|
||||
else:
|
||||
messages.warning(request, _("Message cannot be empty."))
|
||||
|
||||
context = dict(
|
||||
self.admin_site.each_context(request),
|
||||
user_obj=user,
|
||||
phone_number=user.profile.phone_number,
|
||||
)
|
||||
return render(request, "admin/core/user/send_whatsapp_message.html", context)
|
||||
|
||||
def send_whatsapp_link(self, obj):
|
||||
if hasattr(obj, 'profile') and obj.profile.phone_number:
|
||||
return format_html(
|
||||
'<a class="button" href="{}">{}</a>',
|
||||
reverse('admin:user-send-whatsapp', args=[obj.pk]),
|
||||
_('Send WhatsApp')
|
||||
)
|
||||
return "-"
|
||||
send_whatsapp_link.short_description = _("WhatsApp")
|
||||
send_whatsapp_link.allow_tags = True
|
||||
|
||||
class ParcelAdmin(admin.ModelAdmin):
|
||||
list_display = ('tracking_number', 'shipper', 'carrier', 'price', 'status', 'payment_status', 'created_at')
|
||||
list_filter = ('status', 'payment_status', 'created_at')
|
||||
|
||||
20
core/templates/admin/core/user/send_whatsapp_message.html
Normal file
20
core/templates/admin/core/user/send_whatsapp_message.html
Normal file
@ -0,0 +1,20 @@
|
||||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n static %}
|
||||
|
||||
{% block content %}
|
||||
<div id="content-main">
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<div class="module aligned">
|
||||
<div class="form-row">
|
||||
<label for="message">{% trans "Message for" %} {{ user_obj.username }} ({{ phone_number }}):</label>
|
||||
<textarea name="message" id="message" rows="10" cols="40" class="vLargeTextField" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="submit-row">
|
||||
<input type="submit" value="{% trans 'Send WhatsApp Message' %}" class="default" name="_save">
|
||||
<a href="../../" class="button" style="float: right;">{% trans "Cancel" %}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Loading…
x
Reference in New Issue
Block a user