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
|
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):
|
class Cafe(models.Model):
|
||||||
"""
|
"""
|
||||||
A Cafe is a "Repair-Café event.
|
A Cafe is a "Repair-Café event.
|
||||||
|
|
@ -64,6 +78,8 @@ class Guest(models.Model):
|
||||||
phone = models.CharField(max_length=200, verbose_name=_("Telefonnummer"))
|
phone = models.CharField(max_length=200, verbose_name=_("Telefonnummer"))
|
||||||
residence = models.CharField(max_length=200, verbose_name=_("Wohnort"))
|
residence = models.CharField(max_length=200, verbose_name=_("Wohnort"))
|
||||||
mail = models.CharField(max_length=200, verbose_name=_("eMail"))
|
mail = models.CharField(max_length=200, verbose_name=_("eMail"))
|
||||||
|
user = models.ForeignKey(
|
||||||
|
CustomUser, on_delete=models.CASCADE, null=True, verbose_name=_("Benutzer"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('Gast')
|
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}'
|
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):
|
class OneTimeLogin(models.Model):
|
||||||
"""
|
"""
|
||||||
A OneTimeLogin is a secret which can be used once to login a user.
|
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.set_password(password)
|
||||||
user.save()
|
user.save()
|
||||||
|
|
||||||
|
guest.user = user
|
||||||
|
guest.save()
|
||||||
|
|
||||||
send_guest_account_mail(guest, password, self.request)
|
send_guest_account_mail(guest, password, self.request)
|
||||||
|
|
||||||
send_confirmation_mails(device, guest, cafe, 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_identifier = self.kwargs['device_identifier']
|
||||||
device = get_object_or_404(Device, identifier=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(
|
context = super(RegisterGuestFormView, self).get_context_data(
|
||||||
**kwargs
|
**kwargs
|
||||||
)
|
)
|
||||||
context["cafe"] = cafe
|
context["cafe"] = cafe
|
||||||
context["device"] = device
|
context["device"] = device
|
||||||
context["mail"] = self.kwargs['mail']
|
context["mail"] = mail
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
|
||||||
Reference in a new issue