From 76e2111ebc0de4e72aa551b9572e42b1dfb05c78 Mon Sep 17 00:00:00 2001 From: Sanj Date: Wed, 28 Mar 2012 05:26:55 +0530 Subject: [PATCH] domains, first commit --- domains/__init__.py | 0 domains/base/__init__.py | 0 domains/base/models.py | 18 ++++ domains/base/tests.py | 23 +++++ domains/base/views.py | 1 + domains/domain/__init__.py | 0 domains/domain/models.py | 44 ++++++++ domains/domain/tests.py | 16 +++ domains/domain/views.py | 1 + domains/manage.py | 14 +++ domains/secret.txt | 1 + domains/settings.py | 199 +++++++++++++++++++++++++++++++++++++ domains/urls.py | 18 ++++ requirements.txt | 3 + 14 files changed, 338 insertions(+) create mode 100644 domains/__init__.py create mode 100644 domains/base/__init__.py create mode 100644 domains/base/models.py create mode 100644 domains/base/tests.py create mode 100644 domains/base/views.py create mode 100644 domains/domain/__init__.py create mode 100644 domains/domain/models.py create mode 100644 domains/domain/tests.py create mode 100644 domains/domain/views.py create mode 100644 domains/manage.py create mode 100644 domains/secret.txt create mode 100644 domains/settings.py create mode 100644 domains/urls.py create mode 100644 requirements.txt diff --git a/domains/__init__.py b/domains/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/domains/base/__init__.py b/domains/base/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/domains/base/models.py b/domains/base/models.py new file mode 100644 index 0000000..2345cd2 --- /dev/null +++ b/domains/base/models.py @@ -0,0 +1,18 @@ +from django.db import models +import datetime + +class BaseModel(models.Model): + changed = models.DateTimeField(null=True, editable=False) + created = models.DateTimeField(null=True, editable=False) + + def save(self, *args, **kwargs): + if not self.id: + self.created = datetime.datetime.today() + self.changed = datetime.datetime.today() + if self.created == None: + self.created = self.changed + super(BaseModel, self).save(*args, **kwargs) + + class Meta: + abstract = True + diff --git a/domains/base/tests.py b/domains/base/tests.py new file mode 100644 index 0000000..2247054 --- /dev/null +++ b/domains/base/tests.py @@ -0,0 +1,23 @@ +""" +This file demonstrates two different styles of tests (one doctest and one +unittest). These will both pass when you run "manage.py test". + +Replace these with more appropriate tests for your application. +""" + +from django.test import TestCase + +class SimpleTest(TestCase): + def test_basic_addition(self): + """ + Tests that 1 + 1 always equals 2. + """ + self.failUnlessEqual(1 + 1, 2) + +__test__ = {"doctest": """ +Another way to test that 1 + 1 is equal to 2. + +>>> 1 + 1 == 2 +True +"""} + diff --git a/domains/base/views.py b/domains/base/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/domains/base/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/domains/domain/__init__.py b/domains/domain/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/domains/domain/models.py b/domains/domain/models.py new file mode 100644 index 0000000..1d94b1b --- /dev/null +++ b/domains/domain/models.py @@ -0,0 +1,44 @@ +from django.db import models +from base import BaseModel +from settings import SERVER_CHOICES, EMAIL_CHOICES, DB_CHOICES, PROJECT_TYPES + +SERVER_CHOICES = ( + ('camp', 'camp.r-w-x.org'), + ('marlon', 'marlon.in'), +) + +EMAIL_CHOICES = ( + ('gmail', 'Gmail'), + ('mailb', 'MailB'), +) + +DB_CHOICES = ( + ('mysql', 'MySQL'), + ('postgres', 'PostgreSQL'), + ('sqlite', 'SQLite'), +) + +PROJECT_TYPES = ( + ('django', 'Django'), + ('www', 'PHP or Static'), +) + +class DomainBase(BaseModel): + url = models.CharField(max_length=512) + server = models.CharField(choices=SERVER_CHOICES, blank=True, max_length=128) + email = models.CharField(choices=EMAIL_CHOICES, blank=True) + path = models.CharField(max_length=255, blank=True) + project_type = models.CharField(choices=PROJECT_TYPES, blank=True) + db_type = models.CharField(choices=DB_CHOICES, blank=True) + db_name = models.CharField(max_length=255, blank=True) + + def __unicode__(self): + return self.url + + +class Domain(DomainBase): + pass + + +class SubDomain(DomainBase): + main_domain = models.ForeignKey(Domain) \ No newline at end of file diff --git a/domains/domain/tests.py b/domains/domain/tests.py new file mode 100644 index 0000000..501deb7 --- /dev/null +++ b/domains/domain/tests.py @@ -0,0 +1,16 @@ +""" +This file demonstrates writing tests using the unittest module. These will pass +when you run "manage.py test". + +Replace this with more appropriate tests for your application. +""" + +from django.test import TestCase + + +class SimpleTest(TestCase): + def test_basic_addition(self): + """ + Tests that 1 + 1 always equals 2. + """ + self.assertEqual(1 + 1, 2) diff --git a/domains/domain/views.py b/domains/domain/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/domains/domain/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/domains/manage.py b/domains/manage.py new file mode 100644 index 0000000..3e4eedc --- /dev/null +++ b/domains/manage.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +from django.core.management import execute_manager +import imp +try: + imp.find_module('settings') # Assumed to be in the same directory. +except ImportError: + import sys + sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__) + sys.exit(1) + +import settings + +if __name__ == "__main__": + execute_manager(settings) diff --git a/domains/secret.txt b/domains/secret.txt new file mode 100644 index 0000000..4aff95f --- /dev/null +++ b/domains/secret.txt @@ -0,0 +1 @@ +^718#*%a6-^2ans#zmjga(@05enongu+rs5f0qiq%g2jeozw3k \ No newline at end of file diff --git a/domains/settings.py b/domains/settings.py new file mode 100644 index 0000000..026993b --- /dev/null +++ b/domains/settings.py @@ -0,0 +1,199 @@ +# Django settings for domains project. +import os +from os.path import join + +DEBUG = True +TEMPLATE_DEBUG = DEBUG + +JSON_DEBUG = False +APPEND_SLASH = True +#XSENDFILE = False + +ADMINS = ( + ('Sanjay Bhangar', 'b@pad.ma'), + # ('Your Name', 'your_email@example.com'), +) + +MANAGERS = ADMINS + +PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__)) + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': join(PROJECT_ROOT, 'domains.sqlite'), # Or path to database file if using sqlite3. + 'USER': '', # Not used with sqlite3. + 'PASSWORD': '', # 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 = join(PROJECT_ROOT, 'static') + +# 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. +) + +# 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', +) + +# 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', +) + +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 = 'domains.urls' + +TEMPLATE_DIRS = ( + join(PROJECT_ROOT, '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. +) + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.sites', + 'django.contrib.messages', + 'django.contrib.staticfiles', + # Uncomment the next line to enable the admin: + 'django.contrib.admin', + # Uncomment the next line to enable admin documentation: + 'django.contrib.admindocs', +) + +# 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, + }, + } +} + +#Project specific settings: + +SERVER_CHOICES = ( + ('camp', 'camp.r-w-x.org'), + ('marlon', 'marlon.in'), +) + +EMAIL_CHOICES = ( + ('gmail', 'Gmail'), + ('mailb', 'MailB'), +) + +DB_CHOICES = ( + ('mysql', 'MySQL'), + ('postgres', 'PostgreSQL'), + ('sqlite', 'SQLite'), +) + +PROJECT_TYPES = ( + ('django', 'Django'), + ('www', 'PHP or Static'), +) + + +#overwrite default settings with local settings +try: + from local_settings import * +except ImportError: + pass + +# Make this unique, creates random key first at first time. +try: + SECRET_KEY +except NameError: + SECRET_FILE = os.path.join(PROJECT_ROOT, 'secret.txt') + try: + SECRET_KEY = open(SECRET_FILE).read().strip() + except IOError: + try: + from random import choice + SECRET_KEY = ''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)]) + secret = file(SECRET_FILE, 'w') + secret.write(SECRET_KEY) + secret.close() + except IOError: + Exception('Please create a %s file with random characters to generate your secret key!' % SECRET_FILE) diff --git a/domains/urls.py b/domains/urls.py new file mode 100644 index 0000000..517d2bd --- /dev/null +++ b/domains/urls.py @@ -0,0 +1,18 @@ +from django.conf.urls.defaults import patterns, include, url + +# Uncomment the next two lines to enable the admin: +from django.contrib import admin +admin.autodiscover() + +urlpatterns = patterns('', + # Examples: + # url(r'^$', 'domains.views.home', name='home'), + # url(r'^domains/', include('domains.foo.urls')), + + # Uncomment the admin/doc line below to enable admin documentation: + # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), + + # Uncomment the next line to enable the admin: + url(r'^admin/', include(admin.site.urls)), +) + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..fcc7800 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +Django>=1.4 +ox +