def send(sms_to, sms_body, **kwargs):
    """
    Site: http://iqsms.ru/
    API: http://iqsms.ru/api/
    """
    headers = {
        "User-Agent":
        "DBMail/%s" % get_version(),
        'Authorization':
        'Basic %s' % b64encode("%s:%s" %
                               (settings.IQSMS_API_LOGIN,
                                settings.IQSMS_API_PASSWORD)).decode("ascii")
    }

    kwargs.update({
        'phone': sms_to,
        'text': from_unicode(sms_body),
        'sender': kwargs.pop('sms_from', settings.IQSMS_FROM)
    })

    http = HTTPConnection(kwargs.pop("api_url", "gate.iqsms.ru"))
    http.request("GET", "/send/?" + urlencode(kwargs), headers=headers)
    response = http.getresponse()

    if response.status != 200:
        raise IQSMSError(response.reason)

    body = response.read().strip()
    if '=accepted' not in body:
        raise IQSMSError(body)

    return int(body.split('=')[0])
Exemple #2
0
def send(sms_to, sms_body, **kwargs):
    """
    Site: http://iqsms.ru/
    API: http://iqsms.ru/api/
    """
    headers = {
        "User-Agent": "DBMail/%s" % get_version(),
        'Authorization': 'Basic %s' % b64encode(
            "%s:%s" % (
                settings.IQSMS_API_LOGIN, settings.IQSMS_API_PASSWORD
            )).decode("ascii")
    }

    kwargs.update({
        'phone': sms_to,
        'text': from_unicode(sms_body),
        'sender': kwargs.pop('sms_from', settings.IQSMS_FROM)
    })

    http = HTTPConnection(kwargs.pop("api_url", "gate.iqsms.ru"))
    http.request("GET", "/send/?" + urlencode(kwargs), headers=headers)
    response = http.getresponse()

    if response.status != 200:
        raise IQSMSError(response.reason)

    body = response.read().strip()
    if '=accepted' not in body:
        raise IQSMSError(body)

    return int(body.split('=')[0])
Exemple #3
0
def send(sms_to, sms_body, **kwargs):
    """
    Site: http://smsaero.ru/
    API: http://smsaero.ru/api/
    """
    headers = {
        "User-Agent": "DBMail/%s" % get_version(),
    }

    kwargs.update({
        'user': settings.SMSAERO_LOGIN,
        'password': settings.SMSAERO_MD5_PASSWORD,
        'from': kwargs.pop('sms_from', settings.SMSAERO_FROM),
        'to': sms_to.replace('+', ''),
        'text': from_unicode(sms_body)
    })

    http = HTTPConnection(kwargs.pop("api_url", "gate.smsaero.ru"))
    http.request("GET", "/send/?" + urlencode(kwargs), headers=headers)
    response = http.getresponse()

    if response.status != 200:
        raise AeroSmsError(response.reason)

    body = response.read().strip()
    if '=accepted' not in body:
        raise AeroSmsError(body)

    return int(body.split('=')[0])
def send(sms_to, sms_body, **kwargs):
    """
    Site: https://www.twilio.com/
    API: https://www.twilio.com/docs/api/rest/sending-messages
    """
    headers = {
        "Content-type":
        "application/x-www-form-urlencoded",
        "User-Agent":
        "DBMail/%s" % get_version(),
        'Authorization':
        'Basic %s' % b64encode("%s:%s" %
                               (settings.TWILIO_ACCOUNT_SID,
                                settings.TWILIO_AUTH_TOKEN)).decode("ascii")
    }

    kwargs.update({
        'From': kwargs.pop('sms_from', settings.TWILIO_FROM),
        'To': sms_to,
        'Body': from_unicode(sms_body)
    })

    http = HTTPSConnection(kwargs.pop("api_url", "api.twilio.com"))
    http.request("POST",
                 "/2010-04-01/Accounts/%s/Messages.json" %
                 settings.TWILIO_ACCOUNT_SID,
                 headers=headers,
                 body=urlencode(kwargs))

    response = http.getresponse()
    if response.status != 201:
        raise TwilioSmsError(response.reason)

    return loads(response.read()).get('sid')
def send(token, title, **kwargs):
    """
    Site: https://boxcar.io/
    API: http://help.boxcar.io/knowledgebase/topics/48115-boxcar-api
    Desc: Best app for system administrators
    """
    headers = {
        "Content-type": "application/x-www-form-urlencoded",
        "User-Agent": "DBMail/%s" % get_version(),
    }

    data = {
        "user_credentials": token,
        "notification[title]": from_unicode(title),
        "notification[sound]": "notifier-2"
    }

    for k, v in kwargs.items():
        data['notification[%s]' % k] = from_unicode(v)

    http = HTTPSConnection(kwargs.pop("api_url", "new.boxcar.io"))
    http.request(
        "POST", "/api/notifications",
        headers=headers,
        body=urlencode(data))
    response = http.getresponse()

    if response.status != 201:
        raise BoxcarError(response.reason)
    return True
Exemple #6
0
 def _insert_mailer_identification_head(self):
     if not ADD_HEADER:
         return
     headers = self._kwargs.pop('headers', {})
     headers.update(
         {'X-Mailer-Wrapper': 'django-db-mailer ver %s' % get_version()})
     self._kwargs['headers'] = headers
Exemple #7
0
def send(sms_to, sms_body, **kwargs):
    """
    Site: https://www.twilio.com/
    API: https://www.twilio.com/docs/api/rest/sending-messages
    """
    headers = {
        "Content-type": "application/x-www-form-urlencoded",
        "User-Agent": "DBMail/%s" % get_version(),
        'Authorization': 'Basic %s' % b64encode(
            "%s:%s" % (
                settings.TWILIO_ACCOUNT_SID, settings.TWILIO_AUTH_TOKEN
            )).decode("ascii")

    }

    kwargs.update({
        'From': kwargs.pop('sms_from', settings.TWILIO_FROM),
        'To': sms_to,
        'Body': from_unicode(sms_body)
    })

    http = HTTPSConnection(kwargs.pop("api_url", "api.twilio.com"))
    http.request(
        "POST",
        "/2010-04-01/Accounts/%s/Messages.json" % settings.TWILIO_ACCOUNT_SID,
        headers=headers,
        body=urlencode(kwargs))

    response = http.getresponse()
    if response.status != 201:
        raise TwilioSmsError(response.reason)

    return loads(response.read()).get('sid')
Exemple #8
0
 def _insert_mailer_identification_head(self):
     if not ADD_HEADER:
         return
     headers = self._kwargs.pop('headers', {})
     headers.update(
         {'X-Mailer-Wrapper': 'django-db-mailer ver %s' % get_version()})
     self._kwargs['headers'] = headers
Exemple #9
0
def send(channel, message, **kwargs):
    """
    Site: https://slack.com
    API: https://api.slack.com
    Desc: real-time messaging
    """
    headers = {
        "Content-type": "application/x-www-form-urlencoded",
        "User-Agent": "DBMail/%s" % get_version(),
    }

    username = from_unicode(kwargs.pop("username", settings.SLACK_USERNAME))
    hook_url = from_unicode(kwargs.pop("hook_url", settings.SLACK_HOOCK_URL))
    channel = from_unicode(channel or settings.SLACK_CHANNEL)
    emoji = from_unicode(kwargs.pop("emoji", ""))
    message = from_unicode(message)

    data = {
        "channel": channel,
        "username": username,
        "text": message,
        "icon_emoji": emoji,
    }

    _data = kwargs.pop('data', None)
    if _data is not None:
        data.update(_data)

    up = urlparse(hook_url)
    http = HTTPSConnection(up.netloc)
    http.request(
        "POST", up.path,
        headers=headers,
        body=urlencode({"payload": dumps(data)}))
    response = http.getresponse()

    if response.status != 200:
        raise SlackError(response.reason)

    body = response.read()
    if body != "ok":
        raise SlackError(repr(body))
    return True
def send(channel, message, **kwargs):
    """
    Site: https://slack.com
    API: https://api.slack.com
    Desc: real-time messaging
    """
    headers = {
        "Content-type": "application/x-www-form-urlencoded",
        "User-Agent": "DBMail/%s" % get_version(),
    }

    username = from_unicode(kwargs.pop("username", settings.SLACK_USERNAME))
    hook_url = from_unicode(kwargs.pop("hook_url", settings.SLACK_HOOCK_URL))
    channel = from_unicode(channel or settings.SLACK_CHANNEL)
    emoji = from_unicode(kwargs.pop("emoji", ""))
    message = from_unicode(message)

    data = {
        "channel": channel,
        "username": username,
        "text": message,
        "icon_emoji": emoji,
    }

    _data = kwargs.pop('data', None)
    if _data is not None:
        data.update(_data)

    up = urlparse(hook_url)
    http = HTTPSConnection(up.netloc)
    http.request("POST",
                 up.path,
                 headers=headers,
                 body=urlencode({"payload": dumps(data)}))
    response = http.getresponse()

    if response.status != 200:
        raise SlackError(response.reason)

    body = response.read()
    if body != "ok":
        raise SlackError(repr(body))
    return True
Exemple #11
0
def send(api_key, description, **kwargs):
    """
    Site: http://prowlapp.com
    API: http://prowlapp.com/api.php
    Desc: Best app for system administrators
    """
    headers = {
        "User-Agent": "DBMail/%s" % get_version(),
        "Content-type": "application/x-www-form-urlencoded"
    }

    application = from_unicode(kwargs.pop("app", settings.PROWL_APP), 256)
    event = from_unicode(kwargs.pop("event", 'Alert'), 1024)
    description = from_unicode(description, 10000)

    data = {
        "apikey": api_key,
        "application": application,
        "event": event,
        "description": description,
        "priority": kwargs.pop("priority", 1)
    }

    provider_key = kwargs.pop("providerkey", None)
    url = kwargs.pop('url', None)

    if provider_key is not None:
        data["providerkey"] = provider_key

    if url is not None:
        data["url"] = url[0:512]

    http = HTTPSConnection(kwargs.pop("api_url", "api.prowlapp.com"))
    http.request("POST",
                 "/publicapi/add",
                 headers=headers,
                 body=urlencode(data))
    response = http.getresponse()

    if response.status != 200:
        raise ProwlError(response.reason)
    return True
Exemple #12
0
def send(api_key, description, **kwargs):
    """
    Site: http://prowlapp.com
    API: http://prowlapp.com/api.php
    Desc: Best app for system administrators
    """
    headers = {
        "User-Agent": "DBMail/%s" % get_version(),
        "Content-type": "application/x-www-form-urlencoded"
    }

    application = from_unicode(kwargs.pop("app", settings.PROWL_APP), 256)
    event = from_unicode(kwargs.pop("event", 'Alert'), 1024)
    description = from_unicode(description, 10000)

    data = {
        "apikey": api_key,
        "application": application,
        "event": event,
        "description": description,
        "priority": kwargs.pop("priority", 1)
    }

    provider_key = kwargs.pop("providerkey", None)
    url = kwargs.pop('url', None)

    if provider_key is not None:
        data["providerkey"] = provider_key

    if url is not None:
        data["url"] = url[0:512]

    http = HTTPSConnection(kwargs.pop("api_url", "api.prowlapp.com"))
    http.request(
        "POST", "/publicapi/add",
        headers=headers,
        body=urlencode(data))
    response = http.getresponse()

    if response.status != 200:
        raise ProwlError(response.reason)
    return True
Exemple #13
0
def send(device_id, description, **kwargs):
    """
    Site: http://parse.com
    API: https://www.parse.com/docs/push_guide#scheduled/REST
    Desc: Best app for system administrators
    """
    headers = {
        "X-Parse-Application-Id": settings.PARSE_APP_ID,
        "X-Parse-REST-API-Key": settings.PARSE_API_KEY,
        "User-Agent": "DBMail/%s" % get_version(),
        "Content-type": "application/json",
    }

    data = {
        "where": {
            "user_id": device_id,
        },
        "data": {
            "alert": description,
            "title": kwargs.pop("event")
        }
    }

    _data = kwargs.pop('data', None)
    if _data is not None:
        data.update(_data)

    http = HTTPSConnection(kwargs.pop("api_url", "api.parse.com"))
    http.request(
        "POST", "/1/push",
        headers=headers,
        body=dumps(data))
    response = http.getresponse()

    if response.status != 200:
        raise ParseComError(response.reason)

    body = loads(response.read())
    if body['error']:
        raise ParseComError(body['error'])
    return True
