Skip to content

Commit

Permalink
prepare 0.1.6; minor theming API improvements; major FeinCMS integrat…
Browse files Browse the repository at this point in the history
…ion app (widget) improvements; fixes in help_text of radio select
  • Loading branch information
barseghyanartur committed Oct 25, 2014
1 parent 8919dc2 commit 7d20b6e
Show file tree
Hide file tree
Showing 40 changed files with 557 additions and 47 deletions.
18 changes: 18 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
Release history
=====================================
0.1.6
-------------------------------------
2014-10-25

- Minor improvements in the theming API. From now on the
``view_embed_form_entry_ajax_template`` template would be used
when integrating the form rendering from other products (for example,
a CMS page, which has a widget which references the form object. If
that property is left empty, the ``view_form_entry_ajax_template``
is used. For a success page the ``embed_form_entry_submitted_ajax_template``
template would be used.
- Functional improvements of the FeinCMS integration (the widget). If you
have used the FeinCMS widget of earlier versions, you likely want to update
to this one. From now on you can select a custom form title and the button
text, as well as provide custom success page title and the success message;
additionally, it has been made possible to hide the form- or success-page-
titles.

0.1.5
-------------------------------------
2014-10-23
Expand Down
17 changes: 17 additions & 0 deletions examples/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,20 @@ Django admin interface:
- URL: http://127.0.0.1:8001/admin/
- Admin username: test_admin
- Admin password: test

Various setups
============================================
There are number of setups included (names are self-explanatory):

- Bootstrap3 theme + Captcha (runserver-bootstrap3-theme-captcha) :8000
- Bootstrap3 theme + Django 1.7 + Captcha (runserver-bootstrap3-theme-django17-captcha) :8000
- Bootstrap3 theme + Django 1.7 (runserver-bootstrap3-theme-django17) :8000
- Bootstrap3 theme + FeinCMS integration (runserver-bootstrap3-theme-feincms-integration) :8000
- Bootstrap3 theme (runserver-bootstrap3-theme) :8000

- Foundation 5 theme + FeinCMS integration (runserver-foundation5-theme-feincms-integration) :8001
- Foundation 5 theme :8001

- Override of the simple theme (runserver-override-simple-theme) :8003

- Simple theme (runserver-simple-theme) :8002
2 changes: 1 addition & 1 deletion examples/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#Django>=1.5,<1.7
Django>=1.5,<1.8
FeinCMS>=1.9,<1.10
Jinja2
MarkupSafe
South
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
# -*- coding: utf-8 -*-
from south.utils import datetime_utils as datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models


class Migration(SchemaMigration):

def forwards(self, orm):
# Adding field 'FobiFormWidget.form_template_name'
db.add_column(u'page_page_fobiformwidget', 'form_template_name',
self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True),
keep_default=False)

# Adding field 'FobiFormWidget.hide_form_title'
db.add_column(u'page_page_fobiformwidget', 'hide_form_title',
self.gf('django.db.models.fields.BooleanField')(default=False),
keep_default=False)

# Adding field 'FobiFormWidget.form_title'
db.add_column(u'page_page_fobiformwidget', 'form_title',
self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True),
keep_default=False)

# Adding field 'FobiFormWidget.form_submit_button_text'
db.add_column(u'page_page_fobiformwidget', 'form_submit_button_text',
self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True),
keep_default=False)

# Adding field 'FobiFormWidget.success_page_template_name'
db.add_column(u'page_page_fobiformwidget', 'success_page_template_name',
self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True),
keep_default=False)

# Adding field 'FobiFormWidget.hide_success_page_title'
db.add_column(u'page_page_fobiformwidget', 'hide_success_page_title',
self.gf('django.db.models.fields.BooleanField')(default=False),
keep_default=False)

# Adding field 'FobiFormWidget.success_page_title'
db.add_column(u'page_page_fobiformwidget', 'success_page_title',
self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True),
keep_default=False)

# Adding field 'FobiFormWidget.success_page_text'
db.add_column(u'page_page_fobiformwidget', 'success_page_text',
self.gf('django.db.models.fields.TextField')(null=True, blank=True),
keep_default=False)


