summaryrefslogtreecommitdiffstats
path: root/apache
diff options
context:
space:
mode:
Diffstat (limited to 'apache')
-rw-r--r--apache/README3
-rw-r--r--apache/__init__.py0
-rw-r--r--apache/apache_django_wsgi.conf23
-rwxr-xr-xapache/django.wsgi42
-rw-r--r--apache/settings_production.py195
-rw-r--r--apache/urls_production.py87
6 files changed, 350 insertions, 0 deletions
diff --git a/apache/README b/apache/README
new file mode 100644
index 0000000..485e6a2
--- /dev/null
+++ b/apache/README
@@ -0,0 +1,3 @@
+Add the following line in your httpd.conf (generally present at /etc/apache2/httpd.conf)
+
+Include "/home/akhan/gsoc/apache/apache_django_wsgi.conf"
diff --git a/apache/__init__.py b/apache/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/apache/__init__.py
diff --git a/apache/apache_django_wsgi.conf b/apache/apache_django_wsgi.conf
new file mode 100644
index 0000000..7f1ccaf
--- /dev/null
+++ b/apache/apache_django_wsgi.conf
@@ -0,0 +1,23 @@
+<VirtualHost *:80>
+
+ Alias /robots.txt /home/akhan/gsoc/robots.txt
+ Alias /favicon.ico /home/akhan/gsoc/favicon.ico
+ Alias /static /home/akhan/gsoc/static
+
+ ErrorLog /home/akhan/gsoc/logs/error.log
+ CustomLog /home/akhan/gsoc/logs/access.log combined
+
+ WSGIScriptAlias / /home/akhan/gsoc/apache/django.wsgi
+ WSGIDaemonProcess akhan user=akhan group=users threads=25
+
+ <Directory "/home/akhan/gsoc/apache">
+ Order deny,allow
+ Allow from all
+ </Directory>
+
+ <Directory "/home/akhan/gsoc">
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+</VirtualHost>
diff --git a/apache/django.wsgi b/apache/django.wsgi
new file mode 100755
index 0000000..cc699a4
--- /dev/null
+++ b/apache/django.wsgi
@@ -0,0 +1,42 @@
+import os
+import sys
+import site
+
+STAGING=True
+
+if STAGING:
+ # staging virtual environment
+ vepath = '/home/akhan/.virtualenvs/wackyenv/lib/python2.7/site-packages'
+else:
+ # live virtual environment
+ vepath = '/home/akhan/.virtualenvs/live-server/lib/python2.7/site-packages'
+
+prev_sys_path = list(sys.path)
+
+# add the site-packages of our virtualenv as a site dir
+site.addsitedir(vepath)
+
+# add the app's directory to the PYTHONPATH
+sys.path.append('/home/akhan/gsoc')
+
+# reorder sys.path so new directories from the addsitedir show up first
+new_sys_path = [p for p in sys.path if p not in prev_sys_path]
+
+for item in new_sys_path:
+ sys.path.remove(item)
+sys.path[:0] = new_sys_path
+
+
+#Calculate the path based on the location of the WSGI script.
+apache_configuration= os.path.dirname(__file__)
+project = os.path.dirname(apache_configuration)
+workspace = os.path.dirname(project)
+sys.path.append(workspace)
+
+
+os.environ['DJANGO_SETTINGS_MODULE'] = 'gsoc.apache.settings_production'
+# make sure this directory is writable by wsgi process
+os.environ['PYTHON_EGG_CACHE'] = '/home/akhan/gsoc/.python-egg'
+
+from django.core.handlers.wsgi import WSGIHandler
+application = WSGIHandler()
diff --git a/apache/settings_production.py b/apache/settings_production.py
new file mode 100644
index 0000000..1090b7a
--- /dev/null
+++ b/apache/settings_production.py
@@ -0,0 +1,195 @@
+import os
+
+BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+# Django settings for hyperkitty project.
+
+DEBUG = False
+TEMPLATE_DEBUG = DEBUG
+
+ADMINS = (
+ ('Aamir Khan', 'syst3m.w0rm+hk@gmail.com'),
+)
+
+MANAGERS = ADMINS
+
+MAILMAN_API_URL=r'http://%(username)s:%(password)s@localhost:8001/3.0/'
+MAILMAN_USER='mailmanapi'
+MAILMAN_PASS='88ffd62d1094a6248415c59d7538793f3df5de2f04d244087952394e689e902a'
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
+ 'NAME': 'hk', # Or path to database file if using sqlite3.
+ 'USER': 'root', # Not used with sqlite3.
+ 'PASSWORD': 'rootroot', # Not used with sqlite3.
+ 'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
+ 'PORT': '', # Set to empty string for default. Not used with sqlite3.
+ }
+}
+
+# Local time zone for this installation. Choices can be found here:
+# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
+# although not all choices may be available on all operating systems.
+# On Unix systems, a value of None will cause Django to use the same
+# timezone as the operating system.
+# If running in a Windows environment this must be set to the same as your
+# system time zone.
+TIME_ZONE = 'America/Chicago'
+
+# Language code for this installation. All choices can be found here:
+# http://www.i18nguy.com/unicode/language-identifiers.html
+LANGUAGE_CODE = 'en-us'
+
+SITE_ID = 1
+
+# If you set this to False, Django will make some optimizations so as not
+# to load the internationalization machinery.
+USE_I18N = True
+
+# If you set this to False, Django will not format dates, numbers and
+# calendars according to the current locale
+USE_L10N = True
+
+# Absolute filesystem path to the directory that will hold user-uploaded files.
+# Example: "/home/media/media.lawrence.com/media/"
+MEDIA_ROOT = ''
+
+# URL that handles the media served from MEDIA_ROOT. Make sure to use a
+# trailing slash.
+# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
+MEDIA_URL = ''
+
+# Absolute path to the directory static files should be collected to.
+# Don't put anything in this directory yourself; store your static files
+# in apps' "static/" subdirectories and in STATICFILES_DIRS.
+# Example: "/home/media/media.lawrence.com/static/"
+#STATIC_ROOT = ''
+STATIC_ROOT = BASE_DIR + '/static_files/'
+
+# URL prefix for static files.
+# Example: "http://media.lawrence.com/static/"
+STATIC_URL = '/static/'
+
+# URL prefix for admin static files -- CSS, JavaScript and images.
+# Make sure to use a trailing slash.
+# Examples: "http://foo.com/static/admin/", "/static/admin/".
+ADMIN_MEDIA_PREFIX = '/static/admin/'
+
+# Additional locations of static files
+STATICFILES_DIRS = (
+ # Put strings here, like "/home/html/static" or "C:/www/django/static".
+ # Always use forward slashes, even on Windows.
+ # Don't forget to use absolute paths, not relative paths.
+ BASE_DIR + '/static/',
+)
+
+# List of finder classes that know how to find static files in
+# various locations.
+STATICFILES_FINDERS = (
+ 'django.contrib.staticfiles.finders.FileSystemFinder',
+ 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
+# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
+)
+
+# Make this unique, and don't share it with anybody.
+SECRET_KEY = 'dtc3%x(k#mzpe32dmhtsb6!3p(izk84f7nuw1-+4x8zsxwsa^z'
+
+# List of callables that know how to import templates from various sources.
+TEMPLATE_LOADERS = (
+ 'django.template.loaders.filesystem.Loader',
+ 'django.template.loaders.app_directories.Loader',
+# 'django.template.loaders.eggs.Loader',
+)
+
+
+TEMPLATE_CONTEXT_PROCESSORS = (
+ "django.contrib.auth.context_processors.auth",
+ "django.contrib.messages.context_processors.messages",
+ "django.core.context_processors.debug",
+ "django.core.context_processors.i18n",
+ "django.core.context_processors.media",
+ "django.core.context_processors.static",
+ "django.core.context_processors.csrf",
+ "django.contrib.messages.context_processors.messages",
+ "gsoc.context_processors.app_name",
+)
+
+
+MIDDLEWARE_CLASSES = (
+ 'django.middleware.common.CommonMiddleware',
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.csrf.CsrfViewMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.messages.middleware.MessageMiddleware',
+)
+
+ROOT_URLCONF = 'gsoc.apache.urls_production'
+
+TEMPLATE_DIRS = (
+ # 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.
+ BASE_DIR + '/templates',
+)
+
+AUTHENTICATION_BACKENDS = (
+ 'social_auth.backends.google.GoogleBackend',
+ 'social_auth.backends.yahoo.YahooBackend',
+ 'social_auth.backends.browserid.BrowserIDBackend',
+ 'social_auth.backends.OpenIDBackend',
+ 'django.contrib.auth.backends.ModelBackend',
+)
+
+INSTALLED_APPS = (
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+# 'django.contrib.sites',
+ 'django.contrib.messages',
+ 'django.contrib.staticfiles',
+ 'django.contrib.admin',
+ # 'django.contrib.admindocs',
+ 'gsoc',
+ 'social_auth',
+ 'djangorestframework',
+ 'gravatar',
+)
+
+
+LOGIN_URL = '/accounts/login/'
+LOGIN_REDIRECT_URL = '/'
+LOGIN_ERROR_URL = '/accounts/login/'
+SOCIAL_AUTH_COMPLETE_URL_NAME = 'socialauth_complete'
+SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'socialauth_associate_complete'
+SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user'
+SOCIAL_AUTH_UUID_LENGTH = 16
+
+AUTH_PROFILE_MODULE = 'gsoc.UserProfile'
+
+
+# A sample logging configuration. The only tangible logging
+# performed by this configuration is to send an email to
+# the site admins on every HTTP 500 error.
+# See http://docs.djangoproject.com/en/dev/topics/logging for
+# more details on how to customize your logging configuration.
+LOGGING = {
+ 'version': 1,
+ 'disable_existing_loggers': False,
+ 'handlers': {
+ 'mail_admins': {
+ 'level': 'ERROR',
+ 'class': 'django.utils.log.AdminEmailHandler'
+ }
+ },
+ 'loggers': {
+ 'django.request': {
+ 'handlers': ['mail_admins'],
+ 'level': 'ERROR',
+ 'propagate': True,
+ },
+ }
+}
+
+SOCIAL_AUTH_LAST_LOGIN = 'social_auth_last_login_backend'
+APP_NAME = 'Fedora Mailman App'
+KITTYSTORE_URL = 'postgres://mm3:mm3@localhost/mm3'
diff --git a/apache/urls_production.py b/apache/urls_production.py
new file mode 100644
index 0000000..3bb4a65
--- /dev/null
+++ b/apache/urls_production.py
@@ -0,0 +1,87 @@
+from django.conf.urls.defaults import patterns, include, url
+from django.views.generic.simple import direct_to_template
+from gsoc.api import EmailResource, ThreadResource, SearchResource
+
+urlpatterns = patterns('',
+ # Account
+ url(r'^accounts/login/$', 'views.accounts.user_login', name='user_login'),
+ url(r'^accounts/logout/$', 'views.accounts.user_logout', name='user_logout'),
+ url(r'^accounts/profile/$', 'views.accounts.user_profile', name='user_profile'),
+ url(r'^accounts/register/$', 'views.accounts.user_registration', name='user_registration'),
+
+
+ # Index
+ url(r'^/$', 'views.pages.index', name='index'),
+ url(r'^$', 'views.pages.index', name='index'),
+
+ # Archives
+ url(r'^archives/(?P<mlist_fqdn>.*@.*)/(?P<year>\d{4})/(?P<month>\d\d?)/(?P<day>\d\d?)/$',
+ 'views.list.archives'),
+ url(r'^archives/(?P<mlist_fqdn>.*@.*)/(?P<year>\d{4})/(?P<month>\d\d?)/$',
+ 'views.list.archives'),
+ url(r'^archives/(?P<mlist_fqdn>.*@.*)/$',
+ 'views.list.archives'),
+
+ # Threads
+ url(r'^thread/(?P<mlist_fqdn>.*@.*)/(?P<threadid>.+)/$',
+ 'views.thread.thread_index'),
+
+
+ # Lists
+ url(r'^list/$', 'views.pages.index'), # Can I remove this URL?
+ url(r'^list/(?P<mlist_fqdn>.*@.*)/$',
+ 'views.list.list'),
+
+ # Search Tag
+ url(r'^tag/(?P<mlist_fqdn>.*@.*)\/(?P<tag>.*)\/(?P<page>\d+)/$',
+ 'views.list.search_tag'),
+ url(r'^tag/(?P<mlist_fqdn>.*@.*)\/(?P<tag>.*)/$',
+ 'views.list.search_tag'),
+
+ # Search
+ # If page number is present in URL
+ url(r'^search/(?P<mlist_fqdn>.*@.*)\/(?P<target>.*)\/(?P<keyword>.*)\/(?P<page>\d+)/$',
+ 'views.list.search_keyword'),
+ # Show the first page as default when no page number is present in URL
+ url(r'^search/(?P<mlist_fqdn>.*@.*)\/(?P<target>.*)\/(?P<keyword>.*)/$',
+ 'views.list.search_keyword'),
+ url(r'^search/(?P<mlist_fqdn>.*@.*)/$',
+ 'views.list.search'),
+
+
+ ### MESSAGE LEVEL VIEWS ###
+ # Vote a message
+ url(r'^message/(?P<mlist_fqdn>.*@.*)/(?P<messageid>.+)/$',
+ 'views.message.index'),
+
+ url(r'^vote/(?P<mlist_fqdn>.*@.*)/$',
+ 'views.message.vote'),
+ ### MESSAGE LEVEL VIEW ENDS ###
+
+
+
+ ### THREAD LEVEL VIEWS ###
+ # Thread view page
+ url(r'^thread/(?P<mlist_fqdn>.*@.*)/(?P<threadid>.+)/$',
+ 'views.thread.thread_index'),
+
+ # Add Tag to a thread
+ url(r'^addtag/(?P<mlist_fqdn>.*@.*)\/(?P<email_id>.*)/$',
+ 'views.thread.add_tag'),
+ ### THREAD LEVEL VIEW ENDS ###
+
+
+ # REST API
+ url(r'^api/$', 'views.api.api'),
+ url(r'^api/email\/(?P<mlist_fqdn>.*@.*)\/(?P<messageid>.*)/',
+ EmailResource.as_view()),
+ url(r'^api/thread\/(?P<mlist_fqdn>.*@.*)\/(?P<threadid>.*)/',
+ ThreadResource.as_view()),
+ url(r'^api/search\/(?P<mlist_fqdn>.*@.*)\/(?P<field>.*)\/(?P<keyword>.*)/',
+ SearchResource.as_view()),
+
+
+ # Social Auth
+ url(r'', include('social_auth.urls')),
+
+)