diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index d1778dc00aa..f8048a7127d 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -95,7 +95,7 @@
- Fixed wrong language prefix handling for form actions and admin preview
- Admin icons in django 1.4 fixed
- Added requirements.txt for pip and testing in test_requirements
-- Google map plugin with height and width properties
+- Google map plugin with height and width properties. Migrations will set default values on not-null fields.
- Docs fixes
- Code cleanup
- Switched html5lib to HTML serializer
diff --git a/cms/plugins/googlemap/migrations/0011_remove_zoom_null_values.py b/cms/plugins/googlemap/migrations/0011_remove_zoom_null_values.py
new file mode 100644
index 00000000000..f1b48522689
--- /dev/null
+++ b/cms/plugins/googlemap/migrations/0011_remove_zoom_null_values.py
@@ -0,0 +1,62 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ "Write your forwards methods here."
+ for plugin in orm.GoogleMap.objects.filter(models.Q(zoom=None) | models.Q(zoom__lt=0)):
+ plugin.zoom = 13
+ plugin.save()
+ print 'Applying 13 as zoom value for plugin %s. See 2.3.1 Release notes for further info' % plugin.pk
+ for plugin in orm.GoogleMap.objects.filter(zoom__gt=21):
+ plugin.zoom = 21
+ plugin.save()
+ print 'Applying 21 as zoom value for plugin %s. See 2.3.1 Release notes for further info' % plugin.pk
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+ #raise RuntimeError("Cannot reverse this migration.")
+
+ models = {
+ 'cms.cmsplugin': {
+ 'Meta': {'object_name': 'CMSPlugin'},
+ 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}),
+ 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}),
+ 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}),
+ 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.placeholder': {
+ 'Meta': {'object_name': 'Placeholder'},
+ 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'})
+ },
+ 'googlemap.googlemap': {
+ 'Meta': {'object_name': 'GoogleMap', 'db_table': "'cmsplugin_googlemap'", '_ormbases': ['cms.CMSPlugin']},
+ 'address': ('django.db.models.fields.CharField', [], {'max_length': '150'}),
+ 'city': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}),
+ 'content': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'lat': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '10', 'decimal_places': '6', 'blank': 'True'}),
+ 'lng': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '10', 'decimal_places': '6', 'blank': 'True'}),
+ 'route_planer': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'route_planer_title': ('django.db.models.fields.CharField', [], {'default': "u'Calculate your fastest way to here'", 'max_length': '150', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'zipcode': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+ 'zoom': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['googlemap']
diff --git a/cms/plugins/googlemap/migrations/0011_auto__add_field_googlemap_width__add_field_googlemap_height__chg_field.py b/cms/plugins/googlemap/migrations/0012_auto__add_field_googlemap_width__add_field_googlemap_height__chg_field.py
similarity index 98%
rename from cms/plugins/googlemap/migrations/0011_auto__add_field_googlemap_width__add_field_googlemap_height__chg_field.py
rename to cms/plugins/googlemap/migrations/0012_auto__add_field_googlemap_width__add_field_googlemap_height__chg_field.py
index 719fd68d41d..ce1e5950fd9 100644
--- a/cms/plugins/googlemap/migrations/0011_auto__add_field_googlemap_width__add_field_googlemap_height__chg_field.py
+++ b/cms/plugins/googlemap/migrations/0012_auto__add_field_googlemap_width__add_field_googlemap_height__chg_field.py
@@ -18,9 +18,8 @@ def forwards(self, orm):
self.gf('django.db.models.fields.CharField')(default='400px', max_length=6),
keep_default=False)
-
# Changing field 'GoogleMap.zoom'
- db.alter_column('cmsplugin_googlemap', 'zoom', self.gf('django.db.models.fields.PositiveSmallIntegerField')())
+ db.alter_column('cmsplugin_googlemap', 'zoom', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=13))
def backwards(self, orm):
# Deleting field 'GoogleMap.width'
diff --git a/docs/getting_started/plugin_reference.rst b/docs/getting_started/plugin_reference.rst
index 2ff4cc04ca2..30aa0a3dce8 100644
--- a/docs/getting_started/plugin_reference.rst
+++ b/docs/getting_started/plugin_reference.rst
@@ -68,6 +68,20 @@ GoogleMap
Displays a map of an address on your page.
+Both address and coordinates are supported to center the map; zoom level and
+route planner can be set when adding/editing plugin in the admin.
+
+.. versionadded:: 2.3.2
+ width/height parameter has been added, so it's no longer required to set
+ plugin container size in CSS or template.
+
+.. versionchanged:: 2.3.2
+ Zoom level is set via a select field which ensure only legal values are used.
+
+.. note:: Due to the above change, `level` field is now marked as `NOT NULL`,
+ and a datamigration has been introduced to modify existing googlemap plugin
+ instance to set the default value if `level` if is `NULL`.
+
For installation be sure you have the following in the :setting:`django:INSTALLED_APPS`
setting in your project's ``settings.py`` file::
@@ -132,14 +146,15 @@ in it create a file called ``picture.html``. Here is an example
{% load thumbnail %}
- {% if picture.url %}{% endif %}
- {% ifequal placeholder "content" %}
+ {% if link %}{% endif %}
+ {% if placeholder == "content" %}
- {% endifequal %}
- {% ifequal placeholder "teaser" %}
-
- {% endifequal %}
- {% if picture.url %}{% endif %}
+ {% else %}
+ {% if placeholder == "teaser" %}
+
+ {% endif %}
+ {% endif %}
+ {% if link %}{% endif %}
In this template the picture is scaled differently based on which placeholder
diff --git a/docs/upgrade/2.3.2.rst b/docs/upgrade/2.3.2.rst
new file mode 100644
index 00000000000..ed32fc638dc
--- /dev/null
+++ b/docs/upgrade/2.3.2.rst
@@ -0,0 +1,19 @@
+###################
+2.3.2 release notes
+###################
+
+*******************
+What's new in 2.3.2
+*******************
+
+Google map plugin
+===================
+
+Google map plugin now supports width and height fields so that plugin size
+can be modified in the page admin or frontend editor.
+
+Zoom level is now set via a select field which ensure only legal values are used.
+
+.. warning:: Due to the above change, `level` field is now marked as `NOT NULL`,
+ and a datamigration has been introduced to modify existing googlemap plugin
+ instance to set the default value if `level` if is `NULL`.
diff --git a/docs/upgrade/index.rst b/docs/upgrade/index.rst
index 250bf2fab81..e85b703f28b 100644
--- a/docs/upgrade/index.rst
+++ b/docs/upgrade/index.rst
@@ -2,6 +2,14 @@
Upgrading a django CMS installation
###################################
+*************
+2.3.2 Release
+*************
+
+.. toctree::
+ :maxdepth: 1
+
+ 2.3.2
***********
2.3 Release