mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-25 23:33:45 +00:00
Make site field editable on redirects
This commit is contained in:
parent
93cf24df73
commit
b0878b1534
4 changed files with 67 additions and 4 deletions
|
|
@ -1,11 +1,15 @@
|
|||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from wagtail.wagtailadmin.widgets import AdminPageChooser
|
||||
|
||||
from wagtail.wagtailredirects import models
|
||||
from wagtail.wagtailcore.models import Site
|
||||
from wagtail.wagtailredirects.models import Redirect
|
||||
|
||||
|
||||
class RedirectForm(forms.ModelForm):
|
||||
site = forms.ModelChoiceField(label=_("From site"), queryset=Site.objects.all(), required=False, empty_label=_("All sites"))
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(RedirectForm, self).__init__(*args, **kwargs)
|
||||
self.fields['redirect_page'].widget = AdminPageChooser()
|
||||
|
|
@ -13,5 +17,5 @@ class RedirectForm(forms.ModelForm):
|
|||
required_css_class = "required"
|
||||
|
||||
class Meta:
|
||||
model = models.Redirect
|
||||
fields = ('old_path', 'is_permanent', 'redirect_page', 'redirect_link')
|
||||
model = Redirect
|
||||
fields = ('old_path', 'site', 'is_permanent', 'redirect_page', 'redirect_link')
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wagtailredirects', '0002_add_verbose_names'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='redirect',
|
||||
name='site',
|
||||
field=models.ForeignKey(null=True, to='wagtailcore.Site', verbose_name='Site', blank=True, related_name='redirects'),
|
||||
),
|
||||
]
|
||||
|
|
@ -7,7 +7,7 @@ from django.utils.translation import ugettext_lazy as _
|
|||
|
||||
class Redirect(models.Model):
|
||||
old_path = models.CharField(verbose_name=_("Redirect from"), max_length=255, unique=True, db_index=True)
|
||||
site = models.ForeignKey('wagtailcore.Site', verbose_name=_('Site'), null=True, blank=True, related_name='redirects', db_index=True, editable=False)
|
||||
site = models.ForeignKey('wagtailcore.Site', verbose_name=_('Site'), null=True, blank=True, related_name='redirects', db_index=True)
|
||||
is_permanent = models.BooleanField(verbose_name=_("Permanent"), default=True, help_text=_("Recommended. Permanent redirects ensure search engines forget the old page (the 'Redirect from') and index the new page instead."))
|
||||
redirect_page = models.ForeignKey('wagtailcore.Page', verbose_name=_("Redirect to a page"), null=True, blank=True)
|
||||
redirect_link = models.URLField(verbose_name=_("Redirect to any URL"), blank=True)
|
||||
|
|
|
|||
|
|
@ -172,6 +172,7 @@ class TestRedirectsAddView(TestCase, WagtailTestUtils):
|
|||
def test_add(self):
|
||||
response = self.post({
|
||||
'old_path': '/test',
|
||||
'site': '',
|
||||
'is_permanent': 'on',
|
||||
'redirect_link': 'http://www.test.com/',
|
||||
})
|
||||
|
|
@ -185,6 +186,24 @@ class TestRedirectsAddView(TestCase, WagtailTestUtils):
|
|||
self.assertEqual(redirects.first().redirect_link, 'http://www.test.com/')
|
||||
self.assertEqual(redirects.first().site, None)
|
||||
|
||||
def test_add_with_site(self):
|
||||
localhost = Site.objects.get(hostname='localhost')
|
||||
response = self.post({
|
||||
'old_path': '/test',
|
||||
'site': localhost.id,
|
||||
'is_permanent': 'on',
|
||||
'redirect_link': 'http://www.test.com/',
|
||||
})
|
||||
|
||||
# Should redirect back to index
|
||||
self.assertRedirects(response, reverse('wagtailredirects:index'))
|
||||
|
||||
# Check that the redirect was created
|
||||
redirects = models.Redirect.objects.filter(old_path='/test')
|
||||
self.assertEqual(redirects.count(), 1)
|
||||
self.assertEqual(redirects.first().redirect_link, 'http://www.test.com/')
|
||||
self.assertEqual(redirects.first().site, localhost)
|
||||
|
||||
def test_add_validation_error(self):
|
||||
response = self.post({
|
||||
'old_path': '',
|
||||
|
|
@ -223,6 +242,7 @@ class TestRedirectsEditView(TestCase, WagtailTestUtils):
|
|||
response = self.post({
|
||||
'old_path': '/test',
|
||||
'is_permanent': 'on',
|
||||
'site': '',
|
||||
'redirect_link': 'http://www.test.com/ive-been-edited',
|
||||
})
|
||||
|
||||
|
|
@ -233,6 +253,26 @@ class TestRedirectsEditView(TestCase, WagtailTestUtils):
|
|||
redirects = models.Redirect.objects.filter(old_path='/test')
|
||||
self.assertEqual(redirects.count(), 1)
|
||||
self.assertEqual(redirects.first().redirect_link, 'http://www.test.com/ive-been-edited')
|
||||
self.assertEqual(redirects.first().site, None)
|
||||
|
||||
def test_edit_with_site(self):
|
||||
localhost = Site.objects.get(hostname='localhost')
|
||||
|
||||
response = self.post({
|
||||
'old_path': '/test',
|
||||
'is_permanent': 'on',
|
||||
'site': localhost.id,
|
||||
'redirect_link': 'http://www.test.com/ive-been-edited',
|
||||
})
|
||||
|
||||
# Should redirect back to index
|
||||
self.assertRedirects(response, reverse('wagtailredirects:index'))
|
||||
|
||||
# Check that the redirect was edited
|
||||
redirects = models.Redirect.objects.filter(old_path='/test')
|
||||
self.assertEqual(redirects.count(), 1)
|
||||
self.assertEqual(redirects.first().redirect_link, 'http://www.test.com/ive-been-edited')
|
||||
self.assertEqual(redirects.first().site, localhost)
|
||||
|
||||
def test_edit_validation_error(self):
|
||||
response = self.post({
|
||||
|
|
|
|||
Loading…
Reference in a new issue