|
| 1 | +from typing import Any |
| 2 | +from django import http |
1 | 3 | from django.core.mail import send_mail
|
2 | 4 | from django.contrib.auth import logout
|
3 | 5 | from django.contrib import messages
|
4 | 6 | from django.contrib.auth import get_user_model, login
|
| 7 | +from django.contrib.auth.models import Group |
5 | 8 | from django.contrib.auth.mixins import LoginRequiredMixin
|
6 | 9 | from django.contrib.messages.views import SuccessMessageMixin
|
7 | 10 | from django.urls import reverse, resolve
|
@@ -69,12 +72,33 @@ def form_valid(self, form):
|
69 | 72 |
|
70 | 73 |
|
71 | 74 | class SignupView(_SignupView):
|
| 75 | + group = None |
| 76 | + |
| 77 | + def setup(self, request, *args, **kwargs): |
| 78 | + token = kwargs.get('token', None) |
| 79 | + if token and Group.objects.filter(token__token=token).exists(): |
| 80 | + self.group = Group.objects.get(token__token=token) |
| 81 | + return super().setup(request, *args, **kwargs) |
| 82 | + |
72 | 83 | def get_form_kwargs(self):
|
73 | 84 | kwargs = super().get_form_kwargs()
|
74 | 85 | kwargs.update({
|
75 |
| - 'request': self.request |
| 86 | + 'request': self.request, |
76 | 87 | })
|
77 | 88 | return kwargs
|
| 89 | + |
| 90 | + def get_context_data(self, **kwargs): |
| 91 | + context_data = super().get_context_data(**kwargs) |
| 92 | + context_data['group'] = self.group |
| 93 | + return context_data |
| 94 | + |
| 95 | + def form_valid(self, form): |
| 96 | + response = super().form_valid(form) |
| 97 | + if self.group and self.user: |
| 98 | + # add user to group if group available |
| 99 | + self.user.groups.add(self.group) |
| 100 | + return response |
| 101 | + |
78 | 102 |
|
79 | 103 |
|
80 | 104 |
|
|
0 commit comments