Adds ATTENDEE_PROFILE_MODEL as a thing that needs to be specified in settings.py.
Fixes #65
This commit is contained in:
parent
e2d027f71b
commit
6e4d2fab16
3 changed files with 18 additions and 6 deletions
|
@ -46,9 +46,13 @@ Because every conference is different, Registrasion lets you define your own att
|
||||||
.. autoclass :: AttendeeProfileBase
|
.. autoclass :: AttendeeProfileBase
|
||||||
:members: name_field, invoice_recipient
|
:members: name_field, invoice_recipient
|
||||||
|
|
||||||
Once you've subclassed ``AttendeeProfileBase``, you'll need to implement a form that lets attendees fill out their profile.
|
You specify how to find that model in your Django ``settings.py`` file::
|
||||||
|
|
||||||
You specify how to find that form in your Django ``settings.py`` file::
|
ATTENDEE_PROFILE_MODEL = "democon.models.AttendeeProfile"
|
||||||
|
|
||||||
|
When Registrasion asks the to edit their profile, a default form will be generated, showing all of the fields on the profile model.
|
||||||
|
|
||||||
|
If you want to customise the profile editing form, you need to specify the location of that form in your ``settings.py`` file as well.
|
||||||
|
|
||||||
ATTENDEE_PROFILE_FORM = "democon.forms.AttendeeProfileForm"
|
ATTENDEE_PROFILE_FORM = "democon.forms.AttendeeProfileForm"
|
||||||
|
|
||||||
|
|
|
@ -274,7 +274,6 @@ def discount_status(request, form):
|
||||||
|
|
||||||
discounts = form.cleaned_data["discount"]
|
discounts = form.cleaned_data["discount"]
|
||||||
|
|
||||||
|
|
||||||
items = commerce.DiscountItem.objects.filter(
|
items = commerce.DiscountItem.objects.filter(
|
||||||
Q(discount__in=discounts),
|
Q(discount__in=discounts),
|
||||||
).select_related("cart", "product", "product__category")
|
).select_related("cart", "product", "product__category")
|
||||||
|
|
|
@ -16,6 +16,7 @@ from registrasion.exceptions import CartValidationError
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
|
from django import forms as django_forms
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib.auth.decorators import user_passes_test
|
from django.contrib.auth.decorators import user_passes_test
|
||||||
|
@ -59,7 +60,7 @@ class GuidedRegistrationSection(_GuidedRegistrationSection):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def get_form(name):
|
def get_object(name):
|
||||||
dot = name.rindex(".")
|
dot = name.rindex(".")
|
||||||
mod_name, form_name = name[:dot], name[dot + 1:]
|
mod_name, form_name = name[:dot], name[dot + 1:]
|
||||||
__import__(mod_name)
|
__import__(mod_name)
|
||||||
|
@ -274,6 +275,16 @@ def edit_profile(request):
|
||||||
return render(request, "registrasion/profile_form.html", data)
|
return render(request, "registrasion/profile_form.html", data)
|
||||||
|
|
||||||
|
|
||||||
|
# Define the attendee profile form, or get a default.
|
||||||
|
try:
|
||||||
|
ProfileForm = get_object(settings.ATTENDEE_PROFILE_FORM)
|
||||||
|
except:
|
||||||
|
class ProfileForm(django_forms.ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = get_object(settings.ATTENDEE_PROFILE_MODEL)
|
||||||
|
exclude = ["attendee"]
|
||||||
|
|
||||||
|
|
||||||
def _handle_profile(request, prefix):
|
def _handle_profile(request, prefix):
|
||||||
''' Returns a profile form instance, and a boolean which is true if the
|
''' Returns a profile form instance, and a boolean which is true if the
|
||||||
form was handled. '''
|
form was handled. '''
|
||||||
|
@ -287,8 +298,6 @@ def _handle_profile(request, prefix):
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
profile = None
|
profile = None
|
||||||
|
|
||||||
ProfileForm = get_form(settings.ATTENDEE_PROFILE_FORM)
|
|
||||||
|
|
||||||
# Load a pre-entered name from the speaker's profile,
|
# Load a pre-entered name from the speaker's profile,
|
||||||
# if they have one.
|
# if they have one.
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in a new issue