From 4cf989190f115b79d709e8596a57a11e00df71f5 Mon Sep 17 00:00:00 2001 From: Ken Cochrane Date: Sun, 19 Aug 2012 18:11:27 -0400 Subject: [PATCH] added suggest a class feature --- tutorus/settings/base.py | 1 + tutorus/suggest/__init__.py | 0 tutorus/suggest/forms.py | 7 ++ tutorus/suggest/migrations/0001_initial.py | 40 ++++++++++ tutorus/suggest/migrations/__init__.py | 0 tutorus/suggest/models.py | 11 +++ tutorus/suggest/templates/suggest/index.html | 81 ++++++++++++++++++++ tutorus/suggest/tests.py | 16 ++++ tutorus/suggest/urls.py | 6 ++ tutorus/suggest/views.py | 25 ++++++ tutorus/templates/index.html | 2 +- tutorus/urls.py | 1 + 12 files changed, 189 insertions(+), 1 deletion(-) create mode 100644 tutorus/suggest/__init__.py create mode 100644 tutorus/suggest/forms.py create mode 100644 tutorus/suggest/migrations/0001_initial.py create mode 100644 tutorus/suggest/migrations/__init__.py create mode 100644 tutorus/suggest/models.py create mode 100644 tutorus/suggest/templates/suggest/index.html create mode 100644 tutorus/suggest/tests.py create mode 100644 tutorus/suggest/urls.py create mode 100644 tutorus/suggest/views.py diff --git a/tutorus/settings/base.py b/tutorus/settings/base.py index 8e0142c..4520c3f 100644 --- a/tutorus/settings/base.py +++ b/tutorus/settings/base.py @@ -107,6 +107,7 @@ 'questions', 'classroom', 'step', + 'suggest', ) INSTALLED_APPS = PREREQ_APPS + PROJECT_APPS diff --git a/tutorus/suggest/__init__.py b/tutorus/suggest/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tutorus/suggest/forms.py b/tutorus/suggest/forms.py new file mode 100644 index 0000000..32bedcb --- /dev/null +++ b/tutorus/suggest/forms.py @@ -0,0 +1,7 @@ +from django import forms +from .models import Suggestion + +class SuggestForm(forms.ModelForm): + + class Meta: + model = Suggestion \ No newline at end of file diff --git a/tutorus/suggest/migrations/0001_initial.py b/tutorus/suggest/migrations/0001_initial.py new file mode 100644 index 0000000..6b14dd5 --- /dev/null +++ b/tutorus/suggest/migrations/0001_initial.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding model 'Suggestion' + db.create_table('suggest_suggestion', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('created', self.gf('model_utils.fields.AutoCreatedField')(default=datetime.datetime.now)), + ('modified', self.gf('model_utils.fields.AutoLastModifiedField')(default=datetime.datetime.now)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('email', self.gf('django.db.models.fields.EmailField')(max_length=255, blank=True)), + ('description', self.gf('django.db.models.fields.TextField')(default='', null=True, blank=True)), + )) + db.send_create_signal('suggest', ['Suggestion']) + + + def backwards(self, orm): + # Deleting model 'Suggestion' + db.delete_table('suggest_suggestion') + + + models = { + 'suggest.suggestion': { + 'Meta': {'object_name': 'Suggestion'}, + 'created': ('model_utils.fields.AutoCreatedField', [], {'default': 'datetime.datetime.now'}), + 'description': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'modified': ('model_utils.fields.AutoLastModifiedField', [], {'default': 'datetime.datetime.now'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + } + } + + complete_apps = ['suggest'] \ No newline at end of file diff --git a/tutorus/suggest/migrations/__init__.py b/tutorus/suggest/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tutorus/suggest/models.py b/tutorus/suggest/models.py new file mode 100644 index 0000000..81eee8a --- /dev/null +++ b/tutorus/suggest/models.py @@ -0,0 +1,11 @@ +from django.db import models +from model_utils.models import TimeStampedModel +from django.utils.translation import ugettext_lazy as _ + +class Suggestion(TimeStampedModel): + """ suggest class + """ + name = models.CharField(_('name'), max_length=255, blank=True) + email = models.EmailField(_('email'), max_length=255, blank=True) + description = models.TextField(_('description'), blank=True, null=True, default="") + diff --git a/tutorus/suggest/templates/suggest/index.html b/tutorus/suggest/templates/suggest/index.html new file mode 100644 index 0000000..b45bc40 --- /dev/null +++ b/tutorus/suggest/templates/suggest/index.html @@ -0,0 +1,81 @@ +{% extends 'base.html' %} +{% load i18n %} + +{% block title %}{% trans "Suggest Class" %}{% endblock %} + + +{% block page-js %} + + +{% endblock page-js %} + +{% block content %} +{{ form.non_field_errors }} + +
+
+ Suggest a class +
+ +
+ {{form.name}} + {{form.name.errors}} +
+
+
+ +
+ {{form.email}} + {{form.email.errors}} +
+
+ +
+ +
+
+ {{form.description}} +

+
+
+
+ + Cancel +
+
+ +{% csrf_token %} +
+{% endblock %} \ No newline at end of file diff --git a/tutorus/suggest/tests.py b/tutorus/suggest/tests.py new file mode 100644 index 0000000..501deb7 --- /dev/null +++ b/tutorus/suggest/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/tutorus/suggest/urls.py b/tutorus/suggest/urls.py new file mode 100644 index 0000000..d2da1c6 --- /dev/null +++ b/tutorus/suggest/urls.py @@ -0,0 +1,6 @@ +from django.conf.urls import patterns, include, url +from .views import add + +urlpatterns = patterns('', + url(r'^$', add, name='add_suggestion'), +) \ No newline at end of file diff --git a/tutorus/suggest/views.py b/tutorus/suggest/views.py new file mode 100644 index 0000000..b8b3b0f --- /dev/null +++ b/tutorus/suggest/views.py @@ -0,0 +1,25 @@ +from .forms import SuggestForm +from django.shortcuts import render +from django.core.urlresolvers import reverse +from django.http import HttpResponseRedirect + +def add(request): + """ + add Suggestion + """ + if request.method == 'POST': + form = SuggestForm(request.POST) + if form.is_valid(): + try: + step = form.save() + return HttpResponseRedirect(reverse('home')) + except Exception as e: + #TODO: fix me. + print("ERROR {0}".format(e)) + else: + print form + else: + form = SuggestForm() + + context = {'form':form} + return render(request, 'suggest/index.html', context) \ No newline at end of file diff --git a/tutorus/templates/index.html b/tutorus/templates/index.html index 45a1d3c..8fb266c 100644 --- a/tutorus/templates/index.html +++ b/tutorus/templates/index.html @@ -21,7 +21,7 @@

Learn Something New

Suggest Classes

Not finding a class that interests you, or you have a specific topic you are interested in. Suggest it here, and let others know that you want to learn.

-

Suggest Class »

+

Suggest Class »

{% endblock content %} diff --git a/tutorus/urls.py b/tutorus/urls.py index 4567d03..a5f0a0e 100644 --- a/tutorus/urls.py +++ b/tutorus/urls.py @@ -14,6 +14,7 @@ (r'^messages/', include('userena.contrib.umessages.urls')), (r'^class/', include('classroom.urls')), (r'^step/', include('step.urls')), + (r'^suggest/', include('suggest.urls')), ) urlpatterns += staticfiles_urlpatterns() \ No newline at end of file