#!/usr/bin/python # This is a script to automatically set up a django project # It takes only one argument for the project name # This works for Django 1.4 import os import sys if len(sys.argv) == 1: sys.exit(' You need to provide the project\'s name') project_name = sys.argv[1] os.system('django-admin.py startproject ' + project_name) os.chdir(os.getcwd() + '/' + project_name) os.system('python2 manage.py startapp server') os.system('rm ' + project_name + '/settings.pyc') os.system('mkdir media') os.system('mkdir media/html') os.system('mkdir media/css') os.system('mkdir media/js') os.system('mkdir media/img') views = open('server/views.py', 'w') s = """from django.http import HttpResponseRedirect, HttpResponse from django.shortcuts import render_to_response from django.core.context_processors import csrf from django.contrib.auth.decorators import login_required from django.contrib.auth import authenticate, login as auth_login, logout as auth_logout from django.contrib.auth.models import User from server.models import * def create_c(request): c = {} c.update(csrf(request)) c['user'] = request.user return c def main(request): c = create_c(request) return render_to_response('main.html', c) """ views.write(s) views.close() urls = open(project_name + '/urls.py', 'w') s = """from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), (r'^media/(?P.*)$', 'django.views.static.serve', {{'document_root':'{path}/media/'}}), (r'^$', 'server.views.main'), ) """ s = s.format(path = os.getcwd()) urls.write(s) urls.close() settings = open(project_name + '/settings.py', 'w') s = """DEBUG = True TEMPLATE_DEBUG = DEBUG ADMINS = () MANAGERS = ADMINS DATABASES = {{ 'default': {{ 'ENGINE': 'django.db.backends.sqlite3', 'NAME': '{path}/db', 'USER': 'db', 'PASSWORD': '', 'HOST': '', 'PORT': '', }} }} TIME_ZONE = 'America/Chicago' LANGUAGE_CODE = 'en-us' SITE_ID = 1 USE_I18N = True USE_L10N = True USE_TZ = True MEDIA_ROOT = '' MEDIA_URL = '' STATIC_ROOT = '' STATIC_URL = '/static/' STATICFILES_DIRS = () STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', # 'django.contrib.staticfiles.finders.DefaultStorageFinder', ) SECRET_KEY = '2bwk)z=_@+e1p(aoczvyoeaqs^g0fzx1)m9jfrpnch++-0l32!' 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', # Uncomment the next line for simple clickjacking protection: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', ) ROOT_URLCONF = '{project_name}.urls' WSGI_APPLICATION = '{project_name}.wsgi.application' TEMPLATE_DIRS = ('{path}/media/html') INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'server', ) """ s = s.format(path = os.getcwd(), project_name=project_name) settings.write(s) settings.close() mainhtml = open(os.getcwd() + '/media/html/main.html', 'w') s = """ main ohai """ mainhtml.write(s) mainhtml.close() maincss = open(os.getcwd() + '/media/css/main.css', 'w') s = """html { font-size:18px; color: white; background: black; } a:link, a:visited, a:hover { color: blue; text-decoration: none; } """ maincss.write(s) maincss.close() mainjs = open(os.getcwd() + '/media/js/main.js', 'w') mainjs.close() models = open(os.getcwd() + '/server/models.py', 'w') s = """from django.db import models from django.contrib.auth.models import User import datetime class Sample(models.Model): user = models.ForeignKey(User) name = models.CharField(max_length=100, unique=True) content = models.TextField(max_length=10000, default=None, null=True) date = models.DateTimeField(default=datetime.datetime.now()) """ models.write(s) models.close() try: os.chdir(os.getcwd() + '/media/js') os.system('wget -O jquery.js http://code.jquery.com/jquery-1.8.0.min.js') except: pass