2012-02-28 16:59:30 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
# vim: ai ts=4 sts=4 et sw=4
|
|
|
|
# encoding=utf-8
|
|
|
|
|
|
|
|
# -------------------------------------------------------------------- #
|
|
|
|
# MAIN CONFIGURATION #
|
|
|
|
# -------------------------------------------------------------------- #
|
2012-05-15 13:03:43 +00:00
|
|
|
import os
|
|
|
|
from os.path import join
|
2012-02-28 16:59:30 +00:00
|
|
|
|
2012-05-15 13:03:43 +00:00
|
|
|
PROJECT_PATH = os.path.dirname(__file__)
|
2012-02-28 16:59:30 +00:00
|
|
|
|
|
|
|
# you should configure your database here before doing any real work.
|
|
|
|
# see: http://docs.djangoproject.com/en/dev/ref/settings/#databases
|
|
|
|
DATABASES = {
|
|
|
|
"default": {
|
|
|
|
"ENGINE": "django.db.backends.postgresql_psycopg2",
|
|
|
|
"NAME": "smsbest",
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-05-15 13:03:43 +00:00
|
|
|
MEDIA_ROOT = join(PROJECT_PATH, 'static')
|
|
|
|
LOCAL_DEVELOPMENT = True
|
2012-02-28 16:59:30 +00:00
|
|
|
# the rapidsms backend configuration is designed to resemble django's
|
|
|
|
# database configuration, as a nested dict of (name, configuration).
|
|
|
|
#
|
|
|
|
# the ENGINE option specifies the module of the backend; the most common
|
|
|
|
# backend types (for a GSM modem or an SMPP server) are bundled with
|
|
|
|
# rapidsms, but you may choose to write your own.
|
|
|
|
#
|
|
|
|
# all other options are passed to the Backend when it is instantiated,
|
|
|
|
# to configure it. see the documentation in those modules for a list of
|
|
|
|
# the valid options for each.
|
|
|
|
INSTALLED_BACKENDS = {
|
|
|
|
#"att": {
|
|
|
|
# "ENGINE": "rapidsms.backends.gsm",
|
|
|
|
# "PORT": "/dev/ttyUSB0"
|
|
|
|
#},
|
|
|
|
#"verizon": {
|
|
|
|
# "ENGINE": "rapidsms.backends.gsm,
|
|
|
|
# "PORT": "/dev/ttyUSB1"
|
|
|
|
#},
|
|
|
|
"atlas": {
|
|
|
|
"ENGINE": "rapidsms.backends.http",
|
|
|
|
"host": "0.0.0.0",
|
|
|
|
"port": 8086,
|
|
|
|
"gateway_url": "http://atlas.gnowledge.org:8001/gateway/send",
|
|
|
|
"params_outgoing": "secret=something+secret&to=%(phone_number)s&txt=%(message)s",
|
|
|
|
"params_incoming": "from=%(phone_number)s&txt=%(message)s"
|
|
|
|
|
|
|
|
},
|
|
|
|
"message_tester": {
|
|
|
|
"ENGINE": "rapidsms.backends.bucket",
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# to help you get started quickly, many django/rapidsms apps are enabled
|
|
|
|
# by default. you may wish to remove some and/or add your own.
|
|
|
|
INSTALLED_APPS = [
|
|
|
|
|
|
|
|
# the essentials.
|
|
|
|
"django_nose",
|
|
|
|
"djtables",
|
|
|
|
"rapidsms",
|
|
|
|
|
|
|
|
# common dependencies (which don't clutter up the ui).
|
|
|
|
"rapidsms.contrib.handlers",
|
|
|
|
"rapidsms.contrib.ajax",
|
|
|
|
|
|
|
|
# enable the django admin using a little shim app (which includes
|
|
|
|
# the required urlpatterns), and a bunch of undocumented apps that
|
|
|
|
# the AdminSite seems to explode without.
|
|
|
|
"django.contrib.sites",
|
|
|
|
"django.contrib.auth",
|
|
|
|
"django.contrib.admin",
|
|
|
|
"django.contrib.sessions",
|
|
|
|
"django.contrib.contenttypes",
|
|
|
|
|
|
|
|
# the rapidsms contrib apps.
|
|
|
|
# "rapidsms.contrib.default",
|
|
|
|
# "rapidsms.contrib.export",
|
|
|
|
"rapidsms.contrib.httptester",
|
|
|
|
# "rapidsms.contrib.locations",
|
|
|
|
"rapidsms.contrib.messagelog",
|
|
|
|
"rapidsms.contrib.messaging",
|
|
|
|
"rapidsms.contrib.registration",
|
|
|
|
# "rapidsms.contrib.scheduler",
|
|
|
|
# "rapidsms.contrib.echo",
|
|
|
|
|
|
|
|
"mumbai"
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# this rapidsms-specific setting defines which views are linked by the
|
|
|
|
# tabbed navigation. when adding an app to INSTALLED_APPS, you may wish
|
|
|
|
# to add it here, also, to expose it in the rapidsms ui.
|
|
|
|
RAPIDSMS_TABS = [
|
|
|
|
("rapidsms.contrib.messagelog.views.message_log", "Message Log"),
|
|
|
|
("rapidsms.contrib.registration.views.registration", "Registration"),
|
|
|
|
("rapidsms.contrib.messaging.views.messaging", "Messaging"),
|
|
|
|
# ("rapidsms.contrib.locations.views.locations", "Map"),
|
|
|
|
# ("rapidsms.contrib.scheduler.views.index", "Event Scheduler"),
|
|
|
|
("rapidsms.contrib.httptester.views.generate_identity", "Message Tester"),
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
# -------------------------------------------------------------------- #
|
|
|
|
# BORING CONFIGURATION #
|
|
|
|
# -------------------------------------------------------------------- #
|
|
|
|
|
|
|
|
|
|
|
|
# debug mode is turned on as default, since rapidsms is under heavy
|
|
|
|
# development at the moment, and full stack traces are very useful
|
|
|
|
# when reporting bugs. don't forget to turn this off in production.
|
|
|
|
DEBUG = TEMPLATE_DEBUG = True
|
|
|
|
|
|
|
|
|
|
|
|
# after login (which is handled by django.contrib.auth), redirect to the
|
|
|
|
# dashboard rather than 'accounts/profile' (the default).
|
|
|
|
LOGIN_REDIRECT_URL = "/"
|
|
|
|
|
|
|
|
|
|
|
|
# use django-nose to run tests. rapidsms contains lots of packages and
|
|
|
|
# modules which django does not find automatically, and importing them
|
|
|
|
# all manually is tiresome and error-prone.
|
|
|
|
TEST_RUNNER = "django_nose.NoseTestSuiteRunner"
|
|
|
|
|
|
|
|
|
|
|
|
# for some reason this setting is blank in django's global_settings.py,
|
|
|
|
# but it is needed for static assets to be linkable.
|
|
|
|
MEDIA_URL = "/static/"
|
|
|
|
|
|
|
|
|
|
|
|
# this is required for the django.contrib.sites tests to run, but also
|
|
|
|
# not included in global_settings.py, and is almost always ``1``.
|
|
|
|
# see: http://docs.djangoproject.com/en/dev/ref/contrib/sites/
|
|
|
|
SITE_ID = 1
|
|
|
|
|
|
|
|
|
|
|
|
# the default log settings are very noisy.
|
|
|
|
LOG_LEVEL = "DEBUG"
|
|
|
|
LOG_FILE = "rapidsms.log"
|
|
|
|
LOG_FORMAT = "[%(name)s]: %(message)s"
|
|
|
|
LOG_SIZE = 8192 # 8192 bits = 8 kb
|
|
|
|
LOG_BACKUPS = 256 # number of logs to keep
|
|
|
|
|
|
|
|
|
|
|
|
# these weird dependencies should be handled by their respective apps,
|
|
|
|
# but they're not, so here they are. most of them are for django admin.
|
|
|
|
TEMPLATE_CONTEXT_PROCESSORS = [
|
|
|
|
"django.core.context_processors.auth",
|
|
|
|
"django.core.context_processors.debug",
|
|
|
|
"django.core.context_processors.i18n",
|
|
|
|
"django.core.context_processors.media",
|
|
|
|
"django.core.context_processors.request",
|
|
|
|
]
|
|
|
|
|
|
|
|
# template loaders load templates from various places.
|
|
|
|
# for djtables to work properly, the egg loader needs to be
|
|
|
|
# included, the others are fairly standard.
|
|
|
|
TEMPLATE_LOADERS = (
|
|
|
|
'django.template.loaders.filesystem.Loader',
|
|
|
|
'django.template.loaders.app_directories.Loader',
|
|
|
|
'django.template.loaders.eggs.Loader'
|
|
|
|
)
|
|
|
|
|
2012-05-15 13:03:43 +00:00
|
|
|
TEMPLATE_DIRS = (
|
|
|
|
join(PROJECT_PATH, "templates"),
|
|
|
|
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
|
|
|
|
# Always use forward slashes, even on Windows.
|
|
|
|
# Don't forget to use absolute paths, not relative paths.
|
|
|
|
)
|
|
|
|
|
2012-02-28 16:59:30 +00:00
|
|
|
# -------------------------------------------------------------------- #
|
|
|
|
# HERE BE DRAGONS! #
|
|
|
|
# these settings are pure hackery, and will go away soon #
|
|
|
|
# -------------------------------------------------------------------- #
|
|
|
|
|
|
|
|
|
|
|
|
# these apps should not be started by rapidsms in your tests, however,
|
|
|
|
# the models and bootstrap will still be available through django.
|
|
|
|
TEST_EXCLUDED_APPS = [
|
|
|
|
"django.contrib.sessions",
|
|
|
|
"django.contrib.contenttypes",
|
|
|
|
"django.contrib.auth",
|
|
|
|
"rapidsms",
|
|
|
|
"rapidsms.contrib.ajax",
|
|
|
|
"rapidsms.contrib.httptester",
|
|
|
|
]
|
|
|
|
|
|
|
|
# the project-level url patterns
|
|
|
|
ROOT_URLCONF = "urls"
|
|
|
|
|
|
|
|
# import local_settings.py
|
|
|
|
try:
|
|
|
|
from local_settings import *
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
# since we might hit the database from any thread during testing, the
|
|
|
|
# in-memory sqlite database isn't sufficient. it spawns a separate
|
|
|
|
# virtual database for each thread, and syncdb is only called for the
|
|
|
|
# first. this leads to confusing "no such table" errors. We create
|
|
|
|
# a named temporary instance instead.
|
|
|
|
import os
|
|
|
|
import tempfile
|
|
|
|
import sys
|
|
|
|
|
|
|
|
if 'test' in sys.argv:
|
|
|
|
for db_name in DATABASES:
|
|
|
|
DATABASES[db_name]['TEST_NAME'] = os.path.join(
|
|
|
|
tempfile.gettempdir(),
|
|
|
|
"%s.rapidsms.test.sqlite3" % db_name)
|
|
|
|
|