From f94bcff4d9c62fd1c5a0aed4ffa290c46cb791f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?=
Date: Fri, 31 Jan 2020 10:11:49 +0100
Subject: [PATCH] page: new pages are excluded from navigation by default
(#17659)
---
.../migrations/0041_auto_20200130_1619.py | 19 +++++++++
combo/data/models.py | 4 +-
combo/manager/forms.py | 22 +++++++++-
combo/manager/templates/combo/page_view.html | 6 +--
combo/manager/urls.py | 4 +-
combo/manager/views.py | 15 ++++---
tests/test_calendar.py | 2 +-
tests/test_cells.py | 20 +++++-----
tests/test_manager.py | 40 +++++++++++++++----
tests/test_public.py | 15 +++----
10 files changed, 106 insertions(+), 41 deletions(-)
create mode 100644 combo/data/migrations/0041_auto_20200130_1619.py
diff --git a/combo/data/migrations/0041_auto_20200130_1619.py b/combo/data/migrations/0041_auto_20200130_1619.py
new file mode 100644
index 00000000..39a8d1a0
--- /dev/null
+++ b/combo/data/migrations/0041_auto_20200130_1619.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', '0040_auto_20200119_1017'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='page',
+ name='exclude_from_navigation',
+ field=models.BooleanField(default=True, verbose_name='Exclude from navigation'),
+ ),
+ ]
diff --git a/combo/data/models.py b/combo/data/models.py
index fe8a1581..358043ee 100644
--- a/combo/data/models.py
+++ b/combo/data/models.py
@@ -135,7 +135,7 @@ class Page(models.Model):
template_name = models.CharField(_('Template'), max_length=50)
parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
order = models.PositiveIntegerField()
- exclude_from_navigation = models.BooleanField(_('Exclude from navigation'), default=False)
+ exclude_from_navigation = models.BooleanField(_('Exclude from navigation'), default=True)
redirect_url = models.CharField(_('Redirect URL'), max_length=200, blank=True)
public = models.BooleanField(_('Public'), default=True)
@@ -446,6 +446,8 @@ class Page(models.Model):
new_page.snapshot = None
# set order
new_page.order = self.order + 1
+ # exclude from navigation
+ new_page.exclude_from_navigation = True
# store new page
new_page.save()
diff --git a/combo/manager/forms.py b/combo/manager/forms.py
index e32193ac..ce89e319 100644
--- a/combo/manager/forms.py
+++ b/combo/manager/forms.py
@@ -49,6 +49,7 @@ class PageEditSlugForm(forms.ModelForm):
raise ValidationError(_('Slug must be unique'), code='unique')
return value
+
class PageEditDescriptionForm(forms.ModelForm):
class Meta:
model = Page
@@ -107,10 +108,27 @@ class PageEditRedirectionForm(forms.ModelForm):
return page
-class PageEditExcludeFromNavigationForm(forms.ModelForm):
+class PageEditIncludeInNavigationForm(forms.ModelForm):
+ include_in_navigation = forms.BooleanField(
+ label=_('Include in navigation menus'),
+ required=False
+ )
+
class Meta:
model = Page
- fields = ('exclude_from_navigation',)
+ fields = []
+
+ def __init__(self, *args, **kwargs):
+ instance = kwargs['instance']
+ initial = kwargs.pop('initial', {})
+ initial['include_in_navigation'] = not instance.exclude_from_navigation
+ super(PageEditIncludeInNavigationForm, self).__init__(initial=initial, *args, **kwargs)
+
+ def save(self, *args, **kwargs):
+ super(PageEditIncludeInNavigationForm, self).save(*args, **kwargs)
+ self.instance.exclude_from_navigation = not self.cleaned_data['include_in_navigation']
+ self.instance.save()
+ return self.instance
class CellVisibilityForm(forms.Form):
diff --git a/combo/manager/templates/combo/page_view.html b/combo/manager/templates/combo/page_view.html
index b9c8f0d7..3d9471d7 100644
--- a/combo/manager/templates/combo/page_view.html
+++ b/combo/manager/templates/combo/page_view.html
@@ -61,9 +61,9 @@
-
-{% if object.exclude_from_navigation %}{% trans 'yes' %}{% else %}{% trans 'no' %}{% endif %}
-({% trans 'change' %})
+
+{% if object.exclude_from_navigation %}{% trans 'no' %}{% else %}{% trans 'yes' %}{% endif %}
+({% trans 'change' %})