Exemple #14
0
def send(user, message, **kwargs):
    """
    Site: https://pushover.net/
    API: https://pushover.net/api
    Desc: real-time notifications
    """
    headers = {
        "Content-type": "application/x-www-form-urlencoded",
        "User-Agent": "DBMail/%s" % get_version(),
    }

    title = from_unicode(kwargs.pop("title", settings.PUSHOVER_APP))
    message = from_unicode(message)

    data = {
        "token": settings.PUSHOVER_TOKEN,
        "user": user,
        "message": message,
        "title": title,
        "priority": kwargs.pop("priority", 0)
    }

    _data = kwargs.pop('data', None)
    if _data is not None:
        data.update(_data)

    http = HTTPSConnection(kwargs.pop("api_url", "api.pushover.net"))
    http.request(
        "POST", "/1/messages.json",
        headers=headers,
        body=urlencode(data))
    response = http.getresponse()

    if response.status != 200:
        raise PushOverError(response.reason)

    body = loads(response.read())
    if body.get('status') != 1:
        raise PushOverError(repr(body))
    return True
Exemple #15
0
def send(user, message, **kwargs):
    """
    Site: https://pushover.net/
    API: https://pushover.net/api
    Desc: real-time notifications
    """
    headers = {
        "Content-type": "application/x-www-form-urlencoded",
        "User-Agent": "DBMail/%s" % get_version(),
    }

    title = from_unicode(kwargs.pop("title", settings.PUSHOVER_APP))
    message = from_unicode(message)

    data = {
        "token": settings.PUSHOVER_TOKEN,
        "user": user,
        "message": message,
        "title": title,
        "priority": kwargs.pop("priority", 0)
    }

    _data = kwargs.pop('data', None)
    if _data is not None:
        data.update(_data)

    http = HTTPSConnection(kwargs.pop("api_url", "api.pushover.net"))
    http.request(
        "POST", "/1/messages.json",
        headers=headers,
        body=urlencode(data))
    response = http.getresponse()

    if response.status != 200:
        raise PushOverError(response.reason)

    body = loads(response.read())
    if body.get('status') != 1:
        raise PushOverError(repr(body))
    return True
Exemple #16
0
def send(sms_to, sms_body, **kwargs):
    """
    Site: http://smsaero.ru/
    API: http://smsaero.ru/api/
    """
    headers = {
        "User-Agent": "DBMail/%s" % get_version(),
    }

    kwargs.update({
        'user': settings.SMSAERO_LOGIN,
        'password': settings.SMSAERO_MD5_PASSWORD,
        'from': kwargs.pop('sms_from', settings.SMSAERO_FROM),
        'to': sms_to.replace('+', ''),
        'text': from_unicode(sms_body),
        'answer': 'json',
    })

    http = HTTPConnection(kwargs.pop("api_url", "gate.smsaero.ru"))
    http.request("GET", "/send/?" + urlencode(kwargs), headers=headers)
    response = http.getresponse()

    if response.status != 200:
        raise AeroSmsError(response.reason)

    read = response.read().decode(response.headers.get_content_charset())
    data = json.loads(read)

    status = None
    if 'result' in data:
        status = data['result']

    sms_id = None
    if 'id' in data:
        sms_id = data['id']

    if sms_id and status == 'accepted':
        return True
    return False
Exemple #17
0
def send(device_id, description, **kwargs):
    """
    Site: http://parse.com
    API: https://www.parse.com/docs/push_guide#scheduled/REST
    Desc: Best app for system administrators
    """
    headers = {
        "X-Parse-Application-Id": settings.PARSE_APP_ID,
        "X-Parse-REST-API-Key": settings.PARSE_API_KEY,
        "User-Agent": "DBMail/%s" % get_version(),
        "Content-type": "application/json",
    }

    data = {
        "where": {
            "user_id": device_id,
        },
        "data": {
            "alert": description,
            "title": kwargs.pop("event")
        }
    }

    _data = kwargs.pop('data', None)
    if _data is not None:
        data.update(_data)

    http = HTTPSConnection(kwargs.pop("api_url", "api.parse.com"))
    http.request("POST", "/1/push", headers=headers, body=dumps(data))
    response = http.getresponse()

    if response.status != 200:
        raise ParseComError(response.reason)

    body = loads(response.read())
    if body['error']:
        raise ParseComError(body['error'])
    return True
    'custom_undo_redo_levels': 10,
}

