i18n: don't use default when updating
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2260 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
c03bd7e8ac
commit
8c136ea16b
4 changed files with 15 additions and 5 deletions
|
@ -329,7 +329,7 @@ class EditObject(FormController, I18NView):
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def adapted(self):
|
def adapted(self):
|
||||||
return adapted(self.object, self.languageInfo)
|
return adapted(self.object, self.languageInfoForUpdate)
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def typeInterface(self):
|
def typeInterface(self):
|
||||||
|
|
|
@ -309,7 +309,8 @@ class NodeView(BaseView):
|
||||||
obj = self.virtualTargetObject
|
obj = self.virtualTargetObject
|
||||||
if obj is not None:
|
if obj is not None:
|
||||||
basicView = zapi.getMultiAdapter((obj, self.request))
|
basicView = zapi.getMultiAdapter((obj, self.request))
|
||||||
basicView._viewName = self.context.viewName
|
if obj == self.targetObject:
|
||||||
|
basicView._viewName = self.context.viewName
|
||||||
return basicView.view
|
return basicView.view
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
|
|
|
@ -39,9 +39,10 @@ i18n_macros = ViewPageTemplateFile('i18n_macros.pt')
|
||||||
|
|
||||||
class LanguageInfo(object):
|
class LanguageInfo(object):
|
||||||
|
|
||||||
def __init__(self, context, request):
|
def __init__(self, context, request, allowDefault=True):
|
||||||
self.context = context
|
self.context = context
|
||||||
self.request = request
|
self.request = request
|
||||||
|
self.allowDefault = allowDefault
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def loopsRoot(self):
|
def loopsRoot(self):
|
||||||
|
@ -76,6 +77,10 @@ class I18NView(object):
|
||||||
def languageInfo(self):
|
def languageInfo(self):
|
||||||
return LanguageInfo(self.context, self.request)
|
return LanguageInfo(self.context, self.request)
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def languageInfoForUpdate(self):
|
||||||
|
return LanguageInfo(self.context, self.request, False)
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def useI18NForEditing(self):
|
def useI18NForEditing(self):
|
||||||
return (self.languageInfo.availableLanguages
|
return (self.languageInfo.availableLanguages
|
||||||
|
|
|
@ -68,20 +68,24 @@ def getI18nValue(obj, attr, langInfo=None):
|
||||||
if isinstance(value, I18NValue):
|
if isinstance(value, I18NValue):
|
||||||
if langInfo:
|
if langInfo:
|
||||||
result = value.get(langInfo.language, _not_found)
|
result = value.get(langInfo.language, _not_found)
|
||||||
if result is _not_found:
|
if result is _not_found and langInfo.allowDefault:
|
||||||
result = value.get(langInfo.defaultLanguage, _not_found)
|
result = value.get(langInfo.defaultLanguage, _not_found)
|
||||||
if result is _not_found:
|
if result is _not_found:
|
||||||
result = value.getDefault()
|
result = value.getDefault()
|
||||||
return result
|
return result
|
||||||
else:
|
else:
|
||||||
return value.getDefault()
|
return value.getDefault()
|
||||||
return value
|
if langInfo is None or langInfo.allowDefault:
|
||||||
|
return value
|
||||||
|
return None
|
||||||
|
|
||||||
def setI18nValue(obj, attr, value, langInfo=None):
|
def setI18nValue(obj, attr, value, langInfo=None):
|
||||||
obj = removeSecurityProxy(obj)
|
obj = removeSecurityProxy(obj)
|
||||||
old = getattr(obj, attr, None)
|
old = getattr(obj, attr, None)
|
||||||
if langInfo is None:
|
if langInfo is None:
|
||||||
if isinstance(old, I18NValue):
|
if isinstance(old, I18NValue):
|
||||||
|
# TODO (?): Just replace the value corresponding to
|
||||||
|
# that of the default language
|
||||||
raise ValueError('Attribute %s on object %s is an I18NValue (%s) '
|
raise ValueError('Attribute %s on object %s is an I18NValue (%s) '
|
||||||
'and no langInfo given.' % (attr, obj, value))
|
'and no langInfo given.' % (attr, obj, value))
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Add table
Reference in a new issue