Skip to content

Commit

Permalink
Import Newfies Dialer project
Browse files Browse the repository at this point in the history
  • Loading branch information
areski committed Jun 10, 2011
0 parents commit 2665345
Show file tree
Hide file tree
Showing 454 changed files with 31,760 additions and 0 deletions.
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
*.pyc
*dilla*
*.db
*nbproject*
*devserver*
test.db
settings_local.py
docs/_build/*
692 changes: 692 additions & 0 deletions COPYING

Large diffs are not rendered by default.

55 changes: 55 additions & 0 deletions HACKING
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
Nova Style Commandments
=======================

Step 1: Read http://www.python.org/dev/peps/pep-0008/
Step 2: Read http://www.python.org/dev/peps/pep-0008/ again
Step 3: Read on

Imports
-------
- thou shalt not import objects, only modules
- thou shalt not import more than one module per line
- thou shalt not make relative imports
- thou shalt "from nova import vendor" before importing third party code
- thou shalt organize your imports according to the following template

::
# vim: tabstop=4 shiftwidth=4 softtabstop=4
{{stdlib imports in human alphabetical order}}
\n
from nova import vendor
{{vendor imports in human alphabetical order}}
\n
{{nova imports in human alphabetical order}}
\n
\n
{{begin your code}}


General
-------
- thou shalt put two newlines twixt toplevel code (funcs, classes, etc)
- thou shalt put one newline twixt methods in classes and anywhere else
- thou shalt not write "except:", use "except Exception:" at the very least
- thou shalt include your name with TODOs as in "TODO(termie)"
- thou shalt not name anything the same name as a builtin or reserved word
- thou shalt not violate causality in our time cone, or else


Human Alphabetical Order Examples
---------------------------------
::
import httplib
import logging
import random
import StringIO
import time
import unittest



Tool to make code PEP8 compliant
--------------------------------
- Install : https://github.com/cburroughs/pep8
- Usage in your project directory : pep8 --statistics --filename=*.py --show-source --show-pep8 .

21 changes: 21 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
global-exclude *.pyc

include newfies/CREDITS
include newfies/INSTALL
include newfies/django.wsgi
include newfies/requirements.txt

recursive-include newfies/sms *
recursive-include newfies/provider *
recursive-include newfies/sms_billing *
recursive-include newfies/sms_report *
recursive-include newfies/user_profile *
recursive-include newfies/templates *
recursive-include newfies/resources *
recursive-include newfies/static *
recursive-include newfies/docs *
recursive-include newfies/addons *

exclude newfies/__init__.py
exclude newfies/settings.py
exclude newfies/manage.py
197 changes: 197 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
.. image:: https://github.com/Star2Billing/newfies/raw/master/newfies/resources/images/newfies.png


Newfies is a bulk dialer application which was commissioned by a charity named
Kubatana (http://www.kubatana.net) based in Zimbabwe, which sponsors the
Freedomfone project (http://www.freedomfone.org/) dedicated to providing
information via phone technology.

In less economically developed countries, Internet is often limited, but there
is usually comprehensive mobile phone coverage. Freedomfone will use Newfies
to dial up people’s phones and offer health information on Cholera, Malaria
and so many other avoidable health issues in the third world, which may be
alleviated by education. Newfies was so named after the Newfoundland Dog
which is used by sea rescue services around the world.

Newfies has been built using a messaging system so that it can support
distributed processing on cloud servers. The platform is focused on real-time
operations and task call distributions to clustered brokers and workers
meaning that many millions of calls can be processed daily.

Newfies can be installed on a standalone server for smaller deployments.
It currently utilises the Freeswitch Telephony engine
(http://www.freeswitch.org) to process the the outbound calls however support
for other telephony engines, such as Asterisk may be added in the future.

Newfies is written in Python using the Django Framework, and operates with
message brokers such as RabbitMQ and Redis using the emerging open standard
for messaging middleware, AMPQ (Advance Messaging Queuing Processing).
Beanstalk, MongoDB, CouchDB and DBMS can also be supported.

In order to communicate with external systems, Newfies has been released with
comprehensive set of API's to easily integrate the platform with third-party
applications. Furthermore, Newfies is supplied with a comprehensive
administrative and user interface which allow you and your customers to create
outbound call campaigns, add phonebooks, subscribers, as well as record audio
messages and design more complex IVR (Interactive Voice Response) applications.
When ready and tested, the campaign can be launched from the interface.


Who is it for ?
---------------

NGOs :

- Newfies was commissioned by the Kubatana NGO Alliance (kubatana.net).
They needed a platform on which to deliver large numbers of messages to
different communities. The platform can be used to offer complex data
collection, voting applications and notification for availability of
supplies.

Marketing :

- Newfies is a strong telephony based marketing tool to deliver
advertising to your company's contacts.

Emergency :

- Provide a message delivery platform to quickly and efficiently send
messages to communities.

Finance :

- Debt Recovery and Reminders, this can be easily integrated with call
centre software and processes.

Health & Welfare :

- Deliver appointment reminders to patients of dentists, doctors and
other organisations.


Terminology
-----------

**User :** The Person configuring the campaigns and wishing to deliver
messages.

**Subscriber :** Person who will receive the message.

**Administrator :** Person administering the platform, usually with root
permission.

**Gateway :** Peer which will outbound a call and deliver the message to
the subscriber.

**Phonebook :** Group of subscribers, this is used to define the subset of
subscribers that will receive the message.

**CDR :** Call Detail Record, keep track of the calls performed by the
system, eventually can be used for monitoring and billing purposes.

**Call Request :** Describes the request to the system to run a call to a
subscriber.

**Audio Application :** This can be a simple audio delivery, a routing to
another gateway, forwarded to a Call-Centre, in fact, any to any
application that can be built on Freeswitch.


Installation
------------

Newfies is a django based application, so the major requirements are :

- python >= 2.4
- Apache / http server with WSGI modules
- Django Framework >= 1.3
- Celery >= 2.2

The rest of the requirement can easily be installed with PIP
(http://pypi.python.org/pypi/pip) :

- https://github.com/Star2Billing/newfies/blob/master/newfies/requirements.txt


Newfies takes advantage of messaging systems such as RabbitMQ or Redis. Other
alternatives provided by Celery (http://celeryproject.org) are also supported.

- Install RabbitMQ : https://github.com/Star2Billing/newfies/raw/master/newfies/docs/install_rabbitmq.txt
- or Install Redis : https://github.com/Star2Billing/newfies/raw/master/newfies/docs/install_redis.txt

An installation script can be found here : https://github.com/Star2Billing/newfies/blob/master/scripts/install-newfies.sh


Installation Script
~~~~~~~~~~~~~~~~~~~

An installation script is provided to install the web interface, this doesn't
include the install and configuration of RabbitMQ or Redis.

- https://github.com/Star2Billing/newfies/raw/master/scripts/install-newfies.sh


Documentation
-------------

General documentation :

- https://github.com/Star2Billing/newfies/blob/master/docs/

RestFul API :

- https://github.com/Star2Billing/newfies/raw/master/docs/api_doc.pdf


Applications
------------

* User Interface :
http://localhost:8000/
This application provides a User interface for restricted management of
the User's Campaign, Phonebook, Subscriber. It also provides detailed
Reporting of calls and message delivery.

* Admin Interface :
http://localhost:8000/admin/
This interface provides user (ACL) management, a full control of all
Campaigns, Phonebooks, Subscribers, Gateway, configuration of the
Audio Application.


Screenshot
----------

.. image:: https://github.com/Star2Billing/newfies/raw/master/docs/_static/images/admin_screenshot.png


Coding Conventions
------------------

This project is PEP8 compilant and please refer to these sources for the Coding
Conventions :

- http://docs.djangoproject.com/en/dev/internals/contributing/#coding-style

- http://www.python.org/dev/peps/pep-0008/


Additional information
-----------------------

Fork the project on GitHub : https://github.com/Star2Billing/newfies

License : AGPL (https://github.com/Star2Billing/newfies/blob/master/COPYING)

Website : http://www.newfies-dialer.org


Support
-------

Star2Billing S.L. (http://www.star2billing.com) offers consultancy including
installation, training and customization

Please email us at [email protected] for more information


20 changes: 20 additions & 0 deletions addons/apache/newfies.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@

Listen *:9000

<VirtualHost *:9000>

DocumentRoot /usr/share/django_app/newfies/
ErrorLog /var/log/err-newfies.log
LogLevel warn

WSGIPassAuthorization On
WSGIDaemonProcess newfies user=www-data user=www-data threads=25
WSGIProcessGroup newfies
WSGIScriptAlias / /usr/share/django_app/newfies/django.wsgi

<Directory /usr/share/django_app/newfies>
Order deny,allow
Allow from all
</Directory>

</VirtualHost>
18 changes: 18 additions & 0 deletions addons/install/etc/default/celeryd
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@

# Where the Django project is.
CELERYD_CHDIR="/path/to/newfies/"

# Path to celeryd
CELERYD="/path/to/newfies/manage.py celeryd"

# celeryd options
CELERYD_OPTS=" -l info"

# Path to celerybeat
CELERYBEAT="/path/to/newfies/manage.py celerybeat"

# Extra arguments to celerybeat
CELERYBEAT_OPTS="--schedule=/var/run/celerybeat-schedule"

# Name of the projects settings module.
export DJANGO_SETTINGS_MODULE="settings"
Loading

0 comments on commit 2665345

Please sign in to comment.