Files
ihrm/whatsapp/models.py
2025-12-19 00:32:47 +05:30

114 lines
3.5 KiB
Python

from django.db import models
from django.urls import reverse
from base.horilla_company_manager import HorillaCompanyManager
from base.models import Company
from horilla.models import HorillaModel
from horilla_views.cbv_methods import render_template
class WhatsappCredientials(HorillaModel):
meta_token = models.CharField(max_length=255)
meta_business_id = models.CharField(max_length=255)
meta_phone_number_id = models.CharField(max_length=255)
meta_phone_number = models.CharField(max_length=20)
created_templates = models.BooleanField(default=False)
meta_webhook_token = models.CharField(
max_length=50,
verbose_name="Webhook Token",
help_text="This token is used to connect webhook to the server",
)
company_id = models.ManyToManyField(Company, blank=True, verbose_name="Company")
is_primary = models.BooleanField(default=False)
# objects = HorillaCompanyManager()
def __str__(self):
return f"WhatsApp Business {self.meta_business_id} ({self.meta_phone_number})"
def token_render(self):
alert = """
Swal.fire({
text: "Token copied",
icon: "success",
showConfirmButton: false,
timer: 2000,
timerProgressBar: true,
});
"""
html = f"""
<span onclick="copyToken()" title={self.meta_token}>{self.meta_token[:20]}...</span>
<script>
function copyToken() {{
var token = "{self.meta_token}";
navigator.clipboard.writeText(token).then(function() {{
{alert}
}}, function(err) {{
console.error('Could not copy text: ', err);
}});
}}
</script>
"""
return html
def get_update_url(self):
url = reverse("whatsapp-credential-update", kwargs={"pk": self.pk})
return url
def get_publish_button(self):
html = render_template(
path="whatsapp/option_buttons.html", context={"instance": self}
)
return html
def get_primary(self):
if self.is_primary:
return "style='background:#ffa60028'"
def get_instance(self):
"""
used to return the id of the instance
Returns:
id of the instance
"""
return self.pk
def get_delete_url(self):
url = reverse("whatsapp-credential-delete")
id = self.pk
url = f"{url}?id={id}"
return url
def get_test_message_url(self):
url = reverse("send-test-message")
return url
def get_webhook_token(self):
placeholder = "" * len(self.meta_webhook_token)
html = f"""
<style>
.editable-span {{
cursor: pointer;
}}
.editable-span::after {{
content: '{placeholder}';
}}
.editable-span:hover::after {{
content: '{self.meta_webhook_token}';
}}
</style>
<span class="editable-span"></span>
"""
return html
class WhatsappFlowDetails(models.Model):
template = models.CharField(max_length=50)
flow_id = models.CharField(max_length=50)
whatsapp_id = models.ForeignKey(WhatsappCredientials, on_delete=models.CASCADE)
def __str__(self) -> str:
return self.template