Add get record count swagger generate logic 65/29465/2
authorfujinhua <fu.jinhua@zte.com.cn>
Mon, 29 Jan 2018 07:58:31 +0000 (15:58 +0800)
committerfujinhua <fu.jinhua@zte.com.cn>
Mon, 29 Jan 2018 08:09:17 +0000 (16:09 +0800)
Change-Id: I4e947e3d401416e1d3335ee0f3d0e51028335dc2
Issue-ID: VFC-687
Signed-off-by: fujinhua <fu.jinhua@zte.com.cn>
lcm/samples/views.py

index 2d93de1..06d82d0 100644 (file)
@@ -22,6 +22,8 @@ from drf_yasg.utils import swagger_auto_schema
 
 from lcm.pub.database import models
 
+from lcm.samples.serializers import RecordCountSerializer
+
 logger = logging.getLogger(__name__)
 
 
@@ -62,13 +64,24 @@ class TablesList(APIView):
             return Response(data={"error": "failed"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
         return Response(data={}, status=status.HTTP_204_NO_CONTENT)
 
+    @swagger_auto_schema(
+        request_body=None,
+        responses={
+            status.HTTP_200_OK: RecordCountSerializer(),
+            status.HTTP_500_INTERNAL_SERVER_ERROR: "Inner error"
+        }
+    )
     def get(self, request, modelName):
         logger.debug("Get model %s", modelName)
         count = 0
         try:
             model_obj = eval("models.%s.objects" % modelName)
             count = len(model_obj.filter())
-        except:
+            resp_serializer = RecordCountSerializer(data={"count": count})
+            if not resp_serializer.is_valid():
+                raise Exception(resp_serializer.errors)
+            return Response(data=resp_serializer.data, status=status.HTTP_200_OK)
+        except Exception as e:
+            logger.error(e.message)
             logger.error(traceback.format_exc())
-            return Response(data={"error": "failed"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
-        return Response(data={"count": count}, status=status.HTTP_200_OK)
+            return Response(data={"error": e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)