first commit
This commit is contained in:
commit
3e4574dcdd
163 files changed
+3559
No files matched your search
@@ -0,0 +1,89 @@
|
||||
from io import BytesIO
|
||||
|
||||
from django.http import HttpResponse
|
||||
from django.shortcuts import render
|
||||
from rest_framework.views import APIView
|
||||
from apps.projectcode.selector import project_code_head_list, project_code_list, project_code_validation
|
||||
from apps.projectcode.services import create_project_code
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import serializers
|
||||
from apps.projectcode.models import ProjectCodeHead as ProjectCodeHeadModel, ProjectCode as ProjectCodeModel
|
||||
from rest_framework import status
|
||||
import pandas as pd
|
||||
# Create your views here.
|
||||
|
||||
|
||||
class ProjectCodeExcelExportView(APIView):
|
||||
#permission_classes = (IsAuthenticated,)
|
||||
|
||||
def get(self, request, id: int):
|
||||
# export to excel and send excel file to response
|
||||
|
||||
project_code = project_code_list(id=id, is_used='false')
|
||||
|
||||
excel_file = BytesIO()
|
||||
order_df = pd.DataFrame(project_code.values('id', 'code','is_used'))
|
||||
|
||||
order_df.to_excel(excel_file, engine='xlsxwriter', index=False)
|
||||
excel_file.seek(0)
|
||||
|
||||
response = HttpResponse(excel_file.read(), content_type='application/ms-excel')
|
||||
response['Content-Disposition'] = 'attachment; filename="output.xlsx"'
|
||||
return response
|
||||
|
||||
|
||||
|
||||
class ProjectCodeValidationView(APIView):
|
||||
permission_classes = (IsAuthenticated,)
|
||||
|
||||
def get(self, request, code):
|
||||
project_code = project_code_validation(code)
|
||||
return Response({'project_code_id': project_code.id}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class CreateProjectCodeView(APIView):
|
||||
permission_classes = (IsAuthenticated,)
|
||||
|
||||
class InputSerializer(serializers.Serializer):
|
||||
title = serializers.CharField(max_length=200)
|
||||
count = serializers.IntegerField()
|
||||
|
||||
def post(self, request):
|
||||
serializer = self.InputSerializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
project_code_head = create_project_code(**serializer.validated_data)
|
||||
return Response({'projectcode_id': project_code_head.id}, status=status.HTTP_201_CREATED)
|
||||
|
||||
|
||||
class ProjectCodeView(APIView):
|
||||
|
||||
permission_classes = (IsAuthenticated,)
|
||||
|
||||
class OutputSerializer(serializers.ModelSerializer):
|
||||
project_code_head = serializers.StringRelatedField()
|
||||
|
||||
class Meta:
|
||||
model = ProjectCodeModel
|
||||
fields = '__all__'
|
||||
|
||||
def get(self, request, id):
|
||||
is_used = request.query_params.get('is_used', 'false')
|
||||
codes = project_code_list(id=id, is_used=is_used)
|
||||
output = self.OutputSerializer(codes, many=True)
|
||||
return Response(output.data, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class ProjectCodeHeadView(APIView):
|
||||
permission_classes = (IsAuthenticated,)
|
||||
|
||||
class OutputSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = ProjectCodeHeadModel
|
||||
fields = '__all__'
|
||||
|
||||
def get(self, request):
|
||||
code_head = project_code_head_list()
|
||||
output = self.OutputSerializer(code_head, many=True)
|
||||
return Response(output.data, status=status.HTTP_200_OK)
|
||||
|
||||
Reference in new issue
Block a user