data: add description to page (#23262)

This commit is contained in:
Serghei Mihai 2018-04-19 10:08:51 +02:00 committed by Frédéric Péters
parent e0e3ded588
commit bbf8ae107e
9 changed files with 60 additions and 3 deletions

View File

@ -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),
),
]

View File

@ -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()

View File

@ -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:

View File

@ -33,6 +33,12 @@
(<a rel="popup" href="{% url 'combo-manager-page-edit-slug' pk=object.id %}">{% trans 'change' %}</a>)
</p>
<p>
<label>{% trans 'Description:' %}</label>
{% if object.description %}{{ object.description|truncatewords:32 }}{% else %}<i>{% trans 'none' %}</i>{% endif %}
(<a rel="popup" href="{% url 'combo-manager-page-edit-description' pk=object.id %}">{% trans 'change' %}</a>)
</p>
<p>
<label>{% trans 'Template:' %}</label>
{{ object.get_template_display_name }}

View File

@ -43,6 +43,8 @@ urlpatterns = [
name='combo-manager-page-edit-slug'),
url(r'^pages/(?P<pk>\w+)/title$', views.page_edit_title,
name='combo-manager-page-edit-title'),
url(r'^pages/(?P<pk>\w+)/description$', views.page_edit_description,
name='combo-manager-page-edit-description'),
url(r'^pages/(?P<pk>\w+)/picture/$', views.page_edit_picture,
name='combo-manager-page-edit-picture'),
url(r'^pages/(?P<pk>\w+)/remove-picture/$', views.page_remove_picture,

View File

@ -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

View File

@ -2,6 +2,9 @@
<html>
<head>
<meta charset="utf-8"/>
{% if page.description %}
<meta name="description" content="{{ page.description}}" />
{% endif %}
<title>Combo - {{ page.title }}</title>
<link rel="stylesheet" type="text/css" media="all" href="{{ STATIC_URL }}css/combo-style.css"/>
<script src="{% xstatic 'jquery' 'jquery.min.js' %}"></script>

View File

@ -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'

View File

@ -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 '<meta name="description" content="page description" />' in response.content
assert '<title>Combo - foo</title>' in response.content