Revision: 613
Author: batiste.bieler
Date: Wed Jul 22 01:58:14 2009
Log: Apply the alias repair patch
http://code.google.com/p/django-page-cms/source/detail?r=613
Modified:
/trunk/pages/models.py
/trunk/pages/tests/pages_tests.py
/trunk/pages/utils.py
/trunk/pages/views.py
=======================================
--- /trunk/pages/models.py Wed Jul 22 00:07:24 2009
+++ /trunk/pages/models.py Wed Jul 22 01:58:14 2009
@@ -24,7 +24,7 @@
import mptt
from pages import settings
-from pages.utils import get_placeholders
+from pages.utils import get_placeholders, normalize_url
from pages.managers import PageManager, ContentManager,
PagePermissionManager, PageAliasManager
@@ -163,7 +163,7 @@
alias = PageAlias.objects.get(page=self, is_canonical=True)
#if settings.PAGE_USE_LANGUAGE_PREFIX:
# url = str(language) + '/' + self.url
- return alias.url
+ return reverse('pages-root')[:-1] + alias.url
except:
url = reverse('pages-root')
if settings.PAGE_USE_LANGUAGE_PREFIX:
@@ -348,4 +348,11 @@
for alias in PageAlias.objects.filter(page=self.page):
alias.is_canonical = False
alias.save()
- super(PageAlias, self).save(*args, **kwargs)
+ super(PageAlias, self).save(*args, **kwargs)
+
+ def __unicode__(self):
+ str = "%s => %s" % (self.url, self.page.get_url())
+ if self.is_canonical:
+ str = str + " (canonical)"
+ return str
+
=======================================
--- /trunk/pages/tests/pages_tests.py Wed Jul 15 01:56:17 2009
+++ /trunk/pages/tests/pages_tests.py Wed Jul 22 01:58:14 2009
@@ -3,7 +3,7 @@
import django
from django.test import TestCase
from pages import settings
-from pages.models import Page, Content, PagePermission
+from pages.models import Page, Content, PagePermission, PageAlias
from django.test.client import Client
from django.template import Template, RequestContext, TemplateDoesNotExist
from django.http import HttpResponse, HttpResponseRedirect
@@ -627,3 +627,56 @@
url = '/admin/pages/page/%d/get-content/1/' % page.id
response = c.get(url)
self.assertEqual(response.status_code, 200)
+
+ def test_26_page_alias(self):
+ """Test page aliasing system"""
+
+ c = Client()
+ c.login(username= 'batiste', password='b')
+
+ # create some pages
+ page_data = self.get_new_page_data()
+ page_data['title'] = 'home-page-title'
+ page_data['slug'] = 'home-page'
+ response = c.post('/admin/pages/page/add/', page_data)
+ self.assertRedirects(response, '/admin/pages/page/')
+
+ page_data['title'] = 'downloads-page-title'
+ page_data['slug'] = 'downloads-page'
+ response = c.post('/admin/pages/page/add/', page_data)
+ self.assertRedirects(response, '/admin/pages/page/')
+
+ # create aliases for the pages
+ page = Page.objects.from_path('home-page', None)
+ self.assertTrue(page)
+ p = PageAlias(page=page, url='/', is_canonical=True)
+ p.save()
+ p = PageAlias(page=page, url='/index.php', is_canonical=False)
+ p.save()
+
+ page = Page.objects.from_path('downloads-page', None)
+ self.assertTrue(page)
+ p = PageAlias(page=page, url='index.php?page=downloads',
is_canonical=False)
+ p.save()
+
+ # now check whether we can retrieve the pages.
+ # is the homepage available from its canonical alias?
+ response = c.get('/pages/')
+ self.assertContains(response, "home-page-title", 2)
+
+ # the other alias must cause a 301 redirect since it is not
canonical
+ response = c.get('/pages/index.php')
+ self.assertRedirects(response, '/pages/', 301)
+
+ # same must be true if we are calling the page by slug
+ response = c.get('/pages/home-page')
+ self.assertRedirects(response, '/pages/', 301)
+
+ # for the download page, the slug is canonical
+ response = c.get('/pages/downloads-page/')
+ self.assertContains(response, "downloads-page-title", 2)
+
+ # calling via its alias must cause redirect
+ response = c.get('/pages/index.php?page=downloads')
+ self.assertRedirects(response, '/pages/downloads-page/', 301)
+
=======================================
--- /trunk/pages/utils.py Wed Jul 22 00:07:24 2009
+++ /trunk/pages/utils.py Wed Jul 22 01:58:14 2009
@@ -90,6 +90,8 @@
>>> normalize_url(None)
'/'
+ >>> normalize_url('/')
+ '/'
>>> normalize_url('/foo/bar')
'/foo/bar'
>>> normalize_url('foo/bar')
@@ -101,6 +103,6 @@
return '/'
if not url.startswith('/'):
url = '/' + url
- if url.endswith('/'):
+ if len(url)>1 and url.endswith('/'):
url = url[0:len(url)-1]
return url
=======================================
--- /trunk/pages/views.py Tue Jul 21 01:02:49 2009
+++ /trunk/pages/views.py Wed Jul 22 01:58:14 2009
@@ -76,6 +76,6 @@
if not alias:
raise Http404
if alias.is_canonical:
- return details(request, alias.page.slug(), *args, **kwargs)
+ return details(request, alias.page.get_url(), *args, **kwargs)
else:
return
HttpResponsePermanentRedirect(alias.page.get_absolute_url(lang))
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pinax-updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/pinax-updates?hl=en
-~----------~----~----~----~------~----~------~--~---