diff --git a/aleksis/apps/paweljong/forms.py b/aleksis/apps/paweljong/forms.py index 56c7d4aecce1a599af83245aa7043de76c52e11a..2b9a31f845531783144e524aa87d6ff3841fe674 100644 --- a/aleksis/apps/paweljong/forms.py +++ b/aleksis/apps/paweljong/forms.py @@ -256,7 +256,7 @@ class RegisterEventContactDetails(ExtensibleForm): Fieldset( _("Personal data"), Row("first_name", "additional_name", "last_name"), - Row("date_of_birth", "sex"), + Row("date_of_birth", "place_of_birth", "sex"), ), Fieldset( _("Address data"), @@ -265,7 +265,7 @@ class RegisterEventContactDetails(ExtensibleForm): ), Fieldset( _("Contact details"), - Row("mobile_number", "email"), + Row("mobile_number", "phone_number", "email"), ), Fieldset( _("School details"), @@ -282,6 +282,7 @@ class RegisterEventContactDetails(ExtensibleForm): label=_("Additional names"), help_text=_("Please enter any additional names."), required=False, + disabled=True, ) last_name = forms.CharField( @@ -315,10 +316,20 @@ class RegisterEventContactDetails(ExtensibleForm): ), ) + phone_number = PhoneNumberField( + label=_("Phone number"), + required=False, + ) + date_of_birth = forms.DateField( label=_("Date of birth"), ) + place_of_birth = forms.CharField( + label=_("Place of birth"), + required=False, + ) + sex = forms.ChoiceField( label=_("Sex"), help_text=_( @@ -378,7 +389,8 @@ class RegisterEventAdditional(ExtensibleForm): for field in event.linked_group.additional_fields.all(): field_instance = getattr(fields, field.field_type)( - required=False, + required=field.required, + help_text=field.help_text, ) self.fields[field.title] = field_instance node = Fieldset(f"{field.title}", f"{field.title}") diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py index 809a124ddf4214d3eaad6e1f778c7a955e06bd37..484ed1e2bf6763f459181a919bd152a1748fd05a 100644 --- a/aleksis/apps/paweljong/views.py +++ b/aleksis/apps/paweljong/views.py @@ -495,7 +495,7 @@ class RegisterEventWizardView(SessionWizardView): event = Event.objects.get(id=self.kwargs["pk"]) cleaned_data_email = self.get_cleaned_data_for_step("email") - cleaned_data_contact_details = self.get_cleaned_data_for_step("cotact_details") + cleaned_data_contact_details = self.get_cleaned_data_for_step("contact_details") cleaned_data_guardians = self.get_cleaned_data_for_step("guardians") cleaned_data_register = self.get_cleaned_data_for_step("register") cleaned_data_additional = self.get_cleaned_data_for_step("additional") @@ -517,33 +517,26 @@ class RegisterEventWizardView(SessionWizardView): ) user.set_password(cleaned_data_register["password1"]) user.save() - - # Create Person - person = Person.objects.create( - user=user, - email=cleaned_data_contact_details["email"], - short_name=cleaned_data_contact_details["short_name"], - first_name=cleaned_data_contact_details["first_name"], - additional_name=cleaned_data_contact_details["additional_name"], - last_name=cleaned_data_contact_details["last_name"], - street=cleaned_data_contact_details["street"], - housenumber=cleaned_data_contact_details["housenumber"], - postal_code=cleaned_data_contact_details["postal_code"], - place=cleaned_data_contact_details["place"], - mobile_number=cleaned_data_contact_details["mobile_number"], - phone_number=cleaned_data_contact_details["phone_number"], - date_of_birth=cleaned_data_contact_details["date_of_birth"], - place_of_birth=cleaned_data_contact_details["place_of_birth"], - sex=cleaned_data_contact_details["sex"], - photo=cleaned_data_contact_details["photo"], - description=cleaned_data_contact_details["description"], - ) + else: + user = self.request.user + + person = Person.objects.get_or_create( + user=user, + defaults={ + "email": cleaned_data_contact_details["email"], + "first_name": cleaned_data_contact_details["first_name"], + "additional_name": cleaned_data_contact_details["additional_name"], + "last_name": cleaned_data_contact_details["last_name"], + "phone_number": cleaned_data_contact_details["phone_number"], + "place_of_birth": cleaned_data_contact_details["place_of_birth"], + } + ) if ( "school" in cleaned_data_contact_details or "school_class" in cleaned_data_contact_details or "school_place" in cleaned_data_contact_details - or "mobile" in cleaned_data_contact_details + or "mobile_number" in cleaned_data_contact_details or "sex" in cleaned_data_contact_details or "date_of_birth" in cleaned_data_contact_details ): @@ -567,6 +560,7 @@ class RegisterEventWizardView(SessionWizardView): person.street = cleaned_data_contact_details["street"] person.postal_code = cleaned_data_contact_details["postal_code"] person.place = cleaned_data_contact_details["place"] + person.housenumber = cleaned_data_contact_details["housenumber"], person.save() @@ -615,10 +609,13 @@ class RegisterEventWizardView(SessionWizardView): registration.save() if cleaned_data_financial["voucher_code"] != "": - voucher = Voucher.objects.get(code=cleaned_data_financial["voucher_code"]) - if voucher: + vouchers = Voucher.objects.filter(person=person, event=event, used=False, code=cleaned_data_financial["voucher_code"]) + if vouchers: + voucher = vouchers.first() registration.voucher = voucher + voucher.used = True with reversion.create_revision(): + voucher.save() registration.save() else: messages.error(self.request, _("You entered an invalid voucher code!"))