mirror of
https://github.com/pretix/pretix.git
synced 2026-05-07 15:34:02 +00:00
Waiting list: Add name and phone number (#1987)
* add name and phone to waitinglist
* add options whether to ask for name/phone in waitinglist
* changed rendermode to checkout and added required-css-class
* changed default to original behaviour to not ask name or phone at all
* add name and phone to list-view and export
* add name and phone to Meta-class so they automagically get saved
* update shredder
* fixed isort
* Translated on translate.pretix.eu (Slovenian)
Currently translated at 19.9% (799 of 3996 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/
powered by weblate
* Translated on translate.pretix.eu (Slovenian)
Currently translated at 21.6% (865 of 3996 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/
powered by weblate
* Translated on translate.pretix.eu (Slovenian)
Currently translated at 23.8% (955 of 3996 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/
powered by weblate
* Translated on translate.pretix.eu (Slovenian)
Currently translated at 26.3% (1051 of 3996 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/
powered by weblate
* add validation to WaitingListSerializer
* update API-description
* fixed test_waitinglist.py
* Revert more of de597ba86
* Paginate list of gift cards
* Change texts on order confirmation page if no attachments are sent
* Update locales
* Added translation on translate.pretix.eu (Sinhala)
* Added translation on translate.pretix.eu (Sinhala)
* Translated on translate.pretix.eu (Sinhala)
Currently translated at 0.4% (18 of 4002 strings)
Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/si/
powered by weblate
* Fix initial value of phone number
* add colon to enumeration in description
Co-authored-by: Raphael Michel <michel@rami.io>
* update API-description with null-fields
* add name and phone to waitinglist
* add options whether to ask for name/phone in waitinglist
* changed rendermode to checkout and added required-css-class
* changed default to original behaviour to not ask name or phone at all
* add name and phone to list-view and export
* add name and phone to Meta-class so they automagically get saved
* update shredder
* fixed isort
* add validation to WaitingListSerializer
* update API-description
* fixed test_waitinglist.py
* Fix initial value of phone number
* update API-description with null-fields
* add colon to enumeration in description
Co-authored-by: Raphael Michel <michel@rami.io>
* fixed isort on migration
Co-authored-by: lapor-kris <kristijan.tkalec@posteo.si>
Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
Co-authored-by: helabasa <R45XvezA@pm.me>
Co-authored-by: Raphael Michel <michel@rami.io>
This commit is contained in:
committed by
GitHub
parent
8ca2fe7707
commit
8e00970f04
@@ -1,13 +1,54 @@
|
||||
from django import forms
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from phonenumber_field.formfields import PhoneNumberField
|
||||
from phonenumbers.data import _COUNTRY_CODE_TO_REGION_CODE
|
||||
|
||||
from pretix.base.forms.questions import (
|
||||
NamePartsFormField, WrappedPhoneNumberPrefixWidget, guess_country,
|
||||
)
|
||||
from pretix.base.i18n import get_babel_locale, language
|
||||
from pretix.base.models import WaitingListEntry
|
||||
|
||||
|
||||
class WaitingListForm(forms.ModelForm):
|
||||
required_css_class = 'required'
|
||||
|
||||
class Meta:
|
||||
model = WaitingListEntry
|
||||
fields = ('email',)
|
||||
fields = ('name_parts', 'email', 'phone')
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.event = kwargs.pop('event')
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
event = self.event
|
||||
|
||||
if event.settings.waiting_list_names_asked:
|
||||
self.fields['name_parts'] = NamePartsFormField(
|
||||
max_length=255,
|
||||
required=event.settings.waiting_list_names_required,
|
||||
scheme=event.settings.name_scheme,
|
||||
titles=event.settings.name_scheme_titles,
|
||||
label=_('Name'),
|
||||
)
|
||||
else:
|
||||
del self.fields['name_parts']
|
||||
|
||||
if event.settings.waiting_list_phones_asked:
|
||||
with language(get_babel_locale()):
|
||||
default_country = guess_country(self.event)
|
||||
for prefix, values in _COUNTRY_CODE_TO_REGION_CODE.items():
|
||||
if str(default_country) in values and not self.initial.get('phone'):
|
||||
# We now exploit an implementation detail in PhoneNumberPrefixWidget to allow us to pass just
|
||||
# a country code but no number as an initial value. It's a bit hacky, but should be stable for
|
||||
# the future.
|
||||
self.initial['phone'] = "+{}.".format(prefix)
|
||||
|
||||
self.fields['phone'] = PhoneNumberField(
|
||||
label=_("Phone number"),
|
||||
required=event.settings.waiting_list_phones_required,
|
||||
help_text=event.settings.waiting_list_phones_explanation_text,
|
||||
widget=WrappedPhoneNumberPrefixWidget()
|
||||
)
|
||||
else:
|
||||
del self.fields['phone']
|
||||
|
||||
Reference in New Issue
Block a user