change project edit api

This commit is contained in:
behruz-dev
2025-08-07 14:59:27 +05:00
parent ec69b6f80b
commit e018be4447
3 changed files with 34 additions and 11 deletions

View File

@@ -14,7 +14,7 @@ class CashTransactionListApiView(generics.ListAPIView):
pagination_class = CustomPageNumberPagination pagination_class = CustomPageNumberPagination
class CashTransactionCreateApiView(generics.GenericAPIView): class CashTransactionCreateApiView(generics.CreateAPIView):
serializer_class = serializers.CashTransactionCreateSerializer serializer_class = serializers.CashTransactionCreateSerializer
queryset = CashTransaction.objects.all() queryset = CashTransaction.objects.all()
permission_classes = [HasRolePermission] permission_classes = [HasRolePermission]

View File

@@ -32,21 +32,44 @@ class ProjectUpdateSerialzier(serializers.ModelSerializer):
class Meta: class Meta:
model = Project model = Project
fields = [ fields = [
'id', 'name', 'location', 'start_date', 'end_date', 'status', 'benifit_plan' 'id', 'name', 'location', 'start_date', 'end_date', 'status', 'benifit_plan', 'boss',
'builder', 'area', 'foreman', 'other_members', 'wherehouse', 'cash_transaction', 'currency',
] ]
def update(self, instance, validated_data): def update(self, instance, validated_data):
location = validated_data.get('location') location_data = validated_data.pop('location', None)
instance.name = validated_data.get('name', instance.name) instance.name = validated_data.get('name', instance.name)
instance.start_date = validated_data.get('start_date', instance.start_date) instance.start_date = validated_data.get('start_date', instance.start_date)
instance.end_date = validated_data.get('end_date', instance.end_date) instance.end_date = validated_data.get('end_date', instance.end_date)
instance.status = validated_data.get('name', instance.status) instance.status = validated_data.get('status', instance.status)
instance.location.region = location.get('region', instance.location.region) instance.benifit_plan = validated_data.get('benifit_plan', instance.benifit_plan)
instance.location.district = location.get('district', instance.location.district) instance.folder = validated_data.get('folder', instance.folder)
instance.location.longitude = location.get('longitude', instance.location.longitude) instance.builder = validated_data.get('builder', instance.builder)
instance.location.latitude = location.get('latitude', instance.location.latitude) instance.area = validated_data.get('area', instance.area)
instance.location.address = location.get('address', instance.location.address) instance.currency = validated_data.get('currency', instance.currency)
instance.location.save()
if 'boss' in validated_data:
instance.boss.set(validated_data['boss'])
if 'foreman' in validated_data:
instance.foreman.set(validated_data['foreman'])
if 'other_members' in validated_data:
instance.other_members.set(validated_data['other_members'])
if 'wherehouse' in validated_data:
instance.wherehouse.set(validated_data['wherehouse'])
if 'cash_transaction' in validated_data:
instance.cash_transaction.set(validated_data['cash_transaction'])
if location_data and instance.location:
location = instance.location
location.region = location_data.get('region', location.region)
location.district = location_data.get('district', location.district)
location.longitude = location_data.get('longitude', location.longitude)
location.latitude = location_data.get('latitude', location.latitude)
location.address = location_data.get('address', location.address)
location.save()
instance.save() instance.save()
return instance return instance

View File

@@ -23,7 +23,7 @@ class ProjectLocationSerializer(serializers.Serializer):
raise serializers.ValidationError("District not found") raise serializers.ValidationError("District not found")
data['district'] = district data['district'] = district
return data return data
class ProjectLocationListSerializer(serializers.ModelSerializer): class ProjectLocationListSerializer(serializers.ModelSerializer):
region = serializers.SerializerMethodField(method_name='get_region') region = serializers.SerializerMethodField(method_name='get_region')