예제 #1
0
파일: common.py 프로젝트: f3at/feat
    def _model_tree_iteration(self, model, visited, context):
        model = IModel(model)
        if model in visited:
            self.log('Skiping already validated model: %r', model)
            return
        visited.append(model)
        yield self._validate_model(model, context)

        if IQueryModel.providedBy(model):
            querymodel = yield model.query_items(offset=0, limit=10)
            items = yield querymodel.fetch_items()
        else:
            try:
                items = yield model.fetch_items()
            except NotSupported:
                self.info('Not iteration further down the model %r because '
                          'it doesnt support fetching items', model)
                return
        for item in items:
            try:
                submodel = yield item.fetch()
            except Unauthorized:
                continue
            if IModel.providedBy(submodel):
                subcontext = context.descend(submodel)
                yield self._model_tree_iteration(submodel, visited, subcontext)
예제 #2
0
파일: common.py 프로젝트: sylane/feat
    def _model_tree_iteration(self, model, visited, context):
        model = IModel(model)
        if model in visited:
            self.log('Skiping already validated model: %r', model)
            return
        visited.append(model)
        yield self._validate_model(model, context)

        items = yield model.fetch_items()
        for item in items:
            submodel = yield item.fetch()
            if IModel.providedBy(submodel):
                subcontext = context.descend(submodel)
                yield self._model_tree_iteration(submodel, visited, subcontext)