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) title = models.CharField(_('Title'), max_length=150)
slug = models.SlugField(_('Slug')) slug = models.SlugField(_('Slug'))
description = models.TextField(_('Description'), blank=True)
template_name = models.CharField(_('Template'), max_length=50) template_name = models.CharField(_('Template'), max_length=50)
parent = models.ForeignKey('self', null=True, blank=True) parent = models.ForeignKey('self', null=True, blank=True)
order = models.PositiveIntegerField() order = models.PositiveIntegerField()

View File

@ -42,6 +42,11 @@ class PageEditSlugForm(forms.ModelForm):
raise ValidationError(_('Slug must be unique'), code='unique') raise ValidationError(_('Slug must be unique'), code='unique')
return value return value
class PageEditDescriptionForm(forms.ModelForm):
class Meta:
model = Page
fields = ('description',)
class PageEditPictureForm(forms.ModelForm): class PageEditPictureForm(forms.ModelForm):
class Meta: class Meta:

View File

@ -33,6 +33,12 @@
(<a rel="popup" href="{% url 'combo-manager-page-edit-slug' pk=object.id %}">{% trans 'change' %}</a>) (<a rel="popup" href="{% url 'combo-manager-page-edit-slug' pk=object.id %}">{% trans 'change' %}</a>)
</p> </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> <p>
<label>{% trans 'Template:' %}</label> <label>{% trans 'Template:' %}</label>
{{ object.get_template_display_name }} {{ object.get_template_display_name }}

View File

@ -43,6 +43,8 @@ urlpatterns = [
name='combo-manager-page-edit-slug'), name='combo-manager-page-edit-slug'),
url(r'^pages/(?P<pk>\w+)/title$', views.page_edit_title, url(r'^pages/(?P<pk>\w+)/title$', views.page_edit_title,
name='combo-manager-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, url(r'^pages/(?P<pk>\w+)/picture/$', views.page_edit_picture,
name='combo-manager-page-edit-picture'), name='combo-manager-page-edit-picture'),
url(r'^pages/(?P<pk>\w+)/remove-picture/$', views.page_remove_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, from .forms import (PageEditTitleForm, PageVisibilityForm, SiteImportForm,
PageEditRedirectionForm, PageSelectTemplateForm, PageEditSlugForm, PageEditRedirectionForm, PageSelectTemplateForm, PageEditSlugForm,
PageEditPictureForm, PageEditExcludeFromNavigationForm, PageEditPictureForm, PageEditExcludeFromNavigationForm,
AssetUploadForm) AssetUploadForm, PageEditDescriptionForm)
class HomepageView(ListView): class HomepageView(ListView):
@ -166,6 +166,12 @@ class PageEditSlugView(PageEditView):
page_edit_slug = PageEditSlugView.as_view() page_edit_slug = PageEditSlugView.as_view()
class PageEditDescriptionView(PageEditView):
form_class = PageEditDescriptionForm
page_edit_description = PageEditDescriptionView.as_view()
class PageEditTitleView(PageEditView): class PageEditTitleView(PageEditView):
form_class = PageEditTitleForm form_class = PageEditTitleForm

View File

@ -2,6 +2,9 @@
<html> <html>
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
{% if page.description %}
<meta name="description" content="{{ page.description}}" />
{% endif %}
<title>Combo - {{ page.title }}</title> <title>Combo - {{ page.title }}</title>
<link rel="stylesheet" type="text/css" media="all" href="{{ STATIC_URL }}css/combo-style.css"/> <link rel="stylesheet" type="text/css" media="all" href="{{ STATIC_URL }}css/combo-style.css"/>
<script src="{% xstatic 'jquery' 'jquery.min.js' %}"></script> <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.form.submit()
resp = resp.follow() resp = resp.follow()
assert Page.objects.all()[0].slug == 'foobar' 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 # template name
resp = resp.click(href='.*/template') resp = resp.click(href='.*/template')
assert resp.form['template_name'].value == 'standard' assert resp.form['template_name'].value == 'standard'

View File

@ -124,13 +124,13 @@ def test_page_visibility():
assert not page.is_visible(user2) assert not page.is_visible(user2)
def test_import_export_pages(): 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() page.save()
cell = TextCell(page=page, text='foo', order=0, placeholder='content') cell = TextCell(page=page, text='foo', order=0, placeholder='content')
cell.save() 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() page2.save()
cell = TextCell(page=page2, text='bar', order=0, placeholder='content') 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] new_page_2 = Page.objects.all().order_by('order')[1]
assert new_page_1.title == 'foo' assert new_page_1.title == 'foo'
assert new_page_2.title == 'bar' 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 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 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' 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']) 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] footer_placeholder = [x for x in placeholders if x.key == 'footer'][0]
assert footer_placeholder.acquired is False 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