def check_model(model): if model is None: raise http.NotFoundError() if IReference.providedBy(model): return process_reference(model) if model.reference is not None: return process_reference(model.reference) return model
def _wrap_source(self, source, view, model_factory): if source is None: return source if IReference.providedBy(source): return source if IModel.providedBy(source): return self._init_model(source, view) if not IModelFactory.providedBy(model_factory): if callable(model_factory): ctx = self.model.make_context(key=self.name, view=view) d = model_factory(source, ctx) d.addCallback(self._got_model_factory, source, view) return d return self._got_model_factory(model_factory, source, view)
def render_value(value, context): if IReference.providedBy(value): return value.resolve(context) return value
def process_reference(reference): reference = IReference(reference) context = self.make_context(request, remaining[1:]) address = reference.resolve(context) raise http.MovedPermanently(location=address)