def backwards(self, orm):
# Deleting field 'FobiFormWidget.form_template_name'
db.delete_column(u'page_page_fobiformwidget', 'form_template_name')

# Deleting field 'FobiFormWidget.hide_form_title'
db.delete_column(u'page_page_fobiformwidget', 'hide_form_title')

# Deleting field 'FobiFormWidget.form_title'
db.delete_column(u'page_page_fobiformwidget', 'form_title')

# Deleting field 'FobiFormWidget.form_submit_button_text'
db.delete_column(u'page_page_fobiformwidget', 'form_submit_button_text')

# Deleting field 'FobiFormWidget.success_page_template_name'
db.delete_column(u'page_page_fobiformwidget', 'success_page_template_name')

# Deleting field 'FobiFormWidget.hide_success_page_title'
db.delete_column(u'page_page_fobiformwidget', 'hide_success_page_title')

# Deleting field 'FobiFormWidget.success_page_title'
db.delete_column(u'page_page_fobiformwidget', 'success_page_title')

# Deleting field 'FobiFormWidget.success_page_text'
db.delete_column(u'page_page_fobiformwidget', 'success_page_text')


models = {
u'auth.group': {
'Meta': {'object_name': 'Group'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
},
u'auth.permission': {
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
u'auth.user': {
'Meta': {'object_name': 'User'},
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
},
u'contenttypes.contenttype': {
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
},
u'fobi.formentry': {
'Meta': {'unique_together': "(('user', 'slug'), ('user', 'name'))", 'object_name': 'FormEntry'},
'action': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'form_wizard_entry': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['fobi.FormWizardEntry']", 'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_cloneable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'position': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'slug': ('autoslug.fields.AutoSlugField', [], {'unique': 'True', 'max_length': '50', 'populate_from': "'name'", 'unique_with': '()'}),
'success_page_message': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'success_page_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"})
},
u'fobi.formwizardentry': {
'Meta': {'unique_together': "(('user', 'slug'), ('user', 'name'))", 'object_name': 'FormWizardEntry'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_cloneable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'slug': ('autoslug.fields.AutoSlugField', [], {'unique': 'True', 'max_length': '50', 'populate_from': "'name'", 'unique_with': '()'}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"})
},
u'page.fobiformwidget': {
'Meta': {'ordering': "['ordering']", 'object_name': 'FobiFormWidget', 'db_table': "u'page_page_fobiformwidget'"},
'form_entry': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['fobi.FormEntry']"}),
'form_submit_button_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'form_template_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'form_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'hide_form_title': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'hide_success_page_title': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'fobiformwidget_set'", 'to': u"orm['page.Page']"}),
'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'success_page_template_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'success_page_text': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'success_page_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
},
u'page.page': {
'Meta': {'ordering': "['tree_id', 'lft']", 'object_name': 'Page'},
'_cached_url': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'db_index': 'True', 'blank': 'True'}),
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'in_navigation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'language': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
u'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
u'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
'override_url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': u"orm['page.Page']"}),
'redirect_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
u'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150'}),
'template_key': ('django.db.models.fields.CharField', [], {'default': "'page_base'", 'max_length': '255'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
'translation_of': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'translations'", 'null': 'True', 'to': u"orm['page.Page']"}),
u'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
},
u'page.rawcontent': {
'Meta': {'ordering': "['ordering']", 'object_name': 'RawContent', 'db_table': "u'page_page_rawcontent'"},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rawcontent_set'", 'to': u"orm['page.Page']"}),
'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
},
u'page.richtextcontent': {
'Meta': {'ordering': "['ordering']", 'object_name': 'RichTextContent', 'db_table': "u'page_page_richtextcontent'"},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'richtextcontent_set'", 'to': u"orm['page.Page']"}),
'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'text': ('feincms.contrib.richtext.RichTextField', [], {'blank': 'True'})
}
}

complete_apps = ['page']
2 changes: 1 addition & 1 deletion examples/simple/runserver-bootstrap3-theme-captcha.sh
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
#workon fobi
./manage.py runserver 0.0.0.0:8004 --settings=settings_bootstrap3_theme_captcha --traceback -v 3
./manage.py runserver 0.0.0.0:8000 --settings=settings_bootstrap3_theme_captcha --traceback -v 3
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
#workon fobi
./manage.py runserver 0.0.0.0:8006 --traceback -v 3 --settings=settings_bootstrap3_theme_django17_captcha --traceback -v 3
./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings_bootstrap3_theme_django17_captcha --traceback -v 3
2 changes: 1 addition & 1 deletion examples/simple/runserver-bootstrap3-theme-django17.sh
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
#workon fobi
./manage.py runserver 0.0.0.0:8006 --traceback -v 3 --settings=settings_bootstrap3_theme_django17 --traceback -v 3
./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings_bootstrap3_theme_django17 --traceback -v 3
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#workon fobi
./manage.py runserver 0.0.0.0:8000 --settings=settings_bootstrap3_theme_feincms --traceback -v 3
2 changes: 0 additions & 2 deletions examples/simple/runserver-feincms-integration.sh

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#workon fobi
#./manage.py collectstatic --noinput --settings=settings_foundation5_theme_feincms --traceback -v 3
./manage.py runserver 0.0.0.0:8001 --settings=settings_foundation5_theme_feincms --traceback -v 3
32 changes: 31 additions & 1 deletion examples/simple/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@

# Third party apps used in the project
'south', # Database migration app
#'tinymce', # TinyMCE
'tinymce', # TinyMCE
'easy_thumbnails', # Thumbnailer
'registration', # Auth views and registration app
#'localeurl', # Locale URL
Expand Down Expand Up @@ -237,6 +237,20 @@
'form_button_wrapper_html_class': 'controls',
'form_button_html_class': 'btn',
'form_primary_button_html_class': 'btn-primary pull-right',
'feincms_integration': {
'form_template_choices': [
(
'fobi/bootstrap3_extras/view_embed_form_entry_ajax.html',
gettext("Custom bootstrap3 embed form view template")
),
],
'success_page_template_choices': [
(
'fobi/bootstrap3_extras/embed_form_entry_submitted_ajax.html',
gettext("Custom bootstrap3 embed form entry submitted template")
),
],
},
},
'foundation5': {
'page_header_html_class': '',
Expand All @@ -245,6 +259,20 @@
'form_button_wrapper_html_class': 'controls',
'form_button_html_class': 'radius button',
'form_primary_button_html_class': 'btn-primary',
'feincms_integration': {
'form_template_choices': [
(
'fobi/foundation5_extras/view_embed_form_entry_ajax.html',
gettext("Custom foundation5 embed form view template")
),
],
'success_page_template_choices': [
(
'fobi/foundation5_extras/embed_form_entry_submitted_ajax.html',
gettext("Custom foundation5 embed form entry submitted template")
),
],
},
},
'simple': {
'page_header_html_class': '',
Expand All @@ -253,6 +281,8 @@
'form_button_wrapper_html_class': 'submit-row',
'form_button_html_class': 'btn',
'form_primary_button_html_class': 'btn-primary',
'feincms_integration': {
},
}
}

Expand Down
3 changes: 2 additions & 1 deletion examples/simple/settings_bootstrap3_theme_django17.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
INSTALLED_APPS = list(INSTALLED_APPS)

try:
INSTALLED_APPS.remove('south')
INSTALLED_APPS.remove('south') if 'south' in INSTALLED_APPS else None
INSTALLED_APPS.remove('tinymce') if 'tinymce' in INSTALLED_APPS else None
except Exception as e:
pass
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
INSTALLED_APPS = list(INSTALLED_APPS)

try:
INSTALLED_APPS.remove('south')
INSTALLED_APPS.remove('south') if 'south' in INSTALLED_APPS else None
INSTALLED_APPS.remove('tinymce') if 'tinymce' in INSTALLED_APPS else None
INSTALLED_APPS.append('captcha')
INSTALLED_APPS.append('fobi.contrib.plugins.form_elements.fields.captcha')
except Exception as e:
Expand Down
File renamed without changes.
Loading

0 comments on commit 7d20b6e

Please sign in to comment.