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 = [ diff --git a/core/apps/projects/serializers/project.py b/core/apps/projects/serializers/project.py index 8c90d1d..df9d843 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,8 @@ class ProjectsSerializer(serializers.ModelSerializer): class ProjectFoldersSerializer(serializers.ModelSerializer): - projects = ProjectsSerializer(many=True) + projects = ProjectsSerializer(many=True, read_only=True) class Meta: model = ProjectFolder - fields = ['id', 'name', 'projects'] \ 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 1e0b268..ce71c6c 100644 --- a/core/apps/projects/views/project.py +++ b/core/apps/projects/views/project.py @@ -176,18 +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)) + 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) + 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