Quick Start¶
Install¶
django-webix-sender
is available on https://pypi.python.org/pypi/django-webix/
install it simply with:
$ pip install django-webix-sender
Configure¶
Settings¶
Add django_webix_sender
to your INSTALLED_APPS
INSTALLED_APPS = [
# ...
'django_webix_sender',
# ...
]
Add django-webix-sender
URLconf to your project urls.py
file
from django.conf.urls import url, include
urlpatterns = [
# ...
url(r'^django-webix-sender/', include('django_webix_sender.urls')),
# ...
]
Warning
This package requires a project with django-webix
setted up.
Usage¶
Settings¶
Create the models (e.g. <app_name>/models.py)
from django.utils.translation import ugettext_lazy as _
WEBIX_SENDER = {
'send_methods': [
{
'method': 'sms',
'verbose_name': _('Send sms'),
'function': 'django_webix_sender.utils.send_sms'
},
{
'method': 'email',
'verbose_name': _('Send email'),
'function': 'django_webix_sender.utils.send_email'
}
],
'attachments': {
'model': 'django_webix_sender.MessageAttachment',
'upload_folder': 'sender/',
'save_function': 'django_webix_sender.models.save_attachments'
},
'typology_model': {
'enabled': True,
'required': False
},
'recipients': [
{
'model': 'django_webix_sender.Customer',
'datatable_fields': ['user', 'name', 'sms', 'email']
},
{
'model': 'django_webix_sender.ExternalSubject',
'datatable_fields': ['user', 'name', 'sms', 'email']
},
],
'invoices_period': 'bimestrial'
}
-
WEBIX_SENDER['send_methods']
Defines the allowed send methods.
There are two allowed methods type:
sms
email
The methods already implemented in this package are:
django_webix_sender.send_methods.email.send_email
The default Django email sender.
{ 'method': 'email', 'verbose_name': _('Send email'), 'function': 'django_webix_sender.send_methods.email.send_email' }
django_webix_sender.send_methods.skebby.send_sms
Skebby sms APIs.
{ 'method': 'sms', 'verbose_name': _('Send sms with Skebby'), 'function': 'django_webix_sender.send_methods.skebby.send_sms' }
django_webix_sender.send_methods.skebby.send_sms_old
Old Skebby sms APIs.
{ 'method': 'sms', 'verbose_name': _('Send sms with Skebby'), 'function': 'django_webix_sender.send_methods.skebby.send_sms_old' },
-
WEBIX_SENDER['attachments']
Defines the attachments model and the method to store files.
{ 'model': 'django_webix_sender.MessageAttachment', 'upload_folder': 'sender/', 'save_function': 'django_webix_sender.models.save_attachments' }
-
WEBIX_SENDER['typology_model']
Defines if the message typology are enabled.
{ 'enabled': True, 'required': False }
-
WEBIX_SENDER['recipients']
Defines the models to show as a list of recipients.
{ 'model': 'django_webix_sender.Customer', 'datatable_fields': ['user', 'name', 'sms', 'email'] }
Base Template¶
Create a base html template (e.g. <app_name>/templates/base.html)
{% load i18n %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
{% include "django_webix/static_meta.html" %}
</head>
<body>
</body>
<script type="text/javascript" charset="utf-8">
webix.ready(function () {
webix.ui({
id: 'content_right',
rows: []
});
webix.extend($$('content_right'), webix.OverlayBox);
load_js('{% url 'django_webix_sender.list' %}');
});
</script>
</html>
Customization¶
Recipient class¶
Create a subclass of DjangoWebixSender
and define get_sms
, get_email
, get_sms_related
and get_email_related
properties.
class Recipients(DjangoWebixSender):
name = models.CharField(max_length=255, verbose_name=_('Name'))
sms = models.CharField(max_length=32, blank=True, null=True, verbose_name=_('Sms'))
email = models.EmailField(max_length=255, blank=True, null=True, verbose_name=_('Email'))
parent = models.ForeignKey('self', blank=True, null=True, verbose_name=_('Parent'))
@property
def get_sms(self):
return self.sms
@property
def get_email(self):
return self.email
@property
def get_sms_related(self):
return self.parent_set.all()
@property
def get_email_related(self):
return self.parent_set.all()
Send method¶
def send_sms(recipients, body, message_sent):
# ...
# API gateway sms send
# ...
for recipient, recipient_address in recipients['valids']:
message_recipient = MessageRecipient(
message_sent=message_sent,
recipient=recipient,
sent_number=1,
status='success',
recipient_address=recipient_address
)
message_recipient.save()
for recipient in recipients['invalids']:
pass
for recipient, recipient_address in recipients['duplicates']:
pass
return message_sent