Skip to content

Commit

Permalink
Got this working
Browse files Browse the repository at this point in the history
  • Loading branch information
audreyfeldroy committed Jul 12, 2011
1 parent dffa483 commit fa86760
Show file tree
Hide file tree
Showing 9 changed files with 79 additions and 19 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Expand Up @@ -2,3 +2,5 @@
*.db
*.log
local_settings.py
test_project/things/
test_project/templates/
34 changes: 34 additions & 0 deletions README.rst
@@ -0,0 +1,34 @@
===============
django-startcbv
===============

Installation
------------

TODO: package this up. At some point it will be::

Add django-startcbv==0.1 to requirements.txt
pip install -r requirements.txt

Usage
-----

For all of the following steps, replace "things" with the name of the app that you wish to create::

python manage.py startcbv things

Add your "things" app to INSTALLED_APPS in settings.py::

INSTALLED_APPS = (
...
'things',
)

Add your "things" app URL pattern to urls.py::

url(r'^things/', include('things.urls')),

Then::

python manage.py syncdb
python manage.py runserver
17 changes: 16 additions & 1 deletion startcbv/management/commands/startcbv.py
Expand Up @@ -24,6 +24,12 @@ def views_generator(app_name, model_name):
'app_name': app_name})
return template.render(c)

def admin_generator(app_name, model_name):
template = get_template('startcbv/admin.py')
c = Context({'model_name': model_name,
'app_name': app_name})
return template.render(c)

def list_template_generator(app_name, model_name):
template = get_template('startcbv/_list.html')
c = Context({'model_name': model_name,
Expand All @@ -36,8 +42,12 @@ def detail_template_generator(app_name, model_name):
'app_name': app_name})
return template.render(c)

def touch(fname, times = None):
with file(fname, 'a'):
os.utime(fname, times)

class Command(LabelCommand):
print "startcbv blah"
print "Generating your app with class-based views..."

def handle_label(self, app_name, directory=None, **options):
print app_name
Expand All @@ -56,6 +66,11 @@ def handle_label(self, app_name, directory=None, **options):
target = open(app_name + "/views.py", 'w')
target.write(views_generator(app_name, app_name.capitalize().rstrip("s")))
target.close()
target = open(app_name + "/admin.py", 'w')
target.write(admin_generator(app_name, app_name.capitalize().rstrip("s")))
target.close()

touch(app_name + "/__init__.py")

template_dir = 'templates/' + app_name
os.makedirs(template_dir)
Expand Down
2 changes: 1 addition & 1 deletion startcbv/templates/startcbv/_detail.html
@@ -1,4 +1,4 @@
{% templatetag openblock %} extends "base_generic.html" {% templatetag closeblock %}
{% templatetag openblock %} extends "base.html" {% templatetag closeblock %}

{% templatetag openblock %} block title {% templatetag closeblock %}
{% templatetag openvariable %} {{ model_name.lower }}.name {% templatetag closevariable %} : {{ model_name }}
Expand Down
2 changes: 1 addition & 1 deletion startcbv/templates/startcbv/_list.html
@@ -1,4 +1,4 @@
{% templatetag openblock %} extends "base_generic.html" {% templatetag closeblock %}
{% templatetag openblock %} extends "base.html" {% templatetag closeblock %}

{% templatetag openblock %} block title {% templatetag closeblock %}
All {{ app_name.capitalize }}
Expand Down
12 changes: 12 additions & 0 deletions startcbv/templates/startcbv/admin.py
@@ -0,0 +1,12 @@
from django.contrib import admin

from {{ app_name }}.models import {{ model_name }}

class {{ model_name }}Admin(admin.ModelAdmin):
list_display = ('name', 'slug', 'pub_date')
fields = ['name', 'slug', 'pub_date']
prepopulated_fields = {"slug": ("name",)}
save_on_top = True
search_fields = ['name']

admin.site.register({{ model_name }}, {{ model_name }}Admin)
1 change: 1 addition & 0 deletions startcbv/templates/startcbv/models.py
@@ -1,4 +1,5 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _

class {{ model_name }}(models.Model):
"""
Expand Down
12 changes: 6 additions & 6 deletions test_project/settings.py
Expand Up @@ -17,8 +17,8 @@

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '', # Or path to database file if using sqlite3.
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'dev.db', # 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.
Expand Down Expand Up @@ -112,6 +112,7 @@
# 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.
os.path.join(PROJECT_ROOT, "templates"),
)

INSTALLED_APPS = (
Expand All @@ -121,11 +122,10 @@
'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',
'django.contrib.admin',
'startcbv',
# The name of your app should go here AFTER you've run 'python manage.py startcbv things'
#'things',
)

# A sample logging configuration. The only tangible logging
Expand Down
16 changes: 6 additions & 10 deletions test_project/urls.py
@@ -1,17 +1,13 @@
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()
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
# Examples:
# url(r'^$', 'test_project.views.home', name='home'),
# url(r'^test_project/', include('test_project.foo.urls')),
url(r'^admin/', include(admin.site.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)),
# The appropriate URL pattern for your app should be placed here manually AFTER
# you've run 'python manage.py startcbv things'
# url(r'^things/', include('things.urls')),
)

0 comments on commit fa86760

Please sign in to comment.