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…
	
	Add table
		
		Reference in a new issue
	
	 Christopher Neugebauer
						Christopher Neugebauer