本文整理汇总了Python中zope.interface.provided_by函数的典型用法代码示例。如果您正苦于以下问题:Python provided_by函数的具体用法?Python provided_by怎么用?Python provided_by使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了provided_by函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: resource_to_url
def resource_to_url(self, resource, **kw):
if ICollectionResource in provided_by(resource):
query = {}
query.update(kw)
if not resource.filter is None:
query['q'] = \
UrlPartsConverter.make_filter_string(resource.filter)
if not resource.order is None:
query['sort'] = \
UrlPartsConverter.make_order_string(resource.order)
if not resource.slice is None:
query['start'], query['size'] = \
UrlPartsConverter.make_slice_strings(resource.slice)
if query != {}:
url = model_url(resource, self.__request, query=query)
else:
url = model_url(resource, self.__request)
elif not IMemberResource in provided_by(resource):
raise ValueError('Can not convert non-resource object "%s to '
'URL".' % resource)
else:
if resource.__parent__ is None:
raise ValueError('Can not generate URL for floating member '
'"%s".' % resource)
url = model_url(resource, self.__request)
return unquote(url)
开发者ID:BigData-Tools,项目名称:everest,代码行数:26,代码来源:url.py
示例2: url_to_resource
def url_to_resource(self, url):
"""
Returns the resource that is addressed by the given URL.
:param str url: URL to convert
:return: member or collection resource
:note: If the query string in the URL has multiple values for a
query parameter, the last definition in the query string wins.
"""
parsed = urlparse.urlparse(url)
parsed_path = parsed.path # namedtupble problem pylint: disable=E1101
rc = find_resource(self.__request.root, traversal_path(parsed_path))
if ICollectionResource in provided_by(rc):
# In case we found a collection, we have to filter, order, slice.
parsed_query = parsed.query # namedtuple problem pylint: disable=E1101
params = dict(parse_qsl(parsed_query))
filter_string = params.get('q')
if not filter_string is None:
rc.filter = \
UrlPartsConverter.make_filter_specification(filter_string)
order_string = params.get('sort')
if not order_string is None:
rc.order = \
UrlPartsConverter.make_order_specification(order_string)
start_string = params.get('start')
size_string = params.get('size')
if not (start_string is None or size_string is None):
rc.slice = \
UrlPartsConverter.make_slice_key(start_string, size_string)
elif not IMemberResource in provided_by(rc):
raise ValueError('Traversal found non-resource object "%s".' % rc)
return rc
开发者ID:b8va,项目名称:everest,代码行数:33,代码来源:url.py
示例3: get_nested
def get_nested(self, attr):
# We only allow *one* child with the given name.
q_tag = self.__get_q_tag(attr)
child_it = self.iterchildren(q_tag)
try:
child = child_it.next()
except StopIteration:
child = None
else:
try:
child_it.next()
except StopIteration:
pass
else:
# This should never happen.
raise ValueError('More than one child for member '
'attribute "%s" found.' % attr) # pragma: no cover
# Link handling: look for wrapper tag with *one* link child.
if child.countchildren() == 1:
grand_child = child.getchildren()[0]
if ILinkedDataElement in provided_by(grand_child):
# We inject the id attribute from the wrapper element.
str_xml = child.get('id')
if not str_xml is None:
grand_child.set('id', str_xml)
child = grand_child
return child
开发者ID:BigData-Tools,项目名称:everest,代码行数:27,代码来源:xml.py
示例4: __init__
def __init__(self, data_element):
if ILinkedDataElement in provided_by(data_element):
raise ValueError('Do not use data element proxies with linked '
'data elements.')
attrs = data_element.mapping.attribute_iterator()
self.__attr_map = dict([(attr.repr_name, attr) for attr in attrs])
self.__data_element = data_element
开发者ID:BigData-Tools,项目名称:everest,代码行数:7,代码来源:dataelements.py
示例5: create_mapping
def create_mapping(self, mapped_class, configuration=None):
"""
Creates a new mapping for the given mapped class and representer
configuration.
:param configuration: configuration for the new data element class.
:type configuration: :class:`RepresenterConfiguration`
:returns: newly created instance of :class:`Mapping`
"""
cfg = self.__configuration.copy()
if not configuration is None:
cfg.update(configuration)
provided_ifcs = provided_by(object.__new__(mapped_class))
if IMemberResource in provided_ifcs:
base_data_element_class = self.member_data_element_base_class
elif ICollectionResource in provided_ifcs:
base_data_element_class = self.collection_data_element_base_class
elif IResourceLink in provided_ifcs:
base_data_element_class = self.linked_data_element_base_class
else:
raise ValueError('Mapped class for data element class does not '
'implement one of the required interfaces.')
name = "%s%s" % (mapped_class.__name__,
base_data_element_class.__name__)
de_cls = type(name, (base_data_element_class,), {})
mp = self.mapping_class(self, mapped_class, de_cls, cfg)
# Set the data element class' mapping.
# FIXME: This looks like a hack.
de_cls.mapping = mp
return mp
开发者ID:b8va,项目名称:everest,代码行数:30,代码来源:mapping.py
示例6: provides_collection_resource
def provides_collection_resource(obj):
"""
Checks if the given type or instance provides the
:class:`everest.resources.interfaces.ICollectionResource` interface.
"""
if isinstance(obj, type):
obj = object.__new__(obj)
return ICollectionResource in provided_by(obj)
开发者ID:BigData-Tools,项目名称:everest,代码行数:8,代码来源:utils.py
示例7: resource_to_url
def resource_to_url(self, resource, quote=False):
"""
Returns the URL for the given resource.
:param resource: Resource to create a URL for.
:param bool quote: If set, the URL returned will be quoted.
:raises ValueError: If the given resource is floating (i.e., has
the parent attribute set to `None`)
"""
ifc = provided_by(resource)
if not IResource in ifc:
raise TypeError('Can not generate URL for non-resource "%s".'
% resource)
elif resource.__parent__ is None:
raise ValueError('Can not generate URL for floating resource '
'"%s".' % resource)
if ICollectionResource in ifc:
query = {}
if not resource.filter is None:
query['q'] = \
UrlPartsConverter.make_filter_string(resource.filter)
if not resource.order is None:
query['sort'] = \
UrlPartsConverter.make_order_string(resource.order)
if not resource.slice is None:
query['start'], query['size'] = \
UrlPartsConverter.make_slice_strings(resource.slice)
if query != {}:
options = dict(query=query)
else:
options = dict()
if not resource.is_root_collection:
# For nested collections, we check if the referenced root
# collection is exposed (i.e., has the service as parent).
# If yes, we return an absolute URL, else a nested URL.
root_coll = get_root_collection(resource)
if not root_coll.has_parent:
url = self.__request.resource_url(resource, **options)
else:
url = self.__request.resource_url(root_coll, **options)
else:
url = self.__request.resource_url(resource, **options)
else:
if not resource.is_root_member:
# For nested members, we check if the referenced root
# collection is exposed (i.e., has the service as parent).
# If yes, we return an absolute URL, else a nested URL.
root_coll = get_root_collection(resource)
if not root_coll.has_parent:
par_url = self.__request.resource_url(resource)
else:
par_url = self.__request.resource_url(root_coll)
url = "%s%s/" % (par_url, resource.__name__)
else:
url = self.__request.resource_url(resource)
if not quote:
url = url_unquote(url)
return url
开发者ID:b8va,项目名称:everest,代码行数:58,代码来源:url.py
示例8: _dispatch
def _dispatch(self, attr_key, attr, node, parent_data, visitor):
ifcs = provided_by(node)
if IMemberResource in ifcs:
self._traverse_member(attr_key, attr, node, parent_data, visitor)
elif ICollectionResource in ifcs:
self._traverse_collection(attr_key, attr, node, parent_data,
visitor)
else:
raise ValueError('Data must be a resource.')
开发者ID:BigData-Tools,项目名称:everest,代码行数:9,代码来源:traversal.py
示例9: __getattr__
def __getattr__(self, name):
value = self.__data_element.get_attribute(name)
ifcs = provided_by(value)
if IMemberDataElement in ifcs:
value = DataElementAttributeProxy(value)
elif ICollectionDataElement in ifcs:
value = [DataElementAttributeProxy(mb_el)
for mb_el in value.get_members()]
return value
开发者ID:fogathmann,项目名称:everest-thelma,代码行数:9,代码来源:dataelements.py
示例10: __check_for_link
def __check_for_link(self, child):
# Link handling: look for wrapper tag with *one* link child.
if child.countchildren() == 1:
grand_child = child.getchildren()[0]
if ILinkedDataElement in provided_by(grand_child):
# # We inject the id attribute from the wrapper element.
# str_xml = child.get('id')
# if not str_xml is None:
# grand_child.set('id', str_xml)
child = grand_child
return child
开发者ID:b8va,项目名称:everest,代码行数:11,代码来源:xml.py
示例11: register
def register(cls, value_type, converter_class):
if cls.__converters is None: # Lazy initialization.
cls.__converters = {}
if value_type in cls.__converters:
raise ValueError('For %s, a converter has already been '
'registered (%s).'
% (value_type, cls.__converters[value_type]))
if not IRepresentationConverter in provided_by(converter_class):
raise ValueError('Converter class must provide '
'IRepresenterConverter.')
cls.__converters[value_type] = converter_class
开发者ID:BigData-Tools,项目名称:everest,代码行数:11,代码来源:converters.py
示例12: _dispatch
def _dispatch(self, attr_key, attr, node, parent_data, visitor):
ifcs = provided_by(node)
if IMemberResource in ifcs:
self._traverse_member(attr_key, attr, node, parent_data, visitor)
elif ICollectionResource in ifcs:
self._traverse_collection(attr_key, attr, node, parent_data,
visitor)
else:
raise ValueError('Can only traverse objects that provide'
'IMemberResource or ICollectionResource '
'(key: %s).' % str(attr_key))
开发者ID:b8va,项目名称:everest,代码行数:11,代码来源:traversal.py
示例13: as_repository
def as_repository(resource):
"""
Adapts the given registered resource to its configured repository.
:return: object implementing
:class:`everest.repositories.interfaces.IRepository`.
"""
reg = get_current_registry()
if IInterface in provided_by(resource):
resource = reg.getUtility(resource, name='collection-class')
return reg.getAdapter(resource, IRepository)
开发者ID:b8va,项目名称:everest,代码行数:11,代码来源:utils.py
示例14: __init__
def __init__(self, attr_type, entity_attr=None,
cardinality=None, is_nested=False):
"""
:param bool is_nested: indicates if the URLs generated for this
relation descriptor should be relative to the parent ("nested")
or absolute.
"""
if not (isinstance(attr_type, type)
or IInterface in provided_by(attr_type)):
raise ValueError('The attribute type of a member or collection '
' attribute must be a class or an interface.')
attribute_base.__init__(self, attr_type, entity_attr, cardinality)
self.is_nested = is_nested
开发者ID:BigData-Tools,项目名称:everest,代码行数:13,代码来源:descriptors.py
示例15: _data_callback
def _data_callback(cls, value, options):
# Set the default for the report directory.
if options.report_directory is None:
options.report_directory = os.path.dirname(value)
coll_cls = get_collection_class(cls.registration_resource)
rpr = as_representer(object.__new__(coll_cls), JsonMime)
reg_items = rpr.from_stream(open(value, 'rU'))
# FIXME: This should be treated properly in everest.
if IMemberResource in provided_by(reg_items):
ents = [reg_items.get_entity()]
else:
ents = [rc.get_entity() for rc in reg_items]
return ents
开发者ID:helixyte,项目名称:TheLMA,代码行数:13,代码来源:shell.py
示例16: __dump
def __dump(data_el, stream, offset):
name = data_el.__class__.__name__
stream.write("%s%s" % (' ' * offset, name))
offset += 2
ifcs = provided_by(data_el)
if ICollectionDataElement in ifcs:
stream.write("[")
first_member = True
for member_data_el in data_el.get_members():
if first_member:
stream.write('%s' % os.linesep + ' ' * offset)
first_member = False
else:
stream.write(',%s' % os.linesep + ' ' * offset)
__dump(member_data_el, stream, offset)
stream.write("]")
else:
stream.write("(")
if ILinkedDataElement in ifcs:
stream.write("url=%s, kind=%s, relation=%s" %
(data_el.get_url(), data_el.get_kind(),
data_el.get_relation()))
else:
first_attr = True
for attr_name, attr_value in iteritems_(data_el.data):
if first_attr:
first_attr = False
else:
stream.write(',%s' % os.linesep
+ ' ' * (offset + len(name) + 1))
if attr_value is None:
continue
if not IResourceDataElement in provided_by(attr_value):
stream.write("%s=%s" % (attr_name, attr_value))
else:
stream.write("%s=" % attr_name)
__dump(attr_value, stream, offset)
stream.write(')')
开发者ID:b8va,项目名称:everest,代码行数:38,代码来源:utils.py
示例17: register
def register(cls, mime_type):
if not [ifc for ifc in provided_by(mime_type)
if issubclass(ifc, IMime)]:
raise ValueError('MIME type to register must implement the '
'IMime interface.')
if mime_type.mime_type_string in cls.__type_string_map:
raise ValueError('Duplicate MIME string detected.')
if mime_type.representer_name in cls.__rpr_name_map:
raise ValueError('Duplicate MIME name detected.')
if mime_type.file_extension in cls.__file_extension_map:
raise ValueError('Duplicate file extension detected.')
cls.__type_string_map[mime_type.mime_type_string] = mime_type
cls.__rpr_name_map[mime_type.representer_name] = mime_type
cls.__file_extension_map[mime_type.file_extension] = mime_type
开发者ID:b8va,项目名称:everest,代码行数:14,代码来源:mime.py
示例18: get_member_class
def get_member_class(resource):
"""
Returns the registered member class for the given resource.
:param resource: registered resource
:type resource: class implementing or instance providing or subclass of
a registered resource interface.
"""
reg = get_current_registry()
if IInterface in provided_by(resource):
member_class = reg.getUtility(resource, name='member-class')
else:
member_class = reg.getAdapter(resource, IMemberResource,
name='member-class')
return member_class
开发者ID:BigData-Tools,项目名称:everest,代码行数:15,代码来源:utils.py
示例19: __init__
def __init__(self, attr_type, entity_attr=None, cardinality=None,
cascade=DEFAULT_CASCADE, backref=None):
if not (isinstance(attr_type, type)
or IInterface in provided_by(attr_type)):
raise ValueError('The attribute type of a member or collection '
' attribute must be a class or an interface.')
if entity_attr is None and backref is None:
raise ValueError('Either the entity_attr or the backref parameter '
'to a relation resource attribute may be None, '
'but not both.')
attribute_base.__init__(self, attr_type, entity_attr)
self.cardinality = cardinality
self.cascade = cascade
self.resource_backref = backref
self.__entity_backref = None
开发者ID:b8va,项目名称:everest,代码行数:15,代码来源:descriptors.py
示例20: get_entity_class
def get_entity_class(resource):
"""
Returns the entity class registered for the given registered resource.
:param resource: registered resource
:type collection: class implementing or instance providing a registered
resource interface.
:return: entity class
(class implementing `everest.entities.interfaces.IEntity`)
"""
reg = get_current_registry()
if IInterface in provided_by(resource):
ent_cls = reg.getUtility(resource, name='entity-class')
else:
ent_cls = reg.getAdapter(resource, IEntity, name='entity-class')
return ent_cls
开发者ID:BigData-Tools,项目名称:everest,代码行数:16,代码来源:utils.py
注:本文中的zope.interface.provided_by函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论