def get_value(self, id, **kw): if id in self.widget.property_names: return ZMIField.get_value(self, id, **kw) if not self.is_delegated(id): original_template_field = self.getRecursiveTemplateField() function = getOriginalGetValueFunction(original_template_field, id) if function is not None: return function(self, id, **kw) else: return ZMIField.get_value(self, id, **kw) field = self proxy_field = self.getTemplateField() REQUEST = kw.get('REQUEST', get_request()) if proxy_field is not None and REQUEST is not None: field = REQUEST.get( 'field__proxyfield_%s_%s_%s' % (self.id, self._p_oid, id), self) REQUEST.set( 'field__proxyfield_%s_%s_%s' % (proxy_field.id, proxy_field._p_oid, id), field) # Don't use cache if field is not stored in zodb, or if target field is # defined by a TALES if self._p_oid is None or self.tales['field_id'] or self.tales['form_id']: return self._get_value(id, **kw) # XXX: Are these disabled? proxy_field = self.getTemplateField(cache=False) if proxy_field is not None: return proxy_field.get_value(id, **kw) else: return None cache_id = ('ProxyField.get_value', self._p_oid, field._p_oid, id) from Products.ERP5Form.Form import field_value_cache try: value = field_value_cache[cache_id] except KeyError: # either returns non callable value (ex. "Title") # or a FieldValue instance of appropriate class value, cacheable = self.getFieldValue(field, id, **kw) if cacheable: field_value_cache[cache_id] = value if value is _USE_ORIGINAL_GET_VALUE_MARKER: return proxy_field.get_value(id, **kw) if callable(value): return value(field, id, **kw) return value
def _edit(self, result): if result.has_key("captcha_type"): # Now, find out the old fields and wipe them out ! new_provider = CaptchaProviderFactory.getProvider(result["captcha_type"]) old_propertiesIds = self.__extraPropertyList new_properties = [x.get_real_field() for x in new_provider.getExtraPropertyList()] deleted_properties = [x for x in new_properties if not x.id in old_propertiesIds] for deleted_property in deleted_properties: if deleted_property.values.has_key("default"): result[deleted_property.id] = deleted_property.values["default"] else: result[deleted_property.id] = None self.__extraPropertyList = new_properties ZMIField._edit(self, result)
def get_value(self, id, **kw): if id in self.widget.property_names: return ZMIField.get_value(self, id, **kw) try: field = self.getRecursiveTemplateField(id) if isinstance(field, ProxyField): cls = field.getRecursiveTemplateField().__class__ try: _ProxyField = cls.__ProxyField except AttributeError: class _ProxyField(cls): def __init__(self): pass cls.__ProxyField = _ProxyField tmp_field = _ProxyField() for attr in 'values', 'tales', 'overrides': setattr(tmp_field, attr, getattr(field, attr).copy()) field = tmp_field except BrokenProxyField: # do not break Form.get_field if id != 'enabled': raise else: return field.get_value(id, field=self, **kw)
def get_value(self, id, **kw): if id=='default' and kw.get('render_format') in ('list', ): return self.widget.render(self, self.generate_field_key(), None, kw.get('REQUEST'), render_format=kw.get('render_format')) else: return ZMIField.get_value(self, id, **kw)
def getCaptchaCustomTalesPropertyList(self): if hasattr(self, "__extraTalesPropertyList"): return self.__extraTalesPropertyList captcha_type = ZMIField.get_value(self, "captcha_type") captcha_provider = CaptchaProviderFactory.getProvider(captcha_type) extraPropertyList = captcha_provider.getExtraTalesPropertyList() self.__extraTalesPropertyList = [x.id for x in extraPropertyList] return extraPropertyList
def paralellListFieldGetValue(field, id, REQUEST=None, **kw): result = MARKER key = KEYWORD % id if REQUEST is not None and REQUEST.has_key(key): result = REQUEST.get(key) if result is MARKER: result = ZMIField.get_value(field, id, REQUEST=REQUEST, **kw) return result
def get_orig_value(self, id): """ Get value for id; don't do any override calculation. """ if id in ('is_relation_field', 'is_multi_relation_field'): result = 1 else: result = ZMIField.get_orig_value(self, id) return result
def _get_user_input_value(self, key, REQUEST): """ Try to get a value of the field from the REQUEST """ proxy_field = self.getTemplateField() if proxy_field is not None: result = proxy_field._get_user_input_value(key, REQUEST) else: result = ZMIField._get_user_input_value(self, key, REQUEST) return result
def get_value(self, id, REQUEST=None, **kw): """ Get value for id. Optionally pass keyword arguments that get passed to TALES expression. """ if REQUEST is not None: result = REQUEST.get(KEYWORD % id, MARKER) if result is not MARKER: return result return ZMIField.get_value(self, id, REQUEST=REQUEST, **kw)
def get_value(self, id, REQUEST=None, **kw): """Get value for id. Optionally pass keyword arguments that get passed to TALES expression. """ if (id == 'items') and (REQUEST is not None): # relation_item_list is not editable for the RelationField result = REQUEST.get('relation_item_list', None) else: result = ZMIField.get_value(self, id, REQUEST=REQUEST, **kw) return result
def has_value(self, id): """ Return true if the field defines such a value. """ result = None if (id in self.widget.property_names) or (not self.is_delegated(id)): result = ZMIField.has_value(self, id) else: proxy_field = self.getTemplateField() if proxy_field is not None: result = proxy_field.has_value(id) return result
def has_value(self, id): """ Return true if the field defines such a value. """ result = None if (id in self.widget.property_names) or \ (not self.is_delegated(id)): result = ZMIField.has_value(self, id) else: proxy_field = self.getTemplateField() if proxy_field is not None: result = proxy_field.has_value(id) return result
def get_value(self, id, **kw): if id == 'default': render_format = kw.get('render_format') if render_format == 'list': request = kw.get('REQUEST') if request is None: request = get_request() field = kw.get('field', self) # for proxy field return self.widget.render( field, self.generate_field_key(), None, request, render_format=render_format, render_prefix=kw.get('render_prefix')) else: return ZMIField.get_value(self, id, **kw)
def get_value(self, id, **kw): if id in self.getCaptchaCustomPropertyList(): return self.values[id] return ZMIField.get_value(self, id, **kw)
def __init__(self, id, **kw): ZMIField.__init__(self, id, **kw) PythonScript.__init__(self, id)
def get_orig_value(self, id): """Get value for id; don't do any override calculation. """ if id not in self.widget.property_names and self.is_delegated(id): return self.getTemplateField().get_orig_value(id) return ZMIField.get_orig_value(self, id)
def getCaptchaCustomTalesPropertyList(self): captcha_type = ZMIField.get_value(self, "captcha_type") captcha_provider = CaptchaProviderFactory.getProvider(captcha_type) extraPropertyList = captcha_provider.getExtraTalesPropertyList() return extraPropertyList