def on_get(self, req, resp, rid, related): """ Find the related model & serialize it back If the parent resource of the related model doesn't exist then abort on a 404. """ signals.pre_req.send(self.model) signals.pre_req_find.send(self.model) if not hasattr(self.model, related): abort(InvalidURL(**{ 'detail': 'The "%s" resource does not have a related ' 'resource named "%s". This is an error, check ' 'your spelling & retry.' % (self.rtype, related) })) model = find(self.model, rid) try: model_related = getattr(model, related).load() except AttributeError: model_related = None if isinstance(model_related, list): props = to_rest_models(model_related, includes=req.includes) elif model: props = to_rest_model(model_related, includes=req.includes) else: props = model_related resp.serialize(props) signals.post_req.send(self.model) signals.post_req_find.send(self.model)
def on_get(resc, req, resp): """ Get the models identified by query parameters We return an empty list if no models are found. """ signals.pre_req.send(resc.model) signals.pre_req_search.send(resc.model) models = goldman.sess.store.search(resc.rtype, **{ 'filters': req.filters, 'pages': req.pages, 'sorts': req.sorts, }) props = to_rest_models(models, includes=req.includes) resp.serialize(props) signals.post_req.send(resc.model) signals.post_req_search.send(resc.model)