first commit

This commit is contained in:
javad committed 2026-06-15 10:57:28 +03:30
commit 3e4574dcdd
163 files changed
+3559

No files matched your search

+89
View File
@@ -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)