CKEDITOR_UPLOAD_PATH = os.path.join(MEDIA_ROOT, 'uploads')

CKEDITOR_CONFIGS = {
    'default': {
        'toolbar': None,
        'height': 300,
        'width': '100%',
        'allowedContent': True,
    },
}

SUIT_CONFIG = {
    'ADMIN_NAME': 'Django DB Mailer v.%s' % dbmail.get_version(),
    'SEARCH_URL': '',
    'MENU': (
        {'app': 'dbmail', 'label': 'DBMailer', 'icon': 'icon-align-justify'},
    )
}

GRAPPELLI_ADMIN_TITLE = 'Django DB Mailer v.%s' % dbmail.get_version()
GRAPPELLI_INDEX_DASHBOARD = 'demo.dashboard.DBMailerDashboard'

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
DEFAULT_FROM_EMAIL = 'Django <*****@*****.**>'


if 'test' not in sys.argv:
    CACHES = {
Exemple #19
0
from setuptools import setup, find_packages
from dbmail import get_version


setup(
    name='django-db-mailer',
    version=get_version(),
    description='Django module to easily send emails using '
                'django templates stored in a database.',
    keywords="django db mail email html text tts sms push templates mailer",
    long_description=open('README.rst').read(),
    author="GoTLiuM InSPiRiT",
    author_email='*****@*****.**',
    url='http://github.com/LPgenerator/django-db-mailer/',
    packages=find_packages(exclude=['demo']),
    package_data={'dbmail': [
        'locale/*/LC_MESSAGES/django.*',
        'static/dbmail/admin/js/*.js',
        'fixtures/*.json',
    ]},
    include_package_data=True,
    install_requires=[
        'setuptools',
    ],
    zip_safe=False,
    classifiers=[
        'Development Status :: 5 - Production/Stable',
        'Environment :: Web Environment',
        'Framework :: Django',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: GNU General Public License (GPL)',
Exemple #20
0
# The encoding of source files.
#source_encoding = 'utf-8-sig'

# The master toctree document.
master_doc = 'index'

# General information about the project.
project = u'django-db-mailer'
copyright = u'2014, '

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = get_version()
# The full version, including alpha/beta/rc tags.
release = get_version()

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None

# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'

# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
Exemple #21
0
    'custom_undo_redo_levels': 10,
}

CKEDITOR_UPLOAD_PATH = os.path.join(MEDIA_ROOT, 'uploads')

CKEDITOR_CONFIGS = {
    'default': {
        'toolbar': None,
        'height': 300,
        'width': '100%',
        'allowedContent': True,
    },
}

SUIT_CONFIG = {
    'ADMIN_NAME': 'Django DB Mailer v.%s' % dbmail.get_version(),
    'SEARCH_URL': '',
    'MENU': (
        {'app': 'dbmail', 'label': 'DBMailer', 'icon': 'icon-align-justify'},
    )
}

GRAPPELLI_ADMIN_TITLE = 'Django DB Mailer v.%s' % dbmail.get_version()
GRAPPELLI_INDEX_DASHBOARD = 'demo.dashboard.DBMailerDashboard'

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
DEFAULT_FROM_EMAIL = 'Django <*****@*****.**>'


if 'test' not in sys.argv:
    CACHES = {
from setuptools import setup, find_packages
from dbmail import get_version

setup(
    name='django-db-mailer',
    version=get_version(),
    description='Django module to easily send emails using '
    'django templates stored in a database.',
    keywords="django db mail email html text tts sms push templates mailer",
    long_description=open('README.rst', mode='r', encoding='utf-8').read(),
    author="GoTLiuM InSPiRiT",
    author_email='*****@*****.**',
    url='http://github.com/LPgenerator/django-db-mailer/',
    packages=find_packages(exclude=['demo']),
    package_data={
        'dbmail': [
            'locale/*/LC_MESSAGES/django.*',
            'static/dbmail/admin/js/*.js',
            'fixtures/*.json',
        ]
    },
    include_package_data=True,
    install_requires=[
        'setuptools',
        'Django>1.9,<=2.1.5',
        'twilio==6.31.1',
        'django-push-notifications==2.0.0',
        'djangorestframework>=3.6.3',
    ],
    zip_safe=False,
    classifiers=[