data: add description to page (#23262)
This commit is contained in:
parent
e0e3ded588
commit
bbf8ae107e
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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()
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 }}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue