Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 6 additions & 11 deletions buzz/api/events/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -425,22 +425,17 @@ def route_availability(route: str, event: str | None = None) -> RouteAvailabilit
would collide.
"""
route = (route or "").strip().lower()
if not route:
return RouteAvailability(available=False, message=_("Enter a route."))

if route in RESERVED_EVENT_ROUTES:
return RouteAvailability(
available=False, message=_("'{0}' is reserved and cannot be used.").format(route)
)

filters = {"route": route}
if event:
filters["name"] = ("!=", event)

if frappe.db.exists("Buzz Event", filters):
return RouteAvailability(available=False, message=_("This route is already taken."))
# A reserved route and a blank one are both unavailable, and the field says so the
# same way a claimed one does — the reason is not the organiser's problem to fix.
taken = not route or route in RESERVED_EVENT_ROUTES or frappe.db.exists("Buzz Event", filters)
if taken:
return RouteAvailability(available=False, message=_("Already exists"))

return RouteAvailability(available=True, message=_("This route is available."))
return RouteAvailability(available=True, message=_("Available"))


# Buzz Event demands a category and a host, neither of which the create form asks for.
Expand Down
8 changes: 4 additions & 4 deletions e2e/tests/manage-event.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,15 +168,15 @@ test.describe("Claiming a route", () => {
await expect(field).toBeVisible({ timeout: 15000 })

await field.fill(`free-route-${Date.now()}`)
await expect(page.getByText("This route is available.")).toBeVisible()
await expect(page.getByText("Available", { exact: true })).toBeVisible()

// The shared event already answers to this one.
await field.fill("test-event-e2e")
await expect(page.getByText("This route is already taken.")).toBeVisible()
await expect(page.getByText("Already exists", { exact: true })).toBeVisible()

// Reserved so an event cannot shadow /b/account.
// Reserved so an event cannot shadow /b/account, and it reads the same as a claimed one.
await field.fill("account")
await expect(page.getByText("reserved")).toBeVisible()
await expect(page.getByText("Already exists", { exact: true })).toBeVisible()
})
})

Expand Down
Loading