def test_field_dicts():

    print

    # [Dict, TextLine]

    f = zope.schema.Dict(
        title=u"A map of keywords",
        key_type=zope.schema.Choice(vocabulary=SimpleVocabulary.fromValues(("alpha", "alpha-el", "nonsence"))),
        value_type=zope.schema.TextLine(title=u"Keyword"),
    )
    v = {"alpha": u"alpha", "alpha-el": u"αλφα", "nonsence": u'ειμαι "βράχος"'}
    f.validate(v)

    for name in ["default"]:
        formatter = formatter_for_field(f, name)
        verifyObject(IFormatter, formatter)
        s = formatter.format(v)
        print " -- format:%s %s -- " % (name, type(f))
        print s

    # [Dict, *]

    f = schemata.IFooMetadata.get("contacts")
    v = {"personal": fixtures.contact1, "office": fixtures.contact2}
    f.validate(v)

    for name in ["default"]:
        formatter = formatter_for_field(f, name)
        verifyObject(IFormatter, formatter)
        s = formatter.format(v)
        print " -- format:%s %s -- " % (name, type(f))
        print s
def test_field_lists():

    print

    # [List, TextLine]

    for name in ['default']:
        f = zope.schema.List(title=u'A list of keywords',
                             value_type=zope.schema.TextLine(title=u'Keyword'))
        v = [u'alpha', u'αλφα', u'ειμαι "βράχος"']
        f.validate(v)
        formatter = formatter_for_field(f, name)
        verifyObject(IFormatter, formatter)
        s = formatter.format(v)
        print ' -- format:%s %s -- ' % (name, type(f))
        print s

    # [List, NativeStringLine]

    for name in [
            'default',
    ]:
        f = zope.schema.List(
            title=u'A list of keywords',
            value_type=zope.schema.NativeStringLine(title=u'Keyword'))
        v = ['alphA', 'beta', 'i am a "rock"']
        f.validate(v)
        formatter = formatter_for_field(f, name)
        verifyObject(IFormatter, formatter)
        s = formatter.format(v)
        print ' -- format:%s %s -- ' % (name, type(f))
        print s

    # [List, *]

    for name in [
            'default',
    ]:
        f = schemata.IInspireMetadata.get('bounding_box')
        v = [fixtures.bbox1]
        f.validate(v)
        formatter = formatter_for_field(f, name)
        verifyObject(IFormatter, formatter)
        s = formatter.format(v)
        print ' -- format:%s %s -- ' % (name, type(f))
        print s

    f = zope.schema.List(
        title=u'A list of spatial resolution objects',
        value_type=zope.schema.Object(schema=schemata.ISpatialResolution))
    v = [fixtures.spatialres2, fixtures.spatialres1]
    f = f.bind(FieldContext(key='f', value=v))
    formatter = formatter_for_field(f, 'booo')
    s = formatter.format(v)
    print ' -- format:booo %s -- ' % (type(f))
    print s
def test_field_lists():

    print

    # [List, TextLine]

    for name in ["default"]:
        f = zope.schema.List(title=u"A list of keywords", value_type=zope.schema.TextLine(title=u"Keyword"))
        v = [u"alpha", u"αλφα", u'ειμαι "βράχος"']
        f.validate(v)
        formatter = formatter_for_field(f, name)
        verifyObject(IFormatter, formatter)
        s = formatter.format(v)
        print " -- format:%s %s -- " % (name, type(f))
        print s

    # [List, NativeStringLine]

    for name in ["default"]:
        f = zope.schema.List(title=u"A list of keywords", value_type=zope.schema.NativeStringLine(title=u"Keyword"))
        v = ["alphA", "beta", 'i am a "rock"']
        f.validate(v)
        formatter = formatter_for_field(f, name)
        verifyObject(IFormatter, formatter)
        s = formatter.format(v)
        print " -- format:%s %s -- " % (name, type(f))
        print s

    # [List, *]

    for name in ["default"]:
        f = schemata.IInspireMetadata.get("bounding_box")
        v = [fixtures.bbox1]
        f.validate(v)
        formatter = formatter_for_field(f, name)
        verifyObject(IFormatter, formatter)
        s = formatter.format(v)
        print " -- format:%s %s -- " % (name, type(f))
        print s

    f = zope.schema.List(
        title=u"A list of spatial resolution objects", value_type=zope.schema.Object(schema=schemata.ISpatialResolution)
    )
    v = [fixtures.spatialres2, fixtures.spatialres1]
    f = f.bind(FieldContext(key="f", value=v))
    formatter = formatter_for_field(f, "booo")
    s = formatter.format(v)
    print " -- format:booo %s -- " % (type(f))
    print s
def test_field_dicts():

    print

    # [Dict, TextLine]

    f = zope.schema.Dict(
        title=u'A map of keywords',
        key_type=zope.schema.Choice(
            vocabulary=SimpleVocabulary.fromValues(('alpha', 'alpha-el',
                                                    'nonsence'))),
        value_type=zope.schema.TextLine(title=u'Keyword'))
    v = {
        'alpha': u'alpha',
        'alpha-el': u'αλφα',
        'nonsence': u'ειμαι "βράχος"',
    }
    f.validate(v)

    for name in ['default']:
        formatter = formatter_for_field(f, name)
        verifyObject(IFormatter, formatter)
        s = formatter.format(v)
        print ' -- format:%s %s -- ' % (name, type(f))
        print s

    # [Dict, *]

    f = schemata.IFooMetadata.get('contacts')
    v = {
        'personal': fixtures.contact1,
        'office': fixtures.contact2,
    }
    f.validate(v)

    for name in ['default']:
        formatter = formatter_for_field(f, name)
        verifyObject(IFormatter, formatter)
        s = formatter.format(v)
        print ' -- format:%s %s -- ' % (name, type(f))
        print s
Exemplo n.º 5
0
        def _get_field_value(self, v, field):
            '''Get the value of a field considered a leaf.
            Serialize or format (not both!) this value, if requested so.
            '''
            assert v is not None, 'This was supposed to be checked at dictize()'

            # Check if value needs to be serialized

            serializer_name = self.opts.get('serialize-values', False)
            if serializer_name:
                ser = serializer_for_field(field, serializer_name)
                if ser:
                    try:
                        v = ser.dumps(v)
                    except Exception as ex:
                        logger.warn(
                            'Failed to serialize value %r for field %r (%s): %s'
                            %
                            (v, field.__name__, field.__class__.__name__, ex))
                        v = None
                # Return here, no need to do anything more
                return v

            # Check if value needs to be formatted

            format_spec = self.opts.get('format-values', False)
            if format_spec:
                assert isinstance(format_spec, FormatSpec)
                fo = formatter_for_field(field, format_spec.name)
                if fo:
                    fo_opts = format_spec.opts
                    # Fetch any extra field-level extra options
                    fo_conf = formatters.config_for_field(
                        field, format_spec.name)
                    if fo_conf and 'extra-opts' in fo_conf:
                        fo_opts = copy.copy(fo_opts)
                        fo_opts.update(fo_conf.get('extra-opts'))
                    # Try to format
                    try:
                        v = fo.format(v, opts=fo_opts)
                    except Exception as ex:
                        logger.warn(
                            'Failed to format value %r for field %r (%s): %s' %
                            (v, field.__name__, field.__class__.__name__, ex))
                        v = None

            return v
def test_field_float():

    print

    f = zope.schema.Float(title=u"Grade")

    v = random.random()
    v1 = random.random()

    f = f.bind(FieldContext(key="f", value=v))

    formatter = formatter_for_field(f, "default")
    verifyObject(IFormatter, formatter)

    s = formatter.format(v)
    print " -- format:default %s -- " % (type(f))
    print s
def test_field_float():

    print

    f = zope.schema.Float(title=u'Grade')

    v = random.random()
    v1 = random.random()

    f = f.bind(FieldContext(key='f', value=v))

    formatter = formatter_for_field(f, 'default')
    verifyObject(IFormatter, formatter)

    s = formatter.format(v)
    print ' -- format:default %s -- ' % (type(f))
    print s
def test_field_datetime():

    f = schemata.IFooMetadata.get("created")

    v = datetime.datetime.now()

    f.validate(v)
    f = f.bind(FieldContext(key="f", value=v))

    formatter = formatter_for_field(f, "default")
    verifyObject(IFormatter, formatter)

    s = formatter.format(v)
    print " -- format:default %s -- " % (type(f))
    print s

    assert formatter.format(v) == v.isoformat()
    assert formatter.format() == v.isoformat()
def test_field_datetime():

    f = schemata.IFooMetadata.get('created')

    v = datetime.datetime.now()

    f.validate(v)
    f = f.bind(FieldContext(key='f', value=v))

    formatter = formatter_for_field(f, 'default')
    verifyObject(IFormatter, formatter)

    s = formatter.format(v)
    print ' -- format:default %s -- ' % (type(f))
    print s

    assert formatter.format(v) == v.isoformat()
    assert formatter.format() == v.isoformat()
Exemplo n.º 10
0
    def _format(self, obj, opts):
        '''Format the object according to our named format.
        
        If possible, all contained fields will be formatted under the same 
        format, and will be passed the same options.
        '''

        # Note We want to pass a 'quote' option to all our fields (this will be
        # interpreted by the field formatter itself). If not allready set, we
        # need to create a copy of opts, in order not to break our caller's
        # formatting (sharing the same opts dict).

        if not opts.get('quote'):
            opts = copy.copy(opts)
            opts['quote'] = True

        name = self.requested_name
        argv = list()
        for k, field in obj.iter_fields():
            v = field.get(obj)
            if v is None:
                continue
            # Find a proper formatter for field
            fo = formatter_for_field(field, name)
            if fo:
                fo_opts = opts
                fo_conf = formatters.config_for_field(field, name)
                if fo_conf and 'extra-opts' in fo_conf:
                    fo_opts = copy.copy(fo_opts)
                    fo_opts.update(fo_conf.get('extra-opts'))
                v = fo.format(v, opts=fo_opts)
            else:
                v = format(v)
            argv.append((k, v))

        args = ' '.join(map(lambda t: '%s=%s' % t, argv))
        s = '<%s %s>' % (type(obj).__name__, args)
        return s
def test_field_choice():

    f = schemata.IFooMetadata.get("thematic_category")

    v = "health"
    f.validate(v)
    f = f.bind(FieldContext(key="f", value=v))

    formatter = formatter_for_field(f, "default")
    verifyObject(IFormatter, formatter)

    s = formatter.format(v)
    print " -- format:default %s -- " % (type(f))
    print s

    assert formatter.format(v) == u"Health"
    assert formatter.format() == u"Health"

    try:
        formatter.format("not-a-term")
    except ValueError:
        pass
    else:
        assert False, "The formatter should fail"
def test_field_choice():

    f = schemata.IFooMetadata.get('thematic_category')

    v = 'health'
    f.validate(v)
    f = f.bind(FieldContext(key='f', value=v))

    formatter = formatter_for_field(f, 'default')
    verifyObject(IFormatter, formatter)

    s = formatter.format(v)
    print ' -- format:default %s -- ' % (type(f))
    print s

    assert formatter.format(v) == u'Health'
    assert formatter.format() == u'Health'

    try:
        formatter.format('not-a-term')
    except ValueError:
        pass
    else:
        assert False, 'The formatter should fail'