예제 #1
0
파일: ProxyField.py 프로젝트: ra2003/erp5
  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
예제 #2
0
파일: ProxyField.py 프로젝트: poses/erp5
  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
예제 #3
0
 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)
예제 #4
0
    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)
예제 #5
0
파일: MatrixBox.py 프로젝트: Verde1705/erp5
 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)
예제 #6
0
파일: MatrixBox.py 프로젝트: poses/erp5
 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)
예제 #7
0
 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
예제 #8
0
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
예제 #9
0
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
예제 #10
0
 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
예제 #11
0
 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
예제 #12
0
 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
예제 #13
0
파일: ProxyField.py 프로젝트: poses/erp5
 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
예제 #14
0
 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)
예제 #15
0
  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
예제 #16
0
파일: ProxyField.py 프로젝트: esosaja/erp5
 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
예제 #17
0
    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
예제 #18
0
 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
예제 #19
0
 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)
예제 #20
0
 def get_value(self, id, **kw):
     if id in self.getCaptchaCustomPropertyList():
         return self.values[id]
     return ZMIField.get_value(self, id, **kw)
예제 #21
0
 def __init__(self, id, **kw):
     ZMIField.__init__(self, id, **kw)
     PythonScript.__init__(self, id)
예제 #22
0
 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)
예제 #23
0
 def __init__(self, id, **kw):
     ZMIField.__init__(self, id, **kw)
     PythonScript.__init__(self, id)
예제 #24
0
 def getCaptchaCustomTalesPropertyList(self):
   captcha_type = ZMIField.get_value(self, "captcha_type")
   captcha_provider = CaptchaProviderFactory.getProvider(captcha_type)
   extraPropertyList = captcha_provider.getExtraTalesPropertyList()
   return extraPropertyList                                     
예제 #25
0
 def get_value(self, id, **kw):
   if id in self.getCaptchaCustomPropertyList():
     return self.values[id]
   return ZMIField.get_value(self, id, **kw)
예제 #26
0
 def getCaptchaCustomTalesPropertyList(self):
     captcha_type = ZMIField.get_value(self, "captcha_type")
     captcha_provider = CaptchaProviderFactory.getProvider(captcha_type)
     extraPropertyList = captcha_provider.getExtraTalesPropertyList()
     return extraPropertyList
예제 #27
0
파일: ProxyField.py 프로젝트: poses/erp5
 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)