fix registration flow
This commit is contained in:
parent
2a1a24ced7
commit
f852a89e8a
3 changed files with 49 additions and 15 deletions
20
rc_hip/repapp/migrations/0003_guest_user.py
Normal file
20
rc_hip/repapp/migrations/0003_guest_user.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Generated by Django 4.2 on 2023-04-25 07:05
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('repapp', '0002_message'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='guest',
|
||||
name='user',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Benutzer'),
|
||||
),
|
||||
]
|
||||
|
|
@ -7,6 +7,20 @@ from django.utils.translation import gettext_lazy as _
|
|||
from django.contrib.auth.models import AbstractUser
|
||||
|
||||
|
||||
class CustomUser(AbstractUser):
|
||||
"""
|
||||
Custom user object with unique email.
|
||||
"""
|
||||
email = models.EmailField(unique=True, verbose_name=_("eMail Adresse"))
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Benutzer')
|
||||
verbose_name_plural = _('Benutzer')
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.email}'
|
||||
|
||||
|
||||
class Cafe(models.Model):
|
||||
"""
|
||||
A Cafe is a "Repair-Café event.
|
||||
|
|
@ -64,6 +78,8 @@ class Guest(models.Model):
|
|||
phone = models.CharField(max_length=200, verbose_name=_("Telefonnummer"))
|
||||
residence = models.CharField(max_length=200, verbose_name=_("Wohnort"))
|
||||
mail = models.CharField(max_length=200, verbose_name=_("eMail"))
|
||||
user = models.ForeignKey(
|
||||
CustomUser, on_delete=models.CASCADE, null=True, verbose_name=_("Benutzer"))
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Gast')
|
||||
|
|
@ -174,20 +190,6 @@ class Candidate(models.Model):
|
|||
return f'Kandidat {self.cafe.event_date} für Gerät {self.device.device}'
|
||||
|
||||
|
||||
class CustomUser(AbstractUser):
|
||||
"""
|
||||
Custom user object with unique email.
|
||||
"""
|
||||
email = models.EmailField(unique=True, verbose_name=_("eMail Adresse"))
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Benutzer')
|
||||
verbose_name_plural = _('Benutzer')
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.email}'
|
||||
|
||||
|
||||
class OneTimeLogin(models.Model):
|
||||
"""
|
||||
A OneTimeLogin is a secret which can be used once to login a user.
|
||||
|
|
|
|||
|
|
@ -144,6 +144,9 @@ class RegisterGuestFormView(generic.edit.FormView):
|
|||
user.set_password(password)
|
||||
user.save()
|
||||
|
||||
guest.user = user
|
||||
guest.save()
|
||||
|
||||
send_guest_account_mail(guest, password, self.request)
|
||||
|
||||
send_confirmation_mails(device, guest, cafe, self.request)
|
||||
|
|
@ -161,12 +164,21 @@ class RegisterGuestFormView(generic.edit.FormView):
|
|||
device_identifier = self.kwargs['device_identifier']
|
||||
device = get_object_or_404(Device, identifier=device_identifier)
|
||||
|
||||
mail = self.kwargs['mail']
|
||||
guest = Guest.objects.filter(mail=mail).first()
|
||||
if guest:
|
||||
return HttpResponseRedirect(
|
||||
reverse_lazy('register_device_final', kwargs={
|
||||
'cafe': cafe.pk,
|
||||
'device_identifier': device.identifier})
|
||||
)
|
||||
|
||||
context = super(RegisterGuestFormView, self).get_context_data(
|
||||
**kwargs
|
||||
)
|
||||
context["cafe"] = cafe
|
||||
context["device"] = device
|
||||
context["mail"] = self.kwargs['mail']
|
||||
context["mail"] = mail
|
||||
|
||||
return context
|
||||
|
||||
|
|
|
|||
Reference in a new issue