Files
2019-09-09 15:21:22 +07:00

47 lines
1.6 KiB
Python

from rest_framework import generics, mixins
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated, IsAdminUser
from rest_framework import serializers
from rest_framework import filters
from djqscsv import render_to_csv_response, write_csv
from api.models import Summaries
from core import utils
from core import dbutils
from core import common
class ExportsSerializer(serializers.Serializer):
workspace = serializers.CharField(required=True)
filename = serializers.CharField(allow_blank=True, default=False)
class ExportSumView(APIView):
serializer_class = ExportsSerializer
permission_classes = (IsAuthenticated, IsAdminUser)
def get_queryset(self, workspace):
queryset = Summaries.objects.all()
# workspace = self.request.query_params.get('workspace', None)
if workspace is not None:
queryset = queryset.filter(workspace=workspace)
return queryset
def post(self, request, *args, **kwargs):
serializer = ExportsSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
data = serializer.data
workspace = data.get('workspace')
filename = data.get('filename')
qs = self.get_queryset(workspace)
if filename == 'False' or not filename:
return render_to_csv_response(qs)
else:
filename = utils.clean_path(filename)
with open(filename, 'wb') as csv_file:
write_csv(qs, csv_file)
return common.message(200, filename)