From b264bf632bbf8d5f17cdc16182455ccb9936a3fd Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Mon, 15 Sep 2025 14:45:18 +0500 Subject: [PATCH] add: fix bug and add user field for income contract list api --- ...23_alter_expencecontract_project_folder.py | 20 +++++++++++++++++++ core/apps/finance/models/expence_contract.py | 2 +- .../finance/serializers/income_contract.py | 8 +++++++- core/apps/finance/views/income_contract.py | 2 +- 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 core/apps/finance/migrations/0023_alter_expencecontract_project_folder.py diff --git a/core/apps/finance/migrations/0023_alter_expencecontract_project_folder.py b/core/apps/finance/migrations/0023_alter_expencecontract_project_folder.py new file mode 100644 index 0000000..87ff794 --- /dev/null +++ b/core/apps/finance/migrations/0023_alter_expencecontract_project_folder.py @@ -0,0 +1,20 @@ +# Generated by Django 5.2.4 on 2025-09-15 14:43 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0022_expencecontract_paid_price'), + ('projects', '0016_estimatework_employee_estimatework_end_date_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='expencecontract', + name='project_folder', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='expence_contracts', to='projects.projectfolder'), + ), + ] diff --git a/core/apps/finance/models/expence_contract.py b/core/apps/finance/models/expence_contract.py index ae1c793..d2a968d 100644 --- a/core/apps/finance/models/expence_contract.py +++ b/core/apps/finance/models/expence_contract.py @@ -9,7 +9,7 @@ from core.apps.counterparty.models import Counterparty class ExpenceContract(BaseModel): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='expence_contracts') project_folder = models.ForeignKey( - 'projects.ProjectFolder', on_delete=models.CASCADE, related_name='expence_contracts' + 'projects.ProjectFolder', on_delete=models.CASCADE, related_name='expence_contracts', null=True, blank=True ) project = models.ForeignKey( 'projects.Project', on_delete=models.SET_NULL, related_name='expence_contracts', null=True, blank=True diff --git a/core/apps/finance/serializers/income_contract.py b/core/apps/finance/serializers/income_contract.py index 4897d28..43d398b 100644 --- a/core/apps/finance/serializers/income_contract.py +++ b/core/apps/finance/serializers/income_contract.py @@ -15,9 +15,15 @@ class IncomeContractSerializer(serializers.ModelSerializer): model = IncomeContract fields = [ 'id', 'project_folder', 'project', 'income_type', 'counterparty', 'price', 'currency', - 'date', 'comment' + 'date', 'comment' , 'user' ] extra_kwargs = {'id': {'read_only': True}} + + def get_user(self, obj): + return { + 'id': obj.user.id, + 'full_name': obj.user.full_name, + } def get_counterparty(self, obj): return { diff --git a/core/apps/finance/views/income_contract.py b/core/apps/finance/views/income_contract.py index f3860bb..42e1e89 100644 --- a/core/apps/finance/views/income_contract.py +++ b/core/apps/finance/views/income_contract.py @@ -41,7 +41,7 @@ class IncomeContractCreateApiView(generics.GenericAPIView): class IncomeContractListApiView(generics.GenericAPIView): serializer_class = IncomeContractSerializer queryset = IncomeContract.objects.select_related( - 'project_folder', 'project', 'income_type', 'counterparty', + 'project_folder', 'project', 'income_type', 'counterparty', 'user' ) permission_classes = [HasRolePermission] filter_backends = [DjangoFilterBackend, filters.SearchFilter]