Exemplo n.º 1
0
def new(cls, *args, **kwargs):
    """Create a new object."""
    if not issubclass(cls, ComplexType):
        raise TypeError, "Do not know how to construct %s" % cls
    schema = get_xml_schema()
    element = compat.find(schema, '{%s}element[@type="%s"]' % (_ns_xml_schema, cls.__name__))
    if element is not None:
        factory = getattr(_schema, element.attrib["name"])
    else:
        factory = cls
    obj = factory(*args, **kwargs)
    return obj
Exemplo n.º 2
0
                return False
        return True


get_xml_schema()
module = globals()

for sym in dir(_schema):
    cls = getattr(_schema, sym)
    if not isinstance(cls, type) or not issubclass(cls, ComplexType):
        continue
    name = cls.__name__
    bases = (cls,)
    members = {}
    if cls in (BaseResource, BaseResources):
        continue
    elif issubclass(cls, BaseResources):
        bases += (CollectionMixin,)
        element = compat.find(
            _xml_schema, '{%s}complexType[@name="%s"]//{%s}element' % (_ns_xml_schema, name, _ns_xml_schema)
        )
        if element is None:
            continue
        members["_resource"] = element.attrib["ref"]
        mixin = CollectionMixin
    elif issubclass(cls, BaseResource):
        bases += (ResourceMixin,)
    derived = type(name, bases, members)
    cls._SetSupersedingClass(derived)
    module[name] = derived