This commit is contained in:
behruz-dev
2025-10-15 14:27:47 +05:00
parent d8e5533481
commit 22b5873670
2 changed files with 18 additions and 21 deletions

View File

@@ -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
)
)