From 655e95d7cd2e2bdbcec44e6138e0ce6ebae05b28 Mon Sep 17 00:00:00 2001 From: Schuyler Erle Date: Tue, 28 Feb 2012 08:59:30 -0800 Subject: [PATCH] Add RapidSMS requirement; create smsBEST RapidSMS project. --- requirements.txt | 2 + smsBEST/__init__.py | 0 smsBEST/manage.py | 18 ++++ smsBEST/mumbai/__init__.py | 0 smsBEST/mumbai/app.py | 4 + smsBEST/mumbai/views.py | 1 + smsBEST/settings.py | 205 +++++++++++++++++++++++++++++++++++++ smsBEST/urls.py | 37 +++++++ 8 files changed, 267 insertions(+) create mode 100644 smsBEST/__init__.py create mode 100755 smsBEST/manage.py create mode 100644 smsBEST/mumbai/__init__.py create mode 100644 smsBEST/mumbai/app.py create mode 100644 smsBEST/mumbai/views.py create mode 100644 smsBEST/settings.py create mode 100644 smsBEST/urls.py diff --git a/requirements.txt b/requirements.txt index a239605..226e914 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,3 +5,5 @@ -e git+git://github.com/bit/django-extensions.git#egg=django_extensions #django_extensions django-grappelli +-e git+git://github.com/schuyler/rapidsms.git#egg=rapidsms +-e git+git://github.com/schuyler/arrest.git#egg=arrest diff --git a/smsBEST/__init__.py b/smsBEST/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/smsBEST/manage.py b/smsBEST/manage.py new file mode 100755 index 0000000..b23e297 --- /dev/null +++ b/smsBEST/manage.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +# vim: ai ts=4 sts=4 et sw=4 + +#import sys, os + +from django.core.management import execute_manager +import settings + + +if __name__ == "__main__": +# project_root = os.path.abspath( +# os.path.dirname(__file__)) + +# path = os.path.join(project_root, "apps") +# sys.path.insert(0, path) + +# sys.path.insert(0, project_root) + execute_manager(settings) diff --git a/smsBEST/mumbai/__init__.py b/smsBEST/mumbai/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/smsBEST/mumbai/app.py b/smsBEST/mumbai/app.py new file mode 100644 index 0000000..e87ddb0 --- /dev/null +++ b/smsBEST/mumbai/app.py @@ -0,0 +1,4 @@ +from rapidsms.apps.base import AppBase + +class App(AppBase): + pass diff --git a/smsBEST/mumbai/views.py b/smsBEST/mumbai/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/smsBEST/mumbai/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/smsBEST/settings.py b/smsBEST/settings.py new file mode 100644 index 0000000..fc14793 --- /dev/null +++ b/smsBEST/settings.py @@ -0,0 +1,205 @@ +#!/usr/bin/env python +# vim: ai ts=4 sts=4 et sw=4 +# encoding=utf-8 + +# -------------------------------------------------------------------- # +# MAIN CONFIGURATION # +# -------------------------------------------------------------------- # + + +# 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", + } +} + + +# 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' +) + +# -------------------------------------------------------------------- # +# 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) + diff --git a/smsBEST/urls.py b/smsBEST/urls.py new file mode 100644 index 0000000..34efec2 --- /dev/null +++ b/smsBEST/urls.py @@ -0,0 +1,37 @@ +from django.conf.urls.defaults import * +from django.conf import settings +from django.contrib import admin + +admin.autodiscover() + +urlpatterns = patterns('', + # Example: + # (r'^my-project/', include('my_project.foo.urls')), + + # Uncomment the admin/doc line below to enable admin documentation: + # (r'^admin/doc/', include('django.contrib.admindocs.urls')), + + (r'^admin/', include(admin.site.urls)), + + # RapidSMS core URLs + (r'^account/', include('rapidsms.urls.login_logout')), + url(r'^$', 'rapidsms.views.dashboard', name='rapidsms-dashboard'), + + # RapidSMS contrib app URLs + (r'^ajax/', include('rapidsms.contrib.ajax.urls')), + (r'^export/', include('rapidsms.contrib.export.urls')), + (r'^httptester/', include('rapidsms.contrib.httptester.urls')), + (r'^locations/', include('rapidsms.contrib.locations.urls')), + (r'^messagelog/', include('rapidsms.contrib.messagelog.urls')), + (r'^messaging/', include('rapidsms.contrib.messaging.urls')), + (r'^registration/', include('rapidsms.contrib.registration.urls')), + (r'^scheduler/', include('rapidsms.contrib.scheduler.urls')), +) + +if settings.DEBUG: + urlpatterns += patterns('', + # helper URLs file that automatically serves the 'static' folder in + # INSTALLED_APPS via the Django static media server (NOT for use in + # production) + (r'^', include('rapidsms.urls.static_media')), + )