from django.shortcuts import render, redirect from .forms import InvitationCodeForm, CustomUserCreationForm from .models import InvitationCode def invitation_code_view(request): if request.method == 'POST': form = InvitationCodeForm(request.POST) if form.is_valid(): code = form.cleaned_data['code'] request.session['invitation_code'] = code return redirect('register') else: form = InvitationCodeForm() return render(request, 'accounts/invitation_code.html', {'form': form}) def register_view(request): invitation_code_str = request.session.get('invitation_code') if not invitation_code_str: return redirect('invitation_code') try: invitation_code = InvitationCode.objects.get(code=invitation_code_str) if not invitation_code.is_valid(): # Handle invalid code, maybe redirect with a message return redirect('invitation_code') except InvitationCode.DoesNotExist: return redirect('invitation_code') if request.method == 'POST': form = CustomUserCreationForm(request.POST) if form.is_valid(): user = form.save(commit=False) user.set_password(form.cleaned_data['password']) user.save() invitation_code.is_active = False invitation_code.user = user invitation_code.save() # Log the user in and redirect to the dashboard return redirect('login') # Or wherever you want to redirect after registration else: form = CustomUserCreationForm() return render(request, 'accounts/register.html', {'form': form})