Author: batiste.bieler
Date: Mon Mar 2 13:20:02 2009
New Revision: 376
Modified:
trunk/pages/admin/__init__.py
trunk/pages/templatetags/pages_tags.py
trunk/pages/tests.py
trunk/pages/utils.py
Log:
Make the tests pass again
Modified: trunk/pages/admin/__init__.py
==============================================================================
--- trunk/pages/admin/__init__.py (original)
+++ trunk/pages/admin/__init__.py Mon Mar 2 13:20:02 2009
@@ -212,7 +212,7 @@
form = super(PageAdmin, self).get_form(request, obj, **kwargs)
language = get_language_from_request(request, obj)
- form.base_fields['language'].initial = language or
settings.PAGE_DEFAULT_LANGUAGE
+ form.base_fields['language'].initial = language
if obj:
initial_slug = obj.slug(language=language, fallback=False)
initial_title = obj.title(language=language, fallback=False)
Modified: trunk/pages/templatetags/pages_tags.py
==============================================================================
--- trunk/pages/templatetags/pages_tags.py (original)
+++ trunk/pages/templatetags/pages_tags.py Mon Mar 2 13:20:02 2009
@@ -28,7 +28,7 @@
site_id = None
children = get_page_children(page)
PAGE_CONTENT_CACHE_DURATION = settings.PAGE_CONTENT_CACHE_DURATION
- lang = get_language_from_request(request)
+ lang = get_language_from_request(request, page)
if 'current_page' in context:
current_page = context['current_page']
return locals()
@@ -97,7 +97,7 @@
return {'content':''}
if lang is None:
- lang = get_language_from_request(context['request'])
+ lang = get_language_from_request(context['request'], page)
if hasattr(settings, 'PAGE_CONTENT_CACHE_DURATION'):
key = Page.PAGE_CONTENT_KEY % (page.id, lang, content_type)
c = cache.get(key)
@@ -139,7 +139,7 @@
if not request or not page:
return {'content':''}
if lang is None:
- lang = get_language_from_request(context['request'])
+ lang = get_language_from_request(context['request'], page)
if hasattr(settings, 'PAGE_CONTENT_CACHE_DURATION'):
key
= 'page_url_pid:'+str(page.id)+'_l:'+str(lang)+'_type:absolute_url'
url = cache.get(key)
@@ -304,7 +304,7 @@
def render(self, context):
if not 'request' in context or not self.page in context:
return ''
- language = get_language_from_request(context['request'])
+ language = get_language_from_request(context['request'],
context[self.page])
request = context['request']
content = Content.objects.get_content(context[self.page], language,
self.name, True)
Modified: trunk/pages/tests.py
==============================================================================
--- trunk/pages/tests.py (original)
+++ trunk/pages/tests.py Mon Mar 2 13:20:02 2009
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+import django
from django.test import TestCase
import settings
from pages.models import *
@@ -185,10 +186,18 @@
setattr(settings, "PAGE_DEFAULT_LANGUAGE", 'fr')
response = c.get('/admin/pages/page/add/')
self.assertContains(response, 'value="fr" selected="selected"')
-
+
page_data = self.get_new_page_data()
page_data["title"] = 'english title'
response = c.post('/admin/pages/page/add/', page_data)
+ self.assertRedirects(response, '/admin/pages/page/')
+
+ # this test only works in version superior of 1.0.2
+ major, middle, minor = [int(v) for v in
django.get_version().rsplit()[0].split('.')]
+ if major >=1 and middle > 0:
+ response = c.get('/admin/pages/page/1/?language=de')
+ self.assertContains(response, 'value="de" selected="selected"')
+
page_data["language"] = 'fr'
page_data["title"] = 'french title'
response = c.post('/admin/pages/page/1/', page_data)
@@ -209,5 +218,6 @@
self.assertContains(response, 'french title')
self.assertContains(response, 'lang="fr"')
self.assertNotContains(response, 'english title')
+
Modified: trunk/pages/utils.py
==============================================================================
--- trunk/pages/utils.py (original)
+++ trunk/pages/utils.py Mon Mar 2 13:20:02 2009
@@ -53,20 +53,25 @@
Return the most obvious language according the request
"""
# first try the GET parameter
- if request.GET.has_key('language'):
- language = request.GET['language']
- else:
- language = request.LANGUAGE_CODE[:2]
- # if client language is not available
- if language is None and current_page:
- # in last resort, get the first language available in the page
+ language = request.GET.get('language', None)
+ if language:
+ return language
+
+ client_language = str(request.LANGUAGE_CODE[:2])
+ # then try to get the right one for the page
+ if current_page:
+ # try to get the language that match the client language
languages = current_page.get_languages()
- if len(languages) > 0:
- language = languages[0]
- # if everything fails, use this :
- if language is None:
- language = settings.PAGE_DEFAULT_LANGUAGE
- return language
+ for lang in languages:
+ if client_language == lang[:2]:
+ return client_language
+ # try to get the language that match default language
+ for lang in languages:
+ if settings.PAGE_DEFAULT_LANGUAGE == lang[:2]:
+ return settings.PAGE_DEFAULT_LANGUAGE
+
+ # last resort
+ return settings.PAGE_DEFAULT_LANGUAGE
def has_page_add_permission(request, page=None):
"""
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---