diff --git a/lego/apps/lending/tests/test_lendableobject_api.py b/lego/apps/lending/tests/test_lendableobject_api.py index c9c32d9fa..a347425a0 100644 --- a/lego/apps/lending/tests/test_lendableobject_api.py +++ b/lego/apps/lending/tests/test_lendableobject_api.py @@ -441,7 +441,7 @@ def test_single_lending_request(self): self.assertEqual(len(response.json()), 1) unavailable_range = response.json()[0] - self.assertEqual(len(unavailable_range), 4) + self.assertEqual(len(unavailable_range), 6) self.assertEqual(unavailable_range[0], start_date.isoformat()) self.assertEqual(unavailable_range[1], end_date.isoformat()) diff --git a/lego/apps/lending/views.py b/lego/apps/lending/views.py index b4301c173..c639c8df4 100644 --- a/lego/apps/lending/views.py +++ b/lego/apps/lending/views.py @@ -48,6 +48,7 @@ def availability(self, request, *args, **kwargs): for a specified month and year. """ lendable_object = self.get_object() + user = request.user try: month = int(request.query_params.get("month", "")) @@ -82,12 +83,17 @@ def availability(self, request, *args, **kwargs): for request in overlapping_requests: range_start = max(request.start_date, start_of_month) range_end = min(request.end_date, end_of_month) + canEditRequest = request._meta.permission_handler.has_perm( + user, EDIT, request + ) - unavailable_ranges.append([range_start, range_end, request.created_by]) + unavailable_ranges.append( + [range_start, range_end, request.created_by, request.id, canEditRequest] + ) formatted_ranges = [] for i in range(len(unavailable_ranges)): - start, end, created_by = unavailable_ranges[i] + start, end, created_by, id, canEdit = unavailable_ranges[i] start_date = start.isoformat() end_date = end.isoformat() created_by_username = created_by @@ -106,7 +112,14 @@ def availability(self, request, *args, **kwargs): created_by_fullname = None created_by_username = None if (created_by is None) else created_by.username formatted_ranges.append( - [start_date, end_date, created_by_fullname, created_by_username] + [ + start_date, + end_date, + id, + canEdit, + created_by_fullname, + created_by_username, + ] ) return Response(formatted_ranges)