From 3a4906638909729236b693fb21a4b1b7194344b5 Mon Sep 17 00:00:00 2001
From: Ivan Alejandro <ivanalejandro0@yahoo.com.ar>
Date: Thu, 27 Jun 2013 15:33:57 -0300
Subject: Bugfix: use the provider's default language as default string

Also take care (and note) a possible case with a problematic provider
misconfiguration.
---
 src/leap/common/config/baseconfig.py | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

(limited to 'src')

diff --git a/src/leap/common/config/baseconfig.py b/src/leap/common/config/baseconfig.py
index e6bd9c4..699d734 100644
--- a/src/leap/common/config/baseconfig.py
+++ b/src/leap/common/config/baseconfig.py
@@ -155,26 +155,39 @@ class LocalizedKey(object):
     def __init__(self, func, **kwargs):
         self._func = func
 
-    def __call__(self, instance, lang="en"):
+    def __call__(self, instance, lang=None):
         """
         Tries to return the string for the specified language, otherwise
-        informs the problem and returns an empty string.
+        returns the default language string.
 
         :param lang: language code
         :type lang: str
 
         :return: localized value from the possible values returned by
                  self._func
+                 It returns None in case that the provider does not provides
+                 a matching pair of default_language and string for
+                 that language.
+                 e.g.:
+                     'default_language': 'es',
+                     'description': {'en': 'test description'}
+                Note that the json schema can't check that.
         """
         descriptions = self._func(instance)
-        description_lang = ""
-        config_lang = "en"
+        config_lang = instance.get_default_language()
+        if lang is None:
+            lang = config_lang
+
         for key in descriptions.keys():
             if lang.startswith(key):
                 config_lang = key
                 break
 
-        description_lang = descriptions[config_lang]
+        description_lang = descriptions.get(config_lang)
+        if description_lang is None:
+            logger.error("There is a misconfiguration in the "
+                         "provider's language strings.")
+
         return description_lang
 
     def __get__(self, instance, instancetype):
-- 
cgit v1.2.3