From 95d8c5b5d00e09d3493ddaa07ca4a06e10b5e19a Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Sat, 11 Oct 2025 16:34:17 +0500 Subject: [PATCH 1/5] add new cors --- config/conf/cors_headers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/config/conf/cors_headers.py b/config/conf/cors_headers.py index b2cd214..8fea2ff 100644 --- a/config/conf/cors_headers.py +++ b/config/conf/cors_headers.py @@ -7,6 +7,7 @@ CORS_ALLOWED_ORIGINS = [ "https://ibapp.uz", "https://www.ibapp.uz", 'https://test.ibapp.uz', + 'http://192.168.1.104:8081', ] CSRF_TRUSTED_ORIGINS = [ From 5dfda150f2660e345ec18c28a60b21941bb870c5 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Wed, 15 Oct 2025 14:16:47 +0500 Subject: [PATCH 2/5] fix project folder --- core/apps/projects/views/project.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/apps/projects/views/project.py b/core/apps/projects/views/project.py index 1e0b268..8c22235 100644 --- a/core/apps/projects/views/project.py +++ b/core/apps/projects/views/project.py @@ -179,7 +179,7 @@ class ProjectAndFolderApiView(views.APIView): folders = ProjectFolder.objects.prefetch_related('projects') projects = Project.objects.exclude(folder__isnull=False) if mine and mine.lower() == 'true': - projects = projects.filter(Q(boss=request.user) | Q(foreman=request.user) | Q(other_members=request.user)) + projects = projects.filter(Q(boss=request.user) | Q(foreman=request.user) | Q(other_members=request.user)).distinct() if wherehouse_ids: projects = projects.filter(wherehouse__in=wherehouse_ids) projects_serializer = serializers.ProjectsSerializer(projects, many=True) From ffefa6ff67ca43a108c1b8d95b621a274afdfc9a Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Wed, 15 Oct 2025 14:23:28 +0500 Subject: [PATCH 3/5] fix --- core/apps/projects/serializers/project.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/core/apps/projects/serializers/project.py b/core/apps/projects/serializers/project.py index 8c90d1d..4486f5c 100644 --- a/core/apps/projects/serializers/project.py +++ b/core/apps/projects/serializers/project.py @@ -1,4 +1,5 @@ from django.db import transaction +from django.db.models import Q from rest_framework import serializers @@ -293,8 +294,20 @@ class ProjectsSerializer(serializers.ModelSerializer): class ProjectFoldersSerializer(serializers.ModelSerializer): - projects = ProjectsSerializer(many=True) + projects = serializers.SerializerMethodField(method_name='get_projects') class Meta: model = ProjectFolder - fields = ['id', 'name', 'projects'] \ No newline at end of file + fields = ['id', 'name', 'projects'] + + def get_projects(self, obj): + user = self.context.get('user') + is_mine = self.context.get('is_mine') + if is_mine and is_mine.lower() == 'true': + projects = obj.projects.filter( + Q(boss=user) | + Q(foreman=user) | + Q(other_members=user) + ).distinct() + return ProjectsSerializer(projects, many=True).data + return ProjectsSerializer(obj.projects, many=True).data \ No newline at end of file From d8e55334816bd3e903acfdafb0a994866e57f2df Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Wed, 15 Oct 2025 14:25:10 +0500 Subject: [PATCH 4/5] fix --- core/apps/projects/views/project.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/apps/projects/views/project.py b/core/apps/projects/views/project.py index 8c22235..5c81f49 100644 --- a/core/apps/projects/views/project.py +++ b/core/apps/projects/views/project.py @@ -183,7 +183,10 @@ class ProjectAndFolderApiView(views.APIView): if wherehouse_ids: projects = projects.filter(wherehouse__in=wherehouse_ids) projects_serializer = serializers.ProjectsSerializer(projects, many=True) - folders_serializer = serializers.ProjectFoldersSerializer(folders, many=True) + folders_serializer = serializers.ProjectFoldersSerializer( + folders, many=True, + context={'user': request.user, 'is_mine': mine} + ) return Response( { 'project_folders': folders_serializer.data, From 22b58736705184f17b99924fff385665458ed909 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Wed, 15 Oct 2025 14:27:47 +0500 Subject: [PATCH 5/5] fix --- core/apps/projects/serializers/project.py | 16 ++-------------- core/apps/projects/views/project.py | 23 ++++++++++++++++------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/core/apps/projects/serializers/project.py b/core/apps/projects/serializers/project.py index 4486f5c..df9d843 100644 --- a/core/apps/projects/serializers/project.py +++ b/core/apps/projects/serializers/project.py @@ -294,20 +294,8 @@ class ProjectsSerializer(serializers.ModelSerializer): class ProjectFoldersSerializer(serializers.ModelSerializer): - projects = serializers.SerializerMethodField(method_name='get_projects') + projects = ProjectsSerializer(many=True, read_only=True) class Meta: model = ProjectFolder - fields = ['id', 'name', 'projects'] - - def get_projects(self, obj): - user = self.context.get('user') - is_mine = self.context.get('is_mine') - if is_mine and is_mine.lower() == 'true': - projects = obj.projects.filter( - Q(boss=user) | - Q(foreman=user) | - Q(other_members=user) - ).distinct() - return ProjectsSerializer(projects, many=True).data - return ProjectsSerializer(obj.projects, many=True).data \ No newline at end of file + fields = ['id', 'name', 'projects'] \ No newline at end of file diff --git a/core/apps/projects/views/project.py b/core/apps/projects/views/project.py index 5c81f49..ce71c6c 100644 --- a/core/apps/projects/views/project.py +++ b/core/apps/projects/views/project.py @@ -176,21 +176,30 @@ class ProjectAndFolderApiView(views.APIView): def get(self, request): mine = request.query_params.get('is_mine') wherehouse_ids = request.query_params.getlist('wherehouse') - folders = ProjectFolder.objects.prefetch_related('projects') + projects = Project.objects.exclude(folder__isnull=False) + folder_projects = Project.objects.all() + if mine and mine.lower() == 'true': - projects = projects.filter(Q(boss=request.user) | Q(foreman=request.user) | Q(other_members=request.user)).distinct() + user_filter = Q(boss=request.user) | Q(foreman=request.user) | Q(other_members=request.user) + projects = projects.filter(user_filter).distinct() + folder_projects = folder_projects.filter(user_filter).distinct() + if wherehouse_ids: projects = projects.filter(wherehouse__in=wherehouse_ids) - projects_serializer = serializers.ProjectsSerializer(projects, many=True) - folders_serializer = serializers.ProjectFoldersSerializer( - folders, many=True, - context={'user': request.user, 'is_mine': mine} + folder_projects = folder_projects.filter(wherehouse__in=wherehouse_ids) + + folders = ProjectFolder.objects.prefetch_related( + Prefetch('projects', queryset=folder_projects) ) + + projects_serializer = serializers.ProjectsSerializer(projects, many=True) + folders_serializer = serializers.ProjectFoldersSerializer(folders, many=True) + return Response( { 'project_folders': folders_serializer.data, 'projects': projects_serializer.data, }, status=200 - ) + ) \ No newline at end of file