fix registration flow

This commit is contained in:
Tom Irgang 2023-04-25 09:14:26 +02:00
parent 2a1a24ced7
commit f852a89e8a
3 changed files with 49 additions and 15 deletions

View 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'),
),
]

View file

@ -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.

View file

@ -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