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

Reply via email to