def api_getlist(request, endpoint): """ Method name is now misleading as inserts and updates can now be performed. Variable 'recordsTotal' handled by api_getcount(). :param request: :param endpoint: Django model name (case sensitive) :return: """ model = endpoint return_as = request.GET.get('return_as', 'json') if request.method == 'GET': model_serializer = GetData(request, model) """ if not model_serializer.verify_user(): return JSONResponse( { "response": 403, "msg": "Permission denied" } ) """ objects, fatal_error = model_serializer.get_objects() if not fatal_error: serialized = model_serializer.serialize_model()(objects, many=True, context={ 'request': request }) response = model_serializer.response(serialized) else: response = { 'data': 0, 'recordsTotal': 0, 'recordsFiltered': 0, 'recordsDisplayed': 0, 'draw': 0, 'error': fatal_error } if return_as == 'csv': filename = "Download" renderer = CSVStreamingRenderer() response = StreamingHttpResponse(renderer.render( response.get('data')), content_type='text/csv') response[ 'Content-Disposition'] = 'attachment; filename="{0}.csv"'.format( filename) return response else: return JSONResponse(response) elif request.method == 'PUT': model_serializer = PutObject(request, model) if not model_serializer.verify_user(): return JSONResponse({"response": 403, "msg": "Permission denied"}) try: model_serializer.get_object(request.data.get('id')) except: return JSONResponse({ "response": 400, "msg": "Requested object was not found" }) serializer = model_serializer.serialize_model()( model_serializer.object, data=request.data, partial=True) if serializer.is_valid(): serializer.save() return JSONResponse({ "response": 200, "msg": "{0} object saved".format(endpoint) }) return JSONResponse({ "response": 400, "errors": serializer.errors, "msg": "{0} object was not saved".format(endpoint) }) elif request.method == 'POST': model_serializer = PostObject(request, model) if not model_serializer.verify_user(): return JSONResponse({"response": 403, "msg": "Permission denied"}) serializer = model_serializer.serialize_model()(data=request.data) if serializer.is_valid(): serializer.save() return JSONResponse({ "response": 200, "msg": "{0} object created".format(endpoint) }) return JSONResponse({ "response": 400, "errors": serializer.errors, "msg": "{0} object was not created".format(endpoint) })