fix
This commit is contained in:
@@ -294,20 +294,8 @@ class ProjectsSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class ProjectFoldersSerializer(serializers.ModelSerializer):
|
class ProjectFoldersSerializer(serializers.ModelSerializer):
|
||||||
projects = serializers.SerializerMethodField(method_name='get_projects')
|
projects = ProjectsSerializer(many=True, read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ProjectFolder
|
model = ProjectFolder
|
||||||
fields = ['id', 'name', 'projects']
|
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
|
|
||||||
@@ -176,21 +176,30 @@ class ProjectAndFolderApiView(views.APIView):
|
|||||||
def get(self, request):
|
def get(self, request):
|
||||||
mine = request.query_params.get('is_mine')
|
mine = request.query_params.get('is_mine')
|
||||||
wherehouse_ids = request.query_params.getlist('wherehouse')
|
wherehouse_ids = request.query_params.getlist('wherehouse')
|
||||||
folders = ProjectFolder.objects.prefetch_related('projects')
|
|
||||||
projects = Project.objects.exclude(folder__isnull=False)
|
projects = Project.objects.exclude(folder__isnull=False)
|
||||||
|
folder_projects = Project.objects.all()
|
||||||
|
|
||||||
if mine and mine.lower() == 'true':
|
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:
|
if wherehouse_ids:
|
||||||
projects = projects.filter(wherehouse__in=wherehouse_ids)
|
projects = projects.filter(wherehouse__in=wherehouse_ids)
|
||||||
projects_serializer = serializers.ProjectsSerializer(projects, many=True)
|
folder_projects = folder_projects.filter(wherehouse__in=wherehouse_ids)
|
||||||
folders_serializer = serializers.ProjectFoldersSerializer(
|
|
||||||
folders, many=True,
|
folders = ProjectFolder.objects.prefetch_related(
|
||||||
context={'user': request.user, 'is_mine': mine}
|
Prefetch('projects', queryset=folder_projects)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
projects_serializer = serializers.ProjectsSerializer(projects, many=True)
|
||||||
|
folders_serializer = serializers.ProjectFoldersSerializer(folders, many=True)
|
||||||
|
|
||||||
return Response(
|
return Response(
|
||||||
{
|
{
|
||||||
'project_folders': folders_serializer.data,
|
'project_folders': folders_serializer.data,
|
||||||
'projects': projects_serializer.data,
|
'projects': projects_serializer.data,
|
||||||
},
|
},
|
||||||
status=200
|
status=200
|
||||||
)
|
)
|
||||||
Reference in New Issue
Block a user