def get(self, request, response, _appname, _modelname): """Return a HAL formatted version of the instance list. """ root = get_slumber_root() hal = Builder(self()) hal.add_link('model', root + self.model.path) query = self.model.model.objects hal_instance_list(self, request.GET, hal, query) response["instances"] = hal.as_object() response.root = 'instances'
def hal_instance_list(operation, control, builder, query_set, page_size=10): """Return a page of JSON-HAL based results across the query set. """ from slumber import data_link starter = control.get('lpk', None) if starter: query_set = query_set.filter(pk__lt=starter) lpk = None for instance in query_set.order_by('-pk').iterator(): if page_size == 0: builder.add_link('next', operation(lpk=lpk)) return else: page_size -= 1 lpk = instance.pk item = Builder(data_link(instance)) item.set_property('display', unicode(instance)) builder.embed('page', item)