diff --git a/combo/data/migrations/0032_page_description.py b/combo/data/migrations/0032_page_description.py
new file mode 100644
index 00000000..a02cf083
--- /dev/null
+++ b/combo/data/migrations/0032_page_description.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('data', '0031_remove_blurps'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='page',
+ name='description',
+ field=models.TextField(verbose_name='Description', blank=True),
+ ),
+ ]
diff --git a/combo/data/models.py b/combo/data/models.py
index d4d4bbaa..296fba48 100644
--- a/combo/data/models.py
+++ b/combo/data/models.py
@@ -105,6 +105,7 @@ class Page(models.Model):
title = models.CharField(_('Title'), max_length=150)
slug = models.SlugField(_('Slug'))
+ description = models.TextField(_('Description'), blank=True)
template_name = models.CharField(_('Template'), max_length=50)
parent = models.ForeignKey('self', null=True, blank=True)
order = models.PositiveIntegerField()
diff --git a/combo/manager/forms.py b/combo/manager/forms.py
index 80e454a6..c6b9a1ba 100644
--- a/combo/manager/forms.py
+++ b/combo/manager/forms.py
@@ -42,6 +42,11 @@ class PageEditSlugForm(forms.ModelForm):
raise ValidationError(_('Slug must be unique'), code='unique')
return value
+class PageEditDescriptionForm(forms.ModelForm):
+ class Meta:
+ model = Page
+ fields = ('description',)
+
class PageEditPictureForm(forms.ModelForm):
class Meta:
diff --git a/combo/manager/templates/combo/page_view.html b/combo/manager/templates/combo/page_view.html
index 7369d374..37cc876f 100644
--- a/combo/manager/templates/combo/page_view.html
+++ b/combo/manager/templates/combo/page_view.html
@@ -33,6 +33,12 @@
({% trans 'change' %})
+
+
+{% if object.description %}{{ object.description|truncatewords:32 }}{% else %}{% trans 'none' %}{% endif %}
+({% trans 'change' %})
+
+
{{ object.get_template_display_name }}
diff --git a/combo/manager/urls.py b/combo/manager/urls.py
index b7f2586e..d67bd8fc 100644
--- a/combo/manager/urls.py
+++ b/combo/manager/urls.py
@@ -43,6 +43,8 @@ urlpatterns = [
name='combo-manager-page-edit-slug'),
url(r'^pages/(?P\w+)/title$', views.page_edit_title,
name='combo-manager-page-edit-title'),
+ url(r'^pages/(?P\w+)/description$', views.page_edit_description,
+ name='combo-manager-page-edit-description'),
url(r'^pages/(?P\w+)/picture/$', views.page_edit_picture,
name='combo-manager-page-edit-picture'),
url(r'^pages/(?P\w+)/remove-picture/$', views.page_remove_picture,
diff --git a/combo/manager/views.py b/combo/manager/views.py
index 663519bc..9f34d290 100644
--- a/combo/manager/views.py
+++ b/combo/manager/views.py
@@ -39,7 +39,7 @@ from combo import plugins
from .forms import (PageEditTitleForm, PageVisibilityForm, SiteImportForm,
PageEditRedirectionForm, PageSelectTemplateForm, PageEditSlugForm,
PageEditPictureForm, PageEditExcludeFromNavigationForm,
- AssetUploadForm)
+ AssetUploadForm, PageEditDescriptionForm)
class HomepageView(ListView):
@@ -166,6 +166,12 @@ class PageEditSlugView(PageEditView):
page_edit_slug = PageEditSlugView.as_view()
+class PageEditDescriptionView(PageEditView):
+ form_class = PageEditDescriptionForm
+
+page_edit_description = PageEditDescriptionView.as_view()
+
+
class PageEditTitleView(PageEditView):
form_class = PageEditTitleForm
diff --git a/combo/public/templates/combo/page_template.html b/combo/public/templates/combo/page_template.html
index b5c38ecc..6ffd86be 100644
--- a/combo/public/templates/combo/page_template.html
+++ b/combo/public/templates/combo/page_template.html
@@ -2,6 +2,9 @@
+ {% if page.description %}
+
+ {% endif %}
Combo - {{ page.title }}
diff --git a/tests/test_manager.py b/tests/test_manager.py
index dff1b334..eb7f72cb 100644
--- a/tests/test_manager.py
+++ b/tests/test_manager.py
@@ -96,6 +96,12 @@ def test_edit_page(app, admin_user):
resp = resp.form.submit()
resp = resp.follow()
assert Page.objects.all()[0].slug == 'foobar'
+ # description
+ resp = resp.click(href='.*/description')
+ resp.form['description'].value = 'second home page'
+ resp = resp.form.submit()
+ resp = resp.follow()
+ assert Page.objects.all()[0].description == 'second home page'
# template name
resp = resp.click(href='.*/template')
assert resp.form['template_name'].value == 'standard'
diff --git a/tests/test_pages.py b/tests/test_pages.py
index 669d96e8..0eb6b3bd 100644
--- a/tests/test_pages.py
+++ b/tests/test_pages.py
@@ -124,13 +124,13 @@ def test_page_visibility():
assert not page.is_visible(user2)
def test_import_export_pages():
- page = Page(title=u'foo', slug='foo', order=0)
+ page = Page(title=u'foo', slug='foo', order=0, description="Foo's page")
page.save()
cell = TextCell(page=page, text='foo', order=0, placeholder='content')
cell.save()
- page2 = Page(title=u'bar', slug='bar', order=1, parent=page)
+ page2 = Page(title=u'bar', slug='bar', order=1, parent=page, description="Bar's page")
page2.save()
cell = TextCell(page=page2, text='bar', order=0, placeholder='content')
@@ -145,6 +145,8 @@ def test_import_export_pages():
new_page_2 = Page.objects.all().order_by('order')[1]
assert new_page_1.title == 'foo'
assert new_page_2.title == 'bar'
+ assert new_page_1.description == "Foo's page"
+ assert new_page_2.description == "Bar's page"
assert len(CellBase.get_cells(page_id=new_page_1.id)) == 1
assert isinstance(CellBase.get_cells(page_id=new_page_1.id)[0], TextCell)
assert CellBase.get_cells(page_id=new_page_1.id)[0].text == 'foo'
@@ -287,3 +289,10 @@ def test_get_placeholders():
assert set([x.key for x in placeholders]) == set(['content', 'content2', 'sidebar', 'footer'])
footer_placeholder = [x for x in placeholders if x.key == 'footer'][0]
assert footer_placeholder.acquired is False
+
+def test_render(app):
+ page = Page(title=u'foo', slug='foo', template_name='standard-sidebar', order=0, description="page description")
+ page.save()
+ response = app.get(page.get_online_url())
+ assert '' in response.content
+ assert 'Combo - foo' in response.content