114 lines
3.5 KiB
Python
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
|