コード例 #1
0
def paginateColl(start=0, length=settings.REST_FRAMEWORK['PAGE_SIZE']):
    print('paginate coll', start, length)
    documents = db.list_collection_names()
    nrecordsTotal = len(documents)
    nrecords = len(documents)
    documents = documents[start:start + length]

    resp = {
        'recordsTotal': nrecordsTotal,
        'recordsFiltered': nrecords,
        'start': start,
        'length': len(documents),
        'data': to_json(documents)
    }
    return resp
コード例 #2
0
    def retrieve(self, request, dbcollection, pk=None, format=None):
        try:
            print ('EntityViewSet Retrieve: ' , request.user, request, self.kwargs, dbcollection)
            if request.user.is_superuser:
                doc = db[dbcollection].find_one( {'_id': ObjectId(pk)} )
            else:
                print ('use filter on access_w')
                doc = db[dbcollection].find_one( {'_id': ObjectId(pk), 'access_w': {'$exists': True, '$in': request.user['heritage']['w']} } )
            if doc:
                return Response(to_json(doc), status=status.HTTP_200_OK)
            else:
                return Response(status=status.HTTP_404_NOT_FOUND)

        except Exception as e:
            print ('EntityViewSet retrieve error: ', e)
            return Response(status=status.HTTP_400_BAD_REQUEST)
コード例 #3
0
    def create(self, request, dbcollection):
        try:
            print (request.data)
            print ('EntityViewSet: ' , request.user, request, self.kwargs, dbcollection)
            collection = request.data[dbcollection]

            entity_id = db[dbcollection].insert_one( request.data ).inserted_id
            if entity_id == None:
                raise ('Error in insert creating entity of type ', self.kwargs['dbcollection'] )
            print (entity_id)
            doc = db[dbcollection].find_one({'_id': entity_id})


            return Response(to_json(doc), status=status.HTTP_201_CREATED)
        except Exception as e:
            print ('EntityViewSet error: ', e)
            return Response(status=status.HTTP_400_BAD_REQUEST)
コード例 #4
0
    def findOne(self, request, pk=None, format=None):
        try:
            print('CollectionViewSet findOne: ', request.user, request)

            doc = db[pk].find_one()
            if doc:
                return Response(to_json(doc), status=status.HTTP_200_OK)
            else:
                return Response([], status=status.HTTP_404_NOT_FOUND)

        except Exception as e:
            print('CollectionViewSet findOne error: ', e)
            resp = ResponseSerializer(data={
                'success': False,
                'errorCode': 'Bad request'
            })
            resp.is_valid()
            return Response(resp.data, status=status.HTTP_400_BAD_REQUEST)
コード例 #5
0
 def autocomplete(self, request, dbcollection):
     try:
         print (request.query_params)
         fieldFilter = request.query_params.get('field')
         queryString = request.query_params.get('q')
         search = '(.*)' + queryString.strip() + '(.*)'
         search = search.replace(' ', '(.*)')
         regex = re.compile(search, re.IGNORECASE)
         if request.user.is_superuser:
             doc = db[dbcollection].find({fieldFilter:{"$regex":regex,"$options": 'ix'} }).limit(10)
         else:
             user = db.user.find_one({'_id': request.user.username})
             print ('use filter on access_w')
             doc = db[dbcollection].find({fieldFilter:{"$regex":regex, "$options": 'ix'}, 'access_w': {'$exists': True, '$in': user['heritage']['w']} }).limit(10)
         
         if doc:
             return Response(to_json(doc), status=status.HTTP_200_OK)
         else:
             return Response(status=status.HTTP_404_NOT_FOUND)
     except Exception as e:
         print ('Autocomplete error:', e)
         return Response(status=status.HTTP_400_BAD_REQUEST)