Author: batiste.bieler
Date: Wed Mar 11 08:49:56 2009
New Revision: 400
Modified:
trunk/pages/admin/forms.py
trunk/pages/managers.py
trunk/pages/models.py
trunk/pages/tests.py
Log:
Fix the SQL for postgresql
Modified: trunk/pages/admin/forms.py
==============================================================================
--- trunk/pages/admin/forms.py (original)
+++ trunk/pages/admin/forms.py Wed Mar 11 08:49:56 2009
@@ -60,7 +60,7 @@
if target and position:
try:
target = Page.objects.get(pk=target)
- except self.model.DoesNotExist:
+ except Page.DoesNotExist:
if slug in [sibling.slug() for sibling in
Page.objects.root()]:
raise forms.ValidationError(_('A sibiling with
this slug already exists at the root level'))
else:
Modified: trunk/pages/managers.py
==============================================================================
--- trunk/pages/managers.py (original)
+++ trunk/pages/managers.py Wed Mar 11 08:49:56 2009
@@ -117,29 +117,28 @@
pass
content = self.create(page=page, language=language, body=body,
type=cnttype)
- def get_content(self, page, language, cnttype,
language_fallback=False):
+ def get_content(self, page, language, type, language_fallback=False):
"""
Gets the latest content for a particular page and language. Falls
back
to another language if wanted.
"""
- # used for the DISTINCT on the language. Should be nicer with a
lot of revision
- sql = '''SELECT pages_content.language, pages_content.body
- FROM pages_content WHERE (pages_content.type = %s
- AND pages_content.page_id = %s )
- GROUP BY pages_content.language
- ORDER BY pages_content.creation_date DESC'''
- cursor = connection.cursor()
- cursor.execute(sql, (cnttype, page.id))
- content_dict = dict([(c[0], c[1]) for c in cursor.fetchall()])
- if language in content_dict:
+ if not language:
+ language = settings.PAGE_DEFAULT_LANGUAGE
+ content_dict = {}
+ for lang in settings.PAGE_LANGUAGES:
+ try:
+ content = self.filter(language=lang[0], type=type,
page=page).latest()
+ content_dict[lang[0]] = content.body
+ except self.model.DoesNotExist:
+ content_dict[lang[0]] = ''
+ if content_dict[language]:
return content_dict[language]
- # requested language not found. Try other languages one after
- # the other
- elif language_fallback:
+
+ if language_fallback:
for lang in settings.PAGE_LANGUAGES:
- if lang[0] in content_dict:
+ if content_dict[lang[0]]:
return content_dict[lang[0]]
- return None
+ return ''
def get_content_slug_by_slug(self, slug):
"""
@@ -160,10 +159,10 @@
"""
Return all the page id according to a slug
"""
- sql = '''SELECT pages_content.page_id, pages_content.language
+ sql = '''SELECT pages_content.page_id,
MAX(pages_content.creation_date)
FROM pages_content WHERE (pages_content.type = %s AND
pages_content.body =%s)
- GROUP BY pages_content.language, pages_content.page_id
- ORDER BY pages_content.creation_date DESC'''
+ GROUP BY pages_content.page_id'''
+
cursor = connection.cursor()
cursor.execute(sql, ('slug', slug, ))
return [c[0] for c in cursor.fetchall()]
Modified: trunk/pages/models.py
==============================================================================
--- trunk/pages/models.py (original)
+++ trunk/pages/models.py Wed Mar 11 08:49:56 2009
@@ -284,6 +284,7 @@
objects = ContentManager()
class Meta:
+ get_latest_by = 'creation_date'
verbose_name = _('content')
verbose_name_plural = _('contents')
Modified: trunk/pages/tests.py
==============================================================================
--- trunk/pages/tests.py (original)
+++ trunk/pages/tests.py Wed Mar 11 08:49:56 2009
@@ -107,13 +107,15 @@
c.login(username= 'batiste', password='b')
page_data = self.get_new_page_data()
response = c.post('/admin/pages/page/add/', page_data)
- response = c.get('/admin/pages/page/1/')
+ self.assertRedirects(response, '/admin/pages/page/')
+ page = Page.objects.all()[0]
+ response = c.get('/admin/pages/page/%d/' % page.id)
self.assertEqual(response.status_code, 200)
page_data['title'] = 'changed title'
page_data['body'] = 'changed body'
- response = c.post('/admin/pages/page/1/', page_data)
+ response = c.post('/admin/pages/page/%d/' % page.id, page_data)
self.assertRedirects(response, '/admin/pages/page/')
- page = Page.objects.get(id=1)
+ page = Page.objects.get(id=page.id)
self.assertEqual(page.title(), 'changed title')
body = Content.objects.get_content(page, 'en-us', 'body')
self.assertEqual(body, 'changed body')
@@ -198,6 +200,8 @@
response = c.post('/admin/pages/page/add/', page_data)
self.assertRedirects(response, '/admin/pages/page/')
+ page = Page.objects.all()[0]
+
# this test only works in version superior of 1.0.2
django_version = django.get_version().rsplit()[0].split('.')
if len(django_version) > 2:
@@ -205,13 +209,13 @@
else:
major, middle = [int(v) for v in django_version]
if major >=1 and middle > 0:
- response = c.get('/admin/pages/page/1/?language=de')
+ response = c.get('/admin/pages/page/%d/?language=de' % page.id)
self.assertContains(response, 'value="de" selected="selected"')
# add a french version of the same page
page_data["language"] = 'fr-ch'
page_data["title"] = 'french title'
- response = c.post('/admin/pages/page/1/', page_data)
+ response = c.post('/admin/pages/page/%d/' % page.id, page_data)
self.assertRedirects(response, '/admin/pages/page/')
setattr(settings, "PAGE_DEFAULT_LANGUAGE", 'en-us')
@@ -250,14 +254,14 @@
c.login(username= 'batiste', password='b')
page_data = self.get_new_page_data()
response = c.post('/admin/pages/page/add/', page_data)
- page = Page.objects.get(id=1)
+ page = Page.objects.all()[0]
page_data['body'] = 'changed body'
- response = c.post('/admin/pages/page/1/', page_data)
+ response = c.post('/admin/pages/page/%d/' % page.id, page_data)
self.assertEqual(Content.objects.get_content(page, 'en-us', 'body'), 'changed
body')
page_data['body'] = 'changed body 2'
- response = c.post('/admin/pages/page/1/', page_data)
+ response = c.post('/admin/pages/page/%d/' % page.id, page_data)
self.assertEqual(Content.objects.get_content(page, 'en-us', 'body'), 'changed
body 2')
response = c.get('/pages/')
@@ -278,7 +282,8 @@
page_data = self.get_new_page_data()
page_data['template'] = 'pages/nice.html'
response = c.post('/admin/pages/page/add/', page_data)
- response = c.get('/admin/pages/page/1/')
+ page = Page.objects.all()[0]
+ response = c.get('/admin/pages/page/%d/' % page.id)
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'name="right-column"', 1)
@@ -298,6 +303,8 @@
# the redirect tell that the page has been create correctly
self.assertRedirects(response, '/admin/pages/page/')
+ page = Page.objects.all()[0]
+
response = c.post('/admin/pages/page/add/', page_data)
# we cannot create 2 root page with the same slug
# this assert test that the creation fail as attended
@@ -306,10 +313,10 @@
response = c.get('/pages/same-slug/')
page1 =
Content.objects.get_content_slug_by_slug(page_data['slug']).page
- self.assertEqual(page1.id, 1)
+ self.assertEqual(page1.id, page.id)
page_data['title'] = 'children title'
- page_data['target'] = 1
+ page_data['target'] = page1.id
page_data['position'] = 'first-child'
response = c.post('/admin/pages/page/add/', page_data)
self.assertRedirects(response, '/admin/pages/page/')
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---