Source code for club_sessions.views.new_session
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404, redirect, render
from club_sessions.forms import SessionForm
from organisations.models import Organisation
from rbac.core import rbac_user_has_role
from rbac.views import rbac_forbidden
[docs]
@login_required()
def new_session(request, club_id):
"""Set up a new bridge session for a club. Normally we import a file, so this won't be used much."""
club = get_object_or_404(Organisation, pk=club_id)
club_role = f"club_sessions.sessions.{club.id}.edit"
if not rbac_user_has_role(request.user, club_role):
return rbac_forbidden(request, club_role)
# Set up form values
director_name = request.user.full_name
# Load form
session_form = SessionForm(
request.POST or None, club=club, initial={"director": request.user}
)
if request.method == "POST" and session_form.is_valid():
session = session_form.save(commit=False)
session.club = club
session.save()
return redirect("club_sessions:manage_session", session_id=session.id)
else:
print(session_form.errors)
return render(
request,
"club_sessions/new/new_session.html",
{
"club": club,
"session_form": session_form,
"director_name": director_name,
"new_or_edit": "new",
},
)