fix project create api

This commit is contained in:
behruz-dev
2025-08-05 10:34:29 +05:00
parent 09e725834f
commit 6dfbe9298a
12 changed files with 241 additions and 16 deletions

View File

@@ -17,7 +17,7 @@ class ProjectDetailSerialzier(serializers.ModelSerializer):
class Meta:
model = Project
fields = [
'id', 'name', 'location', 'start_date', 'end_date',
'id', 'name', 'location', 'start_date', 'end_date', 'status', 'benifit_plan'
]
@@ -27,16 +27,47 @@ class ProjectCreateSerializer(serializers.Serializer):
end_date = serializers.DateField()
name = serializers.CharField()
builder_id = serializers.UUIDField()
area = serializers.IntegerField()
boss = serializers.ListSerializer(child=serializers.UUIDField())
foreman = serializers.ListSerializer(child=serializers.UUIDField())
other_members = serializers.ListSerializer(child=serializers.UUIDField())
wherehouse = serializers.ListSerializer(child=serializers.UUIDField())
cash_transaction = serializers.ListSerializer(child=serializers.UUIDField())
currency = serializers.ChoiceField(choices=[('uzs', 'uzs'), ('usd', 'usd')])
benifit_plan = serializers.IntegerField()
def create(self, validated_data):
boss_ids = validated_data.pop('boss')
foreman_ids = validated_data.pop('foreman')
other_member_ids = validated_data.pop('other_members')
warehouse_ids = validated_data.pop('wherehouse')
cash_transaction_ids = validated_data.pop('cash_transaction')
builder_id = validated_data.pop('builder_id')
with transaction.atomic():
return Project.objects.create(
project = 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')
location=validated_data.get('location'),
area=validated_data.get('area'),
currency=validated_data.get('currency'),
benifit_plan=validated_data.get('benifit_plan'),
builder_id=builder_id
)
project.boss.set(boss_ids)
project.foreman.set(foreman_ids)
project.other_members.set(other_member_ids)
project.wherehouse.set(warehouse_ids)
project.cash_transaction.set(cash_transaction_ids)
return project
# Project Folder
class ProjectFolderCreateSerializer(serializers.Serializer):
name = serializers.CharField()
@@ -80,3 +111,30 @@ class ProjectFolderProjectCreateSerializer(serializers.Serializer):
end_date=validated_data.get('end_date')
)
class ProjectFolderUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = ProjectFolder
fields = [
'name', 'color'
]
def update(self, instance, validated_data):
instance.name = validated_data.get('name', instance.name)
instance.color = validated_data.get('color', instance.color)
instance.save()
return instance
class ProjectFolderDetailSerializer(serializers.ModelSerializer):
projects = ProjectListSerializer(many=True)
projects_count = serializers.SerializerMethodField(method_name='get_projects_count')
class Meta:
model = ProjectFolder
fields = [
'id', 'name', 'color', 'projects_count', 'projects'
]
def get_projects_count(self, obj):
return obj.projects.count()