From bbf8ae107e65526fe1b9150a884eef6a65473554 Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Thu, 19 Apr 2018 10:08:51 +0200 Subject: [PATCH] data: add description to page (#23262) --- .../data/migrations/0032_page_description.py | 19 +++++++++++++++++++ combo/data/models.py | 1 + combo/manager/forms.py | 5 +++++ combo/manager/templates/combo/page_view.html | 6 ++++++ combo/manager/urls.py | 2 ++ combo/manager/views.py | 8 +++++++- .../public/templates/combo/page_template.html | 3 +++ tests/test_manager.py | 6 ++++++ tests/test_pages.py | 13 +++++++++++-- 9 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 combo/data/migrations/0032_page_description.py 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