From 50bd996c3b5499ab08d93143c12c9df98cd7762f Mon Sep 17 00:00:00 2001 From: Gaetan Delannay Date: Mon, 15 Dec 2014 10:30:24 +0100 Subject: [PATCH] [gen] Bugfixes. --- fields/__init__.py | 4 ++-- fields/string.py | 8 ++++++-- gen/mixins/ToolMixin.py | 6 +++--- gen/wrappers/ToolWrapper.py | 2 +- gen/wrappers/__init__.py | 5 +++++ 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/fields/__init__.py b/fields/__init__.py index 49c4bff..25d458d 100644 --- a/fields/__init__.py +++ b/fields/__init__.py @@ -64,7 +64,7 @@ class Field: value=not isSearch and \ field.getFormattedValue(zobj, rawValue, showChanges); requestValue=not isSearch and zobj.getRequestFieldValue(name); - inRequest=field.valueIsInRequest(zobj, req, name); + inRequest=field.valueIsInRequest(zobj, req, name, layoutType); error=req.get('%s_error' % name); isMultiple=(field.multiplicity[1] == None) or \ (field.multiplicity[1] > 1); @@ -654,7 +654,7 @@ class Field: index = tool.getApp().catalog.Indexes[indexName] return index.getEntryForObject(catalogBrain.getRID()) - def valueIsInRequest(self, obj, request, name): + def valueIsInRequest(self, obj, request, name, layoutType): '''Is there a value corresponding to this field in the request? p_name can be different from self.name (ie, if it is a field within another (List) field). In most cases, checking that this p_name is in the diff --git a/fields/string.py b/fields/string.py index 97d4acb..9d47a12 100644 --- a/fields/string.py +++ b/fields/string.py @@ -528,10 +528,14 @@ class String(Field): if isinstance(res, dict): res = res.copy() return res - def valueIsInRequest(self, obj, request, name): + def valueIsInRequest(self, obj, request, name, layoutType): + # If we are on the search layout, p_obj, if not None, is certainly not + # the p_obj we want here (can be a home object). + if layoutType == 'search': + return Field.valueIsInRequest(self, obj, request, name, layoutType) languages = self.getAttribute(obj, 'languages') if len(languages) == 1: - return Field.valueIsInRequest(self, obj, request, name) + return Field.valueIsInRequest(self, obj, request, name, layoutType) # Is is sufficient to check that at least one of the language-specific # values is in the request. return request.has_key('%s_%s' % (name, languages[0])) diff --git a/gen/mixins/ToolMixin.py b/gen/mixins/ToolMixin.py index 7fb8c0a..f94736b 100644 --- a/gen/mixins/ToolMixin.py +++ b/gen/mixins/ToolMixin.py @@ -218,17 +218,17 @@ class ToolMixin(BaseMixin): - the number of columns for layouting those fields.''' fields = [] if refInfo: - # The search is triggered from a Ref field. + # The search is triggered from a Ref field refObject, fieldName = self.getRefInfo(refInfo) refField = refObject.getAppyType(fieldName) fieldNames = refField.queryFields or () nbOfColumns = refField.queryNbCols else: - # The search is triggered from an app-wide search. + # The search is triggered from an app-wide search klass = self.getAppyClass(className) fieldNames = getattr(klass, 'searchFields', None) if not fieldNames: - # Gather all the indexed fields on this class. + # Gather all the indexed fields on this class fieldNames = [f.name for f in self.getAllAppyTypes(className) \ if f.indexed] nbOfColumns = getattr(klass, 'numberOfSearchColumns', 3) diff --git a/gen/wrappers/ToolWrapper.py b/gen/wrappers/ToolWrapper.py index 4da84c0..702d7fc 100644 --- a/gen/wrappers/ToolWrapper.py +++ b/gen/wrappers/ToolWrapper.py @@ -550,7 +550,7 @@ class ToolWrapper(AbstractWrapper): layoutType='search'; x=ztool.getCssJs(searchInfo.fields, 'edit', cssJs)"> - +