Exemple #1
0
 def get_storages(_):
     
     def get_storage(field):
         
         def set_storage(storage):
             self.fields_storages[field.name] = storage
             return defer.succeed(storage)
         
         d = self.storageFactory.get(field.type)
         d.addCallback(set_storage)
         return d
     
     fields = filter(lambda field: IEntity.providedBy(field.type), self.entity.fields())
     dlist = map(lambda field: get_storage(field), fields)
     return defer.DeferredList(dlist, fireOnOneErrback = True)
Exemple #2
0
 def __init__(self, entity, factory):
     self.entity = IEntity(entity)
     self.factory = Factory(self.entity)
     self.storageFactory = interface.IStorageFactory(factory)
     self.unpacker = EntityUnpacker(self.entity)
     self.id_cache = {}
     self.id_map = {}
     self.index_map = {}
     self.fields_storages = {}
     self.fields_unpackers = {}
     for field in filter(lambda field: IEntity.providedBy(field.type), self.entity.fields()):
         self.fields_unpackers[field.name] = EntityUnpacker(field.type)
     for field in self.entity.indexed_fields():
         self.index_map[field.name] = {}
     self.initialized = False
     self.initd = None
Exemple #3
0
 def complete(optional):
         
     fields = filter(lambda field: IEntity.providedBy(field.type), self.entity.optional_fields())
         
     if len(fields):
             
         def complete(results):
             for (field, (success, value)) in map(lambda field, result: (field, result), fields, results):
                 if not success:
                     return defer.fail(value)
                 optional[field.name] = value
             return defer.succeed(optional)
             
         dlist = map(lambda field: self.fields_unpackers[field.name].unpack_identity(optional[field.name]), fields)
         d = defer.DeferredList(dlist, consumeErrors = True)
         d.addCallback(complete)
         return d
             
     else:
         return defer.succeed(optional)