def get_search(self, request, **kwargs): self.method_check(request, allowed=['get']) self.is_authenticated(request) self.throttle_check(request) q = '' if 'q' in request.GET and request.GET['q']: q = request.GET['q'] # Do the query. fields = \ [f.name+'__contains' for f in SubmittedMeasurement._meta.fields] fields2 = [f.name+'__contains' for f in Fields._meta.fields] fields2.remove('measure__contains') fields.remove('user__contains') queries = [Q(**{f: q}) for f in fields] queries2 = [Q(**{f: q}) for f in fields2] qs = reduce(operator.or_, queries) qs2 = reduce(operator.or_, queries2) sqs2 = Fields.objects.values_list('measure', flat=True).filter(qs2) sqs = super(MeasuresResource, self).get_object_list( request).filter((Q(qs) | Q(id__in=sqs2)) & Q(user=request.user.pk)) objects = [] for result in sqs: bundle = self.build_bundle(obj=result, request=request) bundle = self.full_dehydrate(bundle) objects.append(bundle) object_list = { 'objects': objects, } self.log_throttled_access(request) return self.create_response(request, object_list)
def alter_list_data_to_serialize(self, request, data): fields = self._meta.fields[:] for index, field in enumerate(fields): if field == 'id': fields.remove('id') fields[index] = field.replace('__name', '') data = { 'metaData': {'sorting': 'name'}, 'columns': self.set_columns(request, fields), 'rows': data['objects'], } return data
def obj_get_list(self, bundle, **kwargs): request_fields = bundle.request.GET.getlist('fields') for field in request_fields: if field not in self.fields: raise BadRequest('{0} is not a valid field'.format(field)) params = bundle.request.GET param = lambda p: params.get(p, None) fields = list(self.fields) fields.remove('id') fields.append('_id') fn = MOCK_BULK_USER_ES or user_es_call users = fn( domain=kwargs['domain'], q=param('q'), fields=fields, size=param('limit'), start_at=param('offset'), ) return list(map(self.to_obj, users))
def obj_get_list(self, bundle, **kwargs): request_fields = bundle.request.GET.getlist('fields') for field in request_fields: if field not in self.fields: raise BadRequest('{0} is not a valid field'.format(field)) params = bundle.request.GET param = lambda p: params.get(p, None) fields = self.fields.keys() fields.remove('id') fields.append('_id') fn = MOCK_BULK_USER_ES or user_es_call users = fn( domain=kwargs['domain'], q=param('q'), fields=fields, size=param('limit'), start_at=param('offset'), ) return map(self.to_obj, users)
def get_fields(clz): fields = clz._meta.get_all_field_names() fields.remove("context") fields.remove("id") return fields