@@ -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 = [
|
||||
|
||||
@@ -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']
|
||||
fields = ['id', 'name', 'projects']
|
||||
@@ -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
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user