from django.shortcuts import render, redirect from .forms import InvitationCodeForm, CustomUserCreationForm, CustomUserChangeForm from .models import InvitationCode from django.contrib.auth.decorators import login_required 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}) @login_required def edit_profile(request): if request.method == 'POST': form = CustomUserChangeForm(request.POST, instance=request.user) if form.is_valid(): form.save() return redirect('edit_profile') # Or wherever you want to redirect else: form = CustomUserChangeForm(instance=request.user) return render(request, 'accounts/edit_profile.html', {'form': form})