forked from github/plane
chore: single endpoint to create estimate and estimate points (#897)
This commit is contained in:
parent
e68a5382f9
commit
4dda4ec610
@ -566,6 +566,11 @@ urlpatterns = [
|
|||||||
ProjectEstimatePointEndpoint.as_view(),
|
ProjectEstimatePointEndpoint.as_view(),
|
||||||
name="project-estimate-points",
|
name="project-estimate-points",
|
||||||
),
|
),
|
||||||
|
path(
|
||||||
|
"workspaces/<str:slug>/projects/<uuid:project_id>/estimates/bulk-estimate-points/",
|
||||||
|
BulkEstimatePointEndpoint.as_view(),
|
||||||
|
name="bulk-create-estimate-points",
|
||||||
|
),
|
||||||
path(
|
path(
|
||||||
"workspaces/<str:slug>/projects/<uuid:project_id>/estimates/<uuid:estimate_id>/bulk-estimate-points/",
|
"workspaces/<str:slug>/projects/<uuid:project_id>/estimates/<uuid:estimate_id>/bulk-estimate-points/",
|
||||||
BulkEstimatePointEndpoint.as_view(),
|
BulkEstimatePointEndpoint.as_view(),
|
||||||
|
@ -146,11 +146,13 @@ class BulkEstimatePointEndpoint(BaseAPIView):
|
|||||||
ProjectEntityPermission,
|
ProjectEntityPermission,
|
||||||
]
|
]
|
||||||
|
|
||||||
def post(self, request, slug, project_id, estimate_id):
|
def post(self, request, slug, project_id):
|
||||||
try:
|
try:
|
||||||
estimate = Estimate.objects.get(
|
if not request.data.get("estimate", False):
|
||||||
pk=estimate_id, workspace__slug=slug, project=project_id
|
return Response(
|
||||||
)
|
{"error": "Estimate is required"},
|
||||||
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
|
)
|
||||||
|
|
||||||
estimate_points = request.data.get("estimate_points", [])
|
estimate_points = request.data.get("estimate_points", [])
|
||||||
|
|
||||||
@ -160,6 +162,18 @@ class BulkEstimatePointEndpoint(BaseAPIView):
|
|||||||
status=status.HTTP_400_BAD_REQUEST,
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
estimate_serializer = EstimateSerializer(data=request.data.get("estimate"))
|
||||||
|
if not estimate_serializer.is_valid():
|
||||||
|
return Response(
|
||||||
|
estimate_serializer.errors, status=status.HTTP_400_BAD_REQUEST
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
estimate = estimate_serializer.save(project_id=project_id)
|
||||||
|
except IntegrityError:
|
||||||
|
return Response(
|
||||||
|
{"errror": "Estimate with the name already exists"},
|
||||||
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
|
)
|
||||||
estimate_points = EstimatePoint.objects.bulk_create(
|
estimate_points = EstimatePoint.objects.bulk_create(
|
||||||
[
|
[
|
||||||
EstimatePoint(
|
EstimatePoint(
|
||||||
@ -178,9 +192,17 @@ class BulkEstimatePointEndpoint(BaseAPIView):
|
|||||||
ignore_conflicts=True,
|
ignore_conflicts=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
serializer = EstimatePointSerializer(estimate_points, many=True)
|
estimate_point_serializer = EstimatePointSerializer(
|
||||||
|
estimate_points, many=True
|
||||||
|
)
|
||||||
|
|
||||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
return Response(
|
||||||
|
{
|
||||||
|
"estimate": estimate_serializer.data,
|
||||||
|
"estimate_points": estimate_point_serializer.data,
|
||||||
|
},
|
||||||
|
status=status.HTTP_200_OK,
|
||||||
|
)
|
||||||
except Estimate.DoesNotExist:
|
except Estimate.DoesNotExist:
|
||||||
return Response(
|
return Response(
|
||||||
{"error": "Estimate does not exist"},
|
{"error": "Estimate does not exist"},
|
||||||
@ -212,7 +234,6 @@ class BulkEstimatePointEndpoint(BaseAPIView):
|
|||||||
estimate_id=estimate_id,
|
estimate_id=estimate_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
print(estimate_points)
|
|
||||||
updated_estimate_points = []
|
updated_estimate_points = []
|
||||||
for estimate_point in estimate_points:
|
for estimate_point in estimate_points:
|
||||||
# Find the data for that estimate point
|
# Find the data for that estimate point
|
||||||
@ -238,7 +259,7 @@ class BulkEstimatePointEndpoint(BaseAPIView):
|
|||||||
{"error": "Estimate does not exist"}, status=status.HTTP_400_BAD_REQUEST
|
{"error": "Estimate does not exist"}, status=status.HTTP_400_BAD_REQUEST
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
capture_exception(e)
|
||||||
return Response(
|
return Response(
|
||||||
{"error": "Something went wrong please try again later"},
|
{"error": "Something went wrong please try again later"},
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
|
Loading…
Reference in New Issue
Block a user