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
-~----------~----~----~----~------~----~------~--~---

Reply via email to