Ignore:
Timestamp:
15 Jan 2010, 11:37:03 (15 years ago)
Author:
uli
Message:
  • Add converter for boolean values.
  • Add methods to convert values back to strings.
  • Fix choice converter (still fragile).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • waeup/branches/ulif-importers/src/waeup/utils/converters.py

    r4810 r4814  
    88except ImportError:
    99    from zope.browser.interfaces import ITerms
    10 from zope.schema.interfaces import IText, IInt, IChoice
     10from zope.schema.interfaces import IBool, IText, IInt, IChoice
    1111from waeup.interfaces import ISchemaTypeConverter
    1212
     
    4242            self.context.validate(result)
    4343        return result
     44
     45    def _convertValueToString(self, value):
     46        return str(value)
     47
     48    def toString(self, value, strict=True):
     49        if strict:
     50            self.context.validate(value)
     51        if value == self.context.missing_value:
     52            return None
     53        return self._convertValueToString(value)
     54
     55class BoolConverter(Converter):
     56    grok.context(IBool)
     57    grok.provides(ISchemaTypeConverter)
     58
     59    def _convertValueFromString(self, string):
     60        if string is None:
     61            return None
     62        if string.lower() in ['1', 'true', 'yes']:
     63            return True
     64        return False
     65
     66    def _convertValueToString(self, value):
     67        if value is None:
     68            return None
     69        if value:
     70            return '1'
     71        return '0'
    4472   
    4573class TextConverter(Converter):
     
    6795                (self.context.source, TestRequest()), ITerms)
    6896        except:
    69             pass
     97            self.terms = None
    7098
    7199    def _convertValueFromString(self, string):
    72         try:
    73             return self.context.source.getTermByToken(string).value
    74         except AttributeError:
    75             self.terms = getMultiAdapter(
    76                 (self.context.source, TestRequest()), ITerms)
     100        if self.terms is not None:
    77101            return self.terms.getValue(string)
     102        return self.context.source.getTermByToken(string).value
    78103
     104    def _convertValueToString(self, value):
     105        if self.terms is not None:
     106            return self.terms.getTerm(value).token
     107        return str(value)
Note: See TracChangeset for help on using the changeset viewer.