Beispiel #1
0
    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)
Beispiel #2
0
    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
Beispiel #3
0
    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))
Beispiel #4
0
    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)
Beispiel #5
0
def get_fields(clz):
    fields = clz._meta.get_all_field_names()
    fields.remove("context")
    fields.remove("id")
    return fields