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)
|
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()
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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 }}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue