add project apis

This commit is contained in:
behruz-dev
2025-08-04 10:47:12 +05:00
parent 1831ceae80
commit 1a5187f68d
7 changed files with 178 additions and 5 deletions

View File

@@ -1,6 +1,8 @@
from django.db import transaction
from rest_framework import serializers
from core.apps.projects.models.project import Project, ProjectDepartment
from core.apps.projects.models.project import Project, ProjectDepartment, ProjectFolder
class ProjectDepartmentListSerializer(serializers.ModelSerializer):
@@ -26,4 +28,65 @@ class ProjectDetailSerialzier(serializers.ModelSerializer):
model = Project
fields = [
'id', 'name', 'location', 'start_date', 'end_date', 'project_departments'
]
]
class ProjectCreateSerializer(serializers.ModelSerializer):
location = serializers.CharField()
start_date = serializers.DateField()
end_date = serializers.DateField()
name = serializers.CharField()
def create(self, validated_data):
with transaction.atomic():
return Project.objects.create(
name=validated_data.get('name'),
start_date=validated_data.get('start_date'),
end_date=validated_data.get('end_date'),
location=validated_data.get('location')
)
class ProjectFolderCreateSerializer(serializers.Serializer):
name = serializers.CharField()
def create(self, validated_data):
with transaction.atomic():
folder = ProjectFolder.objects.create(
name=validated_data.get('name')
)
return folder
class ProjectFolderListSerializer(serializers.ModelSerializer):
projects = ProjectListSerializer(many=True)
class Meta:
model = ProjectFolder
fields = ['id', 'name', 'projects']
class ProjectFolderProjectCreateSerializer(serializers.Serializer):
folder_id = serializers.UUIDField()
name = serializers.CharField()
location = serializers.CharField()
start_date = serializers.DateField()
end_date = serializers.DateField()
def validate(self, data):
folder = ProjectFolder.objects.filter(id=data['folder_id']).first()
if not folder:
raise serializers.ValidationError("Folder not found")
data['folder'] = folder
return data
def create(self, validated_data):
with transaction.atomic():
return Project.objects.create(
name=validated_data.get('name'),
folder=validated_data.get('folder'),
location=validated_data.get('location'),
start_date=validated_data.get('start_date'),
end_date=validated_data.get('end_date')
)