add change_project_folder apis
This commit is contained in:
@@ -137,4 +137,22 @@ class ProjectFolderDetailSerializer(serializers.ModelSerializer):
|
||||
]
|
||||
|
||||
def get_projects_count(self, obj):
|
||||
return obj.projects.count()
|
||||
return obj.projects.count()
|
||||
|
||||
|
||||
class ChangeProjectFolderSerializer(serializers.Serializer):
|
||||
project_id = serializers.UUIDField()
|
||||
project_folder_id = serializers.UUIDField()
|
||||
|
||||
def validate(self, data):
|
||||
project = Project.objects.filter(id=data['project_id']).first()
|
||||
if not project:
|
||||
raise serializers.ValidationError("Project not found")
|
||||
project_folder = ProjectFolder.objects.filter(id=data['project_folder_id']).first()
|
||||
if not project_folder:
|
||||
raise serializers.ValidationError("Project Folder not found")
|
||||
if project.folder == project_folder:
|
||||
raise serializers.ValidationError("the project folder is attached for this project")
|
||||
data['project'] = project
|
||||
data['project_folder'] = project_folder
|
||||
return data
|
||||
@@ -11,6 +11,7 @@ urlpatterns = [
|
||||
path('create/', project_views.ProjectCreateApiView.as_view()),
|
||||
path('<uuid:id>/update/', project_views.ProjectUpdateApiView.as_view()),
|
||||
path('<uuid:id>/delete/', project_views.ProjectDeleteApiView.as_view()),
|
||||
path('change_folder/', project_views.ChangeProjectFolderApiView.as_view()),
|
||||
]
|
||||
)),
|
||||
path('project_folder/', include(
|
||||
|
||||
@@ -107,4 +107,24 @@ class ProjectFolderDeleteApiView(views.APIView):
|
||||
def delete(self, request, id):
|
||||
folder = get_object_or_404(ProjectFolder, id=id)
|
||||
folder.delete()
|
||||
return Response({"success": True, "message": 'deleted!'}, status=204)
|
||||
return Response({"success": True, "message": 'deleted!'}, status=204)
|
||||
|
||||
|
||||
class ChangeProjectFolderApiView(generics.GenericAPIView):
|
||||
serializer_class = serializers.ChangeProjectFolderSerializer
|
||||
queryset = Project.objects.all()
|
||||
|
||||
def post(self, request):
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
if serializer.is_valid():
|
||||
project = serializer.validated_data.get('project')
|
||||
folder = serializer.validated_data.get('project_folder')
|
||||
project.folder = folder
|
||||
project.save()
|
||||
return Response(
|
||||
{'success': True, 'message': 'Project Folder changed!'},
|
||||
status=200
|
||||
)
|
||||
return Response(
|
||||
{'success': False, 'message': serializer.errors}, status=400
|
||||
)
|
||||
Reference in New Issue
Block a user