add new apis
This commit is contained in:
@@ -284,3 +284,17 @@ class ProjectDetailSerialzier(serializers.ModelSerializer):
|
|||||||
'id': obj.builder.id,
|
'id': obj.builder.id,
|
||||||
'name': obj.builder.name
|
'name': obj.builder.name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class ProjectsSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Project
|
||||||
|
fields = ['id', 'name']
|
||||||
|
|
||||||
|
|
||||||
|
class ProjectFoldersSerializer(serializers.ModelSerializer):
|
||||||
|
projects = ProjectsSerializer(many=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = ProjectFolder
|
||||||
|
fields = ['id', 'name', 'projects']
|
||||||
@@ -54,5 +54,6 @@ urlpatterns = [
|
|||||||
path('<uuid:id>/update/', estimate_product_views.EstimateProductUpdateApiView.as_view()),
|
path('<uuid:id>/update/', estimate_product_views.EstimateProductUpdateApiView.as_view()),
|
||||||
path('<uuid:id>/delete/', estimate_product_views.EstimateProductDeleteApiView.as_view()),
|
path('<uuid:id>/delete/', estimate_product_views.EstimateProductDeleteApiView.as_view()),
|
||||||
]
|
]
|
||||||
))
|
)),
|
||||||
|
path('projects_and_folders/', project_views.ProjectAndFolderApiView.as_view()),
|
||||||
]
|
]
|
||||||
@@ -138,6 +138,7 @@ class ProjectFolderDeleteApiView(views.APIView):
|
|||||||
class ChangeProjectFolderApiView(generics.GenericAPIView):
|
class ChangeProjectFolderApiView(generics.GenericAPIView):
|
||||||
serializer_class = serializers.ChangeProjectFolderSerializer
|
serializer_class = serializers.ChangeProjectFolderSerializer
|
||||||
queryset = Project.objects.all()
|
queryset = Project.objects.all()
|
||||||
|
required_permissions = ['project_folder']
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
serializer = self.serializer_class(data=request.data)
|
serializer = self.serializer_class(data=request.data)
|
||||||
@@ -153,3 +154,23 @@ class ChangeProjectFolderApiView(generics.GenericAPIView):
|
|||||||
return Response(
|
return Response(
|
||||||
{'success': False, 'message': serializer.errors}, status=400
|
{'success': False, 'message': serializer.errors}, status=400
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ProjectAndFolderApiView(views.APIView):
|
||||||
|
permission_classes = [HasRolePermission]
|
||||||
|
required_permissions = ['project', 'project_folder']
|
||||||
|
|
||||||
|
def get(self, request):
|
||||||
|
folders = ProjectFolder.objects.prefetch_related('projects').only(
|
||||||
|
'id','name', 'projects__id', 'projects__id'
|
||||||
|
).exclude(folder__isnull=True)
|
||||||
|
projects = Project.objects.only('id', 'name').exclude(folder__isnull=False)
|
||||||
|
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