diff --git a/registrasion/models.py b/registrasion/models.py index 1e7d04c273c5c0270f03f0b8ddedec608abc48ec..80e0141c5051d1735d885bdaaf0a4c9409009e49 100644 --- a/registrasion/models.py +++ b/registrasion/models.py @@ -47,6 +47,12 @@ class AttendeeProfileBase(models.Model): registration progess. ''' + @classmethod + def name_field(cls): + ''' This is used to pre-fill the attendee's name from the + speaker profile. If it's None, that functionality is disabled. ''' + return None + attendee = models.OneToOneField(Attendee, on_delete=models.CASCADE) diff --git a/registrasion/views.py b/registrasion/views.py index 9c109ae95c28d36b331ccee441195106b0b0774b..edd619ff485aa9642158f4545f49a4fb4908c21a 100644 --- a/registrasion/views.py +++ b/registrasion/views.py @@ -1,3 +1,4 @@ +import symposion.speakers import sys from registrasion import forms @@ -174,12 +175,25 @@ def handle_profile(request, prefix): except ObjectDoesNotExist: profile = None - # TODO: pull down the speaker's real name from the Speaker profile - ProfileForm = get_form(settings.ATTENDEE_PROFILE_FORM) + # Load a pre-entered name from the speaker's profile, + # if they have one. + try: + speaker_profile = request.user.speaker_profile + speaker_name = speaker_profile.name + except ObjectDoesNotExist: + speaker_name = None + + + name_field = ProfileForm.Meta.model.name_field() + initial = {} + if name_field is not None: + initial[name_field] = speaker_name + form = ProfileForm( request.POST or None, + initial=initial, instance=profile, prefix=prefix )