def sessions(request, id=None): api = API(request) if id is None: if api.get: # Get a list of sessions sessions = Session.list(user=request.user, filter={"active": True}) return api.respond( sessions, template="sessions/list.html", context={ "sessions": sessions, "types": SessionType.objects.order_by("rank").all(), "images": SessionImage.objects.all(), }, ) elif api.post: # Launch a session for the user session = Session.launch(user=request.user, type_id=api.required("type"), image_name=api.require("image")) return api.respond(session) else: if api.get: # Get a session, updating it first session = Session.get(id=id, user=request.user) if session.active: session.update() return api.respond(session) return api.respond(status=405)
def new(request): """ List session types, create a new session, launch it and redirect the user to it's page """ api = API(request) if api.get: return api.respond( template="sessions/new.html", context={ "sessions": Session.list(user=request.user, filter={"active": True}).count(), "types": SessionType.objects.order_by("rank").all(), "images": SessionImage.objects.all(), }, ) elif api.post: session = Session.launch(user=request.user, type_id=api.required("type"), image_name=api.required("image")) return api.respond_created(url=session.url()) return api.respond_